Ansible自動化運維安裝
阿新 • • 發佈:2018-10-20
主配置文件 化運維 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)配置簡單、功能強大、擴展性強。
(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自動化運維安裝