天天看點

Jenkins + Ansible + Gitlab之ansible篇

注:學習本篇博文之前最好将Jenkins + Ansible + Gitlab 之gitlab學習最少一遍

注:關于Ansible的詳細内容請看我的另一篇博文自動化運維之ansible

Ansible介紹

什麼是Ansible?

Ansible是一個開源部署工具

開發語言:Python

特點:SSH協定通訊,全平台,無需編譯,子產品化部署管理

作用:推送Playbook進行遠端節點快速部署

Ansible與Chef,Saltstack的不同

Chef

       Ruby語言編寫,C/S架構,配置需要Git依賴

       Recipe腳本編寫規範,需要程式設計經驗

Saltstack

      Python語言編寫,C/S架構,子產品化配置管理

      YAML腳本編寫規範,适合大規模叢集部署

Ansible

      Python語言編寫,無Client,子產品化配置管理

      Playbook腳本編寫規範,易于上手,适合中小規模快速部署

Ansible的優勢和應用場景

輕量級無用戶端(Agentless)

開源免費,學習成本低,快速上手

使用Playbook作為核心配置架構,統一的腳本格式批量化部署

完善的子產品化擴充,支援目前主流的開發場景

強大的穩定性和相容性

活躍的官方社群問題讨論,友善Trubleshooting與DEBUG問題

Ansible配合virtualenv安裝配置

Jenkins + Ansible + Gitlab之ansible篇

Ansible的兩種安裝模式(Centos7)

1.Yum包管理安裝

       yum  -y   install   ansible

2.Git源代碼安裝【推薦】 

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

Ansible 2.5 + Python3.6 安裝步驟【Centos7】

1.預先安裝Python3.6版本

2.安裝virtualenv

      pip install virtualenv

3.建立Ansible賬戶并安裝python3.6版本virtualenv執行個體

     useradd deploy && su - deploy

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

4. Git源代碼安裝ansible2.5

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

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

     cd ansible && git checkout stable-2.5

5. 加載python3.6 virtualenv 環境

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

6.安裝ansible依賴包

    pip install paramiko PyYAML jinja2

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

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

8.驗證ansible2.5

    ansible --version

示範

前提工作

Jenkins + Ansible + Gitlab之ansible篇

安裝Python3.6和Virtualenv

Jenkins + Ansible + Gitlab之ansible篇

建立ansible系統賬戶并在該系統賬戶下安裝python3.6版本的Virtualenv執行個體

Jenkins + Ansible + Gitlab之ansible篇

安裝git

Jenkins + Ansible + Gitlab之ansible篇

出現的一個錯誤

Jenkins + Ansible + Gitlab之ansible篇

加載vintualenv環境

Jenkins + Ansible + Gitlab之ansible篇

完成

Jenkins + Ansible + Gitlab之ansible篇

Ansible playbooks入門和編寫規範

Playbooks架構與格式

Test Playbooks

Jenkins + Ansible + Gitlab之ansible篇

詳細目錄testenv

Jenkins + Ansible + Gitlab之ansible篇

主任務檔案main.yml

Jenkins + Ansible + Gitlab之ansible篇

任務入口檔案deploy.yml

Jenkins + Ansible + Gitlab之ansible篇

Playbooks編寫規範

Jenkins + Ansible + Gitlab之ansible篇

示範

寫劇本

Jenkins + Ansible + Gitlab之ansible篇

免密鑰登陸

Jenkins + Ansible + Gitlab之ansible篇

完成并驗證

Jenkins + Ansible + Gitlab之ansible篇

Ansible Playbboks常用子產品

Ansible Playbook 常用子產品介紹

File子產品

     在目标主機建立檔案或目錄,并賦予其系統權限

Jenkins + Ansible + Gitlab之ansible篇

Copy子產品

     實作Ansible伺服器到目标主機的檔案傳送

Jenkins + Ansible + Gitlab之ansible篇

Stat子產品

    擷取遠端檔案狀态資訊

Jenkins + Ansible + Gitlab之ansible篇

Debug子產品

    列印語句到Ansible執行輸出

Jenkins + Ansible + Gitlab之ansible篇

Command/Shell子產品

    用來執行Linux目錄主機指令行

Jenkins + Ansible + Gitlab之ansible篇

Template子產品

    實作Ansible服務端到目标主機的jinja2子產品傳送

Jenkins + Ansible + Gitlab之ansible篇

Packaging子產品

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

Jenkins + Ansible + Gitlab之ansible篇

Service子產品

     管理目标主機系統服務

Jenkins + Ansible + Gitlab之ansible篇

Ansible Playbooks常用子產品應用

Jenkins + Ansible + Gitlab之ansible篇

示範

目标主機預配置工作

Jenkins + Ansible + Gitlab之ansible篇
Jenkins + Ansible + Gitlab之ansible篇
Jenkins + Ansible + Gitlab之ansible篇
Jenkins + Ansible + Gitlab之ansible篇
Jenkins + Ansible + Gitlab之ansible篇

注:如需筆記原稿請評論留言,我私發

注:如需視訊資源請評論留言,我免費私發

繼續閱讀