jenkins+ansible+gitlab自動化部署三劍客


1.  Gitlab搭建與流程使用

    1.  GitLab主要服務構成

        1.  nginx服務器

        2.  Gitlab-workhorse輕量級的反向代理服務器

        3.  Gitlab-shell用於處理git命令和修改公鑰列表

        4.  Logrotate日志文件管理工具

        5.  Postgresql數據庫

        6.  Redis服務器

    2.  Gitlab的工作流程

        1.  在Gitlab的web界面創建項目倉庫,在客戶端克隆該項目

        2.  創建項目分支(Gitlab服務器)

        3.  編寫代碼並提交至該分支(客戶端)

        4.  推送該項目分支至遠程Gitlab服務器(客戶端)

        5.  進行代碼檢查並提交至Master主分支合並申請

        6.  項目負責人審查代碼並確認合並申請

    3.  GitLab的安裝配置管理

        1.  關閉防火牆

        2.  關閉selinux

        3.  安裝Omnibus Gitlab-ce package

            1.  安裝Gitlab組件

                yum install curl policycoreutils openssh-server openssh-clients postfix -y

            2.  配置YUM倉庫

                curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

            3.  啟動postfix郵件服務

                centos7: systemctl start postfix && systemctl enable postfix

                centos6: /etc/init.d/postfix start

            4.  安裝Gitlab-ce社區版本

                yum install -y gitlab-ce

            5.  Omnibus Gitlab等相關配置初始化並完成安裝

                1.  證書創建與配置加載

                      

                2.  Nginx SSL代理服務配置

                3.  初始化Gitlab相關服務並完成安裝

                4.  gitlab設置

                5.  gitlab應用

                    Gitlab后台管理

                    開發視角的Gitlab

                      普通開發人員創建分支,申請給領導合並分支

                      領導合並分支

                    運維視角的Gitlab

                      用戶管理

                      權限管理                                        

2.  Ansible環境配置與Playbook編寫規范

    1.  安裝模式

        1.  yum包管理安裝

            yum -y install ansible

        2.  git源代碼安裝(推薦)

            git clone https://github.com/ansible/ansible.git

        3.  ansible2.5+python3.6安裝步驟

            1.  預先安裝python3.6

                wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

                tar xf Python-3.6.5.tar.xz

                cd python-3.6.5

                yum install gcc gcc-c-++ -y

                yum -y install zlib*

                ./configure --prefix=/usr/local --with-ssl --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

                make && make altinstall

            2.  安裝virtualenv

                pip install virtualenv

                pip --trusted-host pypi.python.org install virtualenv

                報錯解決方法:https://blog.csdn.net/bernieyangmh/article/details/77334667

            3.  創建ansible系統賬戶並安裝python3.6版本virtualenv實例

                useradd deploy && su - deploy

                virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env

                yum install -y git nss curl

            4.  git源代碼安裝ansible2.5

                cd /home/deploy/.py3-a2.5-env

                git clone https://github.com/ansible/ansible.git

            5.  加載python3.6 virtualenv環境

                source /home/deploy/.py3-a2.5-env/bin/activate

            6.  在virtualenv環境下,安裝ansible依賴包

                pip install paramiko PyYAML jinja2

                cd ansible

                git checkout stable-2.5

            7.  在python3.6虛擬環境下加載ansible2.5

                source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

            8.  驗證ansible2.5

                ansible --version

        4.  ansible playbooks入門和編寫規范

            1.  每次部署都要先加載virualenv環境和ansible2.5

                su - deploy

                source /home/deploy/.py3-a2.5-env/bin/activate

                source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

            2.  創建playbooks

                mkdir test_playbooks

                cd test_playbooks/

                mkdir inventory roles

                cd inventory/

                vi testenv

                  內容如下:

[testservers]
test.zhen.com

[testservers:vars]
server_name=test.zhen.com
user=root
output=/root/test.txt

                cd roles/

                mkdir -p testbox/tasks

                cd testbox/tasks

                vi main.yml

- name: Print server name and user to remote testbox
  shell: "echo 'Currently {{  user }} is logining {{ server_name }}' > {{ output }}"

                cd  /home/deploy/test_playbooks

                vi deploy.yml

- hosts: "testservers"
  gather_facts: true
  remote_user: root
  roles:
    - testbox

                tree一下/home/deploy/test_playbooks,創建的各級目錄如下:

                  

                在當前用戶deploy下,創建公鑰

                  ssh-keygen -t rsa

                  ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@test.zhen.com

                  ssh-copy-id -i /home/zhangshaohua1510/.ssh/id_rsa.pub '-p 11984 zhangshaohua1510@192.168.1.44'

                執行playbook

                  ansible-playbook -i inventory/testenv  ./deploy.yml

    2.  ansible playbooks常用模塊

        1.  File模塊

            在目標主機創建文件或目錄,並賦予其系統權限

        2.  Copy模塊

            實現ansible服務端到目標主機的文件傳送

        3.  Stat模塊

            獲取遠程文件狀態信息

        4.  Debug模塊

            打印語句到ansible執行輸出

        5.  Command/Shell模塊

            用來執行Linux目標主機命令行

        6.  Template模塊

            實現ansible服務端到目標主機的jinja2模板傳送

        7.  Packaging模塊

            調用目標主機系統包管理工具(yum,apt)進行安裝

        8.  Service模塊

            管理目標主機系統服務

3.  Jenkins環境構建與任務編寫

    1.  jenkins安裝配置管理

        1.  添加yum倉庫源

            wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

            rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

        2.  保證系統java版本為8.0或8.0以上

            yum install java -y

            java -version

        3.  關閉系統防火牆

        4.  關閉selinux

        5.  安裝jenkins

            yum install jenkins -y

        6.  創建jenkins系統用戶

            useradd deploy

        7.  更改jenkins啟動用戶與端口

            vi /etc/sysconfig/jenkins

            JENKINS_USER=deploy

            JENKINS_PORT=8081

            chown -R deploy.deploy /var/lib/jenkins

            chown -R deploy.deploy /var/log/jenkins

            chown -R deploy.deploy /var/cache/jenkins

        8.  啟動jenkins

            systemctl start jenkins

        9.  訪問http://172.168.1.191:8081

            初始化admin密碼

            復制/var/lib/jenkins/secrets/initialAdminPassword文件的內容

        10.  出現錯誤

            

            解決方法: 

修改/var/lib/jenkins/hudson.model.UpdateCenter.xml

該文件為jenkins下載插件的源地址,改地址默認jenkins默認為:https://updates.jenkins.io/update-center.json,就是因為https的問題,此處我們將其改為http即可,之后重啟jenkins服務即可。

其他國內備用地址(也可以選擇使用):

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

http://mirror.esuni.jp/jenkins/updates/update-center.json

重啟jenkins。

1)    修改/var/lib/jenkins/updates/default.json

jenkins在下載插件之前會先檢查網絡連接,其會讀取這個文件中的網址。默認是:

訪問谷歌,這就很坑了,服務器網絡又不能FQ,肯定監測失敗呀,不得不說jenkins的開發者腦子銹了,所以將圖下的google改為www.baidu.com即可,更改完重啟服務。

    2.  jenkins的job任務

        1.  Freestyle Job

            1.  需在頁面添加模塊配置項與參數完成配置

            2.  每個job僅能實現一個開發功能

            3.  無法將配置代碼化,不利於job配置遷移與版本控制

        2.  pipeline Job

            1.  所有模塊,參數配置都可以體現為一個pipeline腳本

            2.  可以定義多個stage構建一個管道工作集

            3.  所有配置代碼化,方便job配置遷移與版本控制

            4.  需要pipeline腳本語法基礎

        3.  job環境准備

        4.  freestyle job

            1.  

4.  Freestyle任務實現靜態網站部署交付

5.  Pipeline任務實現wordprees部署交付


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM