1. 程式人生 > >Ansible自動化運維安裝

Ansible自動化運維安裝

主配置文件 化運維 term 雲計 ... sha 清單 tom 集合

當前,部署自動化運維已經成為安全、高效完成工作的必要技能,主要有Puppet、SaltStack、ansible,本篇博文將重點研究自動化運維工具Ansible安裝及配置文件解析。

一、Ansible簡介

1、什麽是ansible?

Ansible基於python開發,集合了眾多優秀運維工具的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。默認通過SSH協議進行遠程控制,無需客戶端代理軟件。

2、ansible核心組件

ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:
技術分享圖片

  • ansible core 核心引擎;
  • host inventory(主機清單):定義ansible所管理主機,支持自定義動態主機清單和其他配置文件位置。
  • connection plugins(連接插件):負責被管理主機實現通信。
  • playbooks(劇本):集中定義ansible任務的配置文件。
  • core modules(核心模塊):ansible自帶模塊,分發資源到被管理主機。
  • custom modules(自定義模塊):完成功能模塊的補充。

    3、ansible特點

    (1)部署簡單,只需在主控端部署 Ansible 環境,被控端無需做任何操作。
    (2)默認使用 SSH協議對設備進行管理。
    (3)主從集中化管理。
    (4)配置簡單、功能強大、擴展性強。

    (5)支持 API 及自定義模塊,可通過 Python 輕松擴展。
    (6)通過 Playbooks 來定制強大的配置、狀態管理。
    (7)對雲計算平臺、大數據都有很好的支持。
    (8)提供一個功能強大、操作性強的 Web 管理界面和 REST API 接口 ---- AWX 平臺。

    二、部署Ansible服務

    案例說明:

    Ansible自動化運維由控制主機與被管理主機組成,由於基於SSH通信,所以控制主機只需安裝ansible,被管理主機也不需安裝和運行任何代理程序。

    案例環境:

角色 操作系統 IP地址 組名
控制主機 Centos7 192.168.37.128
被管理主機 Centos7 192.168.37.130 webserver
被管理主機 Centos7 192.168.37.131 mysql

部署安裝

1、在控制主機上安裝ansible

yum install -y epel-release #安裝epel擴展源
yum install -y ansible -y #安裝ansible

2、安裝後查看ansible配置文件

ansible --version          #查看版本
cat /etc/ansible
    ansible.cfg                #主配置文件
    hosts                         #主倉庫、用於存儲需要管理的遠程主機
    roles                          #角色

技術分享圖片

3、配置主機清單

vim  /etc/ansible/hosts    
【webserver】
192.168.37.130
【mysql】
192.168.37.131

技術分享圖片
4、配置密鑰對進行驗證,將公鑰推給被管理主機

ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id [email protected]

技術分享圖片
技術分享圖片
5、設置SSH免密碼登錄

ssh-agent bash
ssh-add

技術分享圖片
技術分享圖片

三、Ansible配置文件詳解

主配置文件ansible.cfg

[defaults]

#some basic default values...
inventory      = /etc/ansible/hosts                                      # 主機清單inventory文件的位置 
library        = /usr/share/my_modules/                             #指向存放ansible模塊的目錄
module_utils   = /usr/share/my_module_utils/                      
remote_tmp     = ~/.ansible/tmp                                     #Ansible 通過遠程傳輸模塊到遠程主機,然後遠程執行
local_tmp      = ~/.ansible/tmp
plugin_filters_cfg = /etc/ansible/plugin_filters.yml       #過濾器插件
forks          = 5                                                                  #默認ansible最多有5個進程同時工作
poll_interval  = 15                                                           #多少時間回查一下任務狀態
sudo_user      = root                                                        # 設置默認執行命令的用戶
ask_sudo_pass = True                                                  # 用來控制Ansible playbook 在執行sudo之前是否詢問sudo密碼
ask_pass      = True                                                        #控制Ansible playbook 是否會自動默認彈出密碼
transport      = smart                                                        #通信機制.默認 值為’smart’
remote_port    = 22                                                         # 指定連接被管節點的管理端口,默認是22
module_lang    = C                                                         #模塊和系統之間通信的計算機語言,默認是C語言
module_set_locale = False                                               

主機清單hosts

#[webservers]
#alpha.example.org
#beta.example.org
#192.168.1.100
#192.168.1.110

#[dbservers]
#db01.intranet.mydomain.net
#db02.intranet.mydomain.net
#10.25.1.56
#10.25.1.57
  • 方括號[]中是組名,用於對系統進行分類,便於對不同系統進行個別的管理。
  • 一個系統可以屬於不同的組,比如一臺服務器可以同時屬於 webserver組 和 dbserver組.這時屬於兩個組的變量都可以為這臺主機所用。
  • 如果有主機的SSH端口不是標準的22端口,可在主機名之後加上端口號,用冒號分隔。SSH 配置文件中列出的端口號不會在 paramiko 連接中使用,會在 openssh 連接中使用。

Ansible自動化運維安裝