初步了解Ansible
ansible基于Python開發(fā),,集合了眾多運維工具的優(yōu)點,實現(xiàn)了批量運行命令,部署程序,配置系統(tǒng)等功能。默認通過SSH協(xié)議進行遠程命令執(zhí)行或下發(fā)配置,無需部署任何客戶端代理軟件,從而使得自動化環(huán)境部署變得更加簡單??赏瑫r支持多臺主機并行管理,使得管理主機更加便捷。
Ansible核心組件
ansible可以看做是一種基于模塊進行工作的框架結(jié)構(gòu),批量部署能力就是有ansible所運行的模塊實現(xiàn)的。簡而言之a(chǎn)nsible是基于“模塊”完成各種“任務(wù)”的。
結(jié)構(gòu)圖如下所示
ansible組件由如下六部分組成
Ansible core 核心引擎
Host inventory 主機清單:用來定義Ansible所管理的主機,默認是在Ansible的hosts配置文件中定義被管理的主機,同時也支持自定義動態(tài)主機清單和指定其他配置文件的位置
Connection plugins 連接插件:負責和被管理主機實現(xiàn)通信。除支持使用SSH連接被管理主機外,ansible還支持其它的連接方式,所以需要有連接插件將各個主機用連接插件連接到ansible
Playbooks(yam1,jinja2)劇本:用來集中定義ansible的任務(wù)配置文件,即將多個任務(wù)定義在一個劇本中由ansible自動執(zhí)行,可以由控制主機針對多臺被管理主機同時運行多個任務(wù)
Core modules 核心模塊:是ansible自帶的模塊,使用這些模塊將資源分發(fā)到被管理主機,使其執(zhí)行特定任務(wù)或匹配特定狀態(tài)
Custom modules 自定義模塊:用于完成模塊功能的補充,可借助相關(guān)插件完成記錄日志,發(fā)送郵件等功能
安裝部署ansible服務(wù)
ansible自動化運維環(huán)境由控制主機與被管理主機組成,由于ansible是基于SSH協(xié)議進行通信的,所以控制主機安裝ansible軟件后不需要重啟或運行任何程序,被管理主機也不需要安裝或運行任何代理程序。
案例環(huán)境如下:
1 安裝ansible
可以使用源碼進行安裝,也可以使用操作系統(tǒng)軟件包工具進行安裝。這里我使用的是CentOS7操作系統(tǒng),通過yum方式安裝ansible,需要依賴第三方的epel源。
yum install epel-release -y
下載好yum源之后,就可以直接使用yum命令安裝ansible
yum install ansible -y
安裝好之后可以查看ansible軟件的版本信息。
ansible –version
ansible 2.7.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
ansible主要相關(guān)配置文件在/etc/ansible目錄下
cd /etc/ansible/
總用量 24
-rw-r–r–. 1 root root 20269 10月 9 09:34 ansible.cfg #配置文件
-rw-r–r–. 1 root root 1016 10月 9 09:34 hosts #管控主機文件
drwxr-xr-x. 2 root root 6 10月 9 09:34 roles
2 配置主機清單
ansible通過讀取默認主機清單/etc/ansible/hosts文件,修改主機與組配置后,可同時連接到多個被管理主機上執(zhí)行任務(wù)。具體配置如下:
vim hosts
[web] #被管理主機分類
192.168.199.130
[mysql] #被管理主機分類
192.168.199.131
3 設(shè)置SSH無密碼登錄
為了避免ansible下發(fā)指令時輸入被管理主機的密碼,可以通過證書簽名達到SSH無密碼登錄的效果,使用ssh-keygen產(chǎn)生一對密匙,使用ssh-copy-id來下發(fā)生成的公匙
關(guān)閉三臺服務(wù)器的防火墻
systemctl stop firewalld.service
setenforce 0
配置秘鑰驗證
ssh-keygen -t rsa
ssh-copy-id root@192.168.199.130
ssh-copy-id root@192.168.199.131
到此,ansible的環(huán)境就部署完成了。