目錄node
模塊化:python
用戶經過ansible去管理各個主機,那麼ansible就是咱們所說的主控端,後面的Host爲被控端。linux
在控制主機時,ansible是如何知道哪些主機是被本身控制的呢?web
這就須要一個Host Inventory(主機清單),用於記錄ansible能夠控制網絡中的哪些主機。另外,要配置和管理這些主機,能夠採用兩種方式,一種是單一的命令實現,另一種也可使用palybook實現。單一的命令模式是採用不一樣的模塊進行管理,一個模塊相似於一些管理的命令,如top,ls,ping等等,適用於臨時性的操做任務。若是須要執行一些例行性或常常性的操做,則須要採用playbook的方式,playbook相似於一個腳本,將多個模塊按必定的邏輯關係進行組合,而後執行。ansible還支持一些插件,如郵件、日誌等,在和遠程主機通訊時,也會採用相似的鏈接插件,這裏使用則是SSH協議的插件進行通訊。編程
ansible官網json
主機名稱 | IP地址 | 角色 | 系統版本 |
---|---|---|---|
ansible | 192.168.56.11 | 主控端 | Centos 7.x |
node01 | 192.168.56.12 | 被控端 | Centos 7.x |
node02 | 192.168.56.13 | 被控端 | Centos 7.x |
[root@ansible ~]# yum install -y ansible [root@ansible ~]# ansible --version ansible 2.7.10 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, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
/etc/ansible/ansible.cfg #主配置文件,配置ansible工做特性 /etc/ansible/hosts #主機清單 /etc/ansible/roles/ #存放角色的目錄 /usr/bin/ansible #主程序,臨時命令執行工具 /usr/bin/ansible-doc #查看配置文檔,模塊功能查看工具 /usr/bin/ansible-galaxy #下載/上傳優秀代碼或Roles模塊的官網平臺 /usr/bin/ansible-playbook #定製自動化任務,編排劇本工具 /usr/bin/ansible-pull #遠程執行命令的工具 /usr/bin/ansible-vault #文件加密工具 /usr/bin/ansible-console #基於Console界面與用戶交互的執行工具
[root@ansible ~]# ansible --help #查看ansible使用幫助 Usage: ansible <host-pattern> [options] #使用方法,ansible+主機+選項 [root@ansible ~]# ansible 192.168.56.12 -m ping #檢測主機的存活,返回pong則是正常,這裏使用了-m參數,採用ping模塊進行檢測目標主機的存活性 192.168.56.12 | SUCCESS => { "changed": false, "ping": "pong" } [root@ansible ~]# ansible -m ping 192.168.56.13 #鏈接另外1臺被控端,提示沒法匹配 [WARNING]: Could not match supplied host pattern, ignoring: 192.168.56.13 [WARNING]: No hosts matched, nothing to do #這裏就須要在主機清單中增長被控端主機,須要注意的是,主機清單也支持分組模式,這裏將三臺主機分爲web組 [root@ansible ~]# vim /etc/ansible/hosts [web] 192.168.56.11 192.168.56.12 192.168.56.13 [root@ansible ~]# ansible web -m ping #經過對一組服務器進行存活性檢測 192.168.56.13 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.56.12 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.56.11 | SUCCESS => { "changed": false, "ping": "pong" } #PS:這裏須要注意的是,遠程鏈接採用的不是單純的ping命令,若是沒有作ssh密鑰認證,是會出現沒法ping通的錯誤,此時能夠採用-k參數,默認執行使用root用戶進行鏈接遠程主機。 [root@ansible ~]# ansible 192.168.56.13 -m ping -k SSH password: 192.168.56.13 | SUCCESS => { "changed": false, "ping": "pong"
在使用ansible時,咱們會發現ssh連接較慢的現象,這裏則須要修改sshd服務的兩個參數來解決該問題:vim
UseDNS no GSSAPIAuthentication no
配置文件大部分都是註釋,只須要保持默認配置便可。這裏須要開啓日誌記錄以及關閉遠程首次鏈接的ssh認證檢查。windows
[root@ansible ~]# vim /etc/ansible/ansible.cfg [defaults] 默認配置 # some basic default values... #inventory = /etc/ansible/hosts #主機列表配置文件 #library = /usr/share/my_modules/ #庫文件存放目錄 #module_utils = /usr/share/my_module_utils/ #模塊存放目錄 #remote_tmp = ~/.ansible/tmp #臨時py命令文件存放在遠程主機目錄 #local_tmp = ~/.ansible/tmp #本機的臨時命令執行目錄 #forks = 5 #默認併發數 #poll_interval = 15 #時間間隔 #sudo_user = root #默認sudo用戶 #ask_sudo_pass = True #每次執行ansible命令是否詢問sudo用戶密碼 #ask_pass = True #每次執行ansible命令是否詢問ssh密碼 #transport = smart #傳輸方式 #remote_port = 22 #遠程端口號 #module_lang = C #module_set_locale = False ... ... host_key_checking = False #檢查對應服務器的host_key,建議取消註釋. log_path=/var/log/ansible.log #記錄日誌及位置,默認不記錄 建議取消註釋