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