一、ansible介紹
專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)負(fù)責(zé)任的成都網(wǎng)站制作公司!
不需要安裝客戶端,通過sshd去通信
基于模塊工作,模塊可以由任何語言開發(fā)
不僅支持命令行使用模塊,也支持編寫yaml格式的playbook,易于編寫和閱讀。
安裝十分簡單,centos上可直接yum安裝
有提供UI(web界面)www.ansible.com/tower,收費(fèi)的。
官方文檔 http://docs.ansible.com/ansible/latest/index.html
ansible已經(jīng)被redhat公司收購,它在github上是一個(gè)非常受歡迎的開源軟件,github地址https://github.com/ansible/ansible
一本不錯(cuò)的入門電子書 https://ansible-book.gitbooks.io/ansible-first-book/
二、ansible安裝
準(zhǔn)備兩臺(tái)機(jī)器,前面我們做實(shí)驗(yàn)的兩臺(tái)機(jī)器fuxi01,yw02
只需要在fuxi01上安裝ansible
#?yum?list?|grep?ansible?可以看到自帶源里就有2.8版本的ansible #?yum?install?-y?ansible?ansible-doc
fuxi01上生成密鑰對(duì) ssh-keygen -t rsa
[root@fuxi01?~]#?ls?/root/.ssh/?????看是否有id_rsa和id_rsa.pub,有就不用再生成,指定類型為rsa的類型。 authorized_keys??id_rsa??id_rsa.pub??known_hosts
把公鑰id_rsa.pub放到y(tǒng)w02和本機(jī)上,設(shè)置密鑰認(rèn)證
[root@yw02?~]#?vi?.ssh/authorized_keys [root@fuxi01?~]#?vi?.ssh/authorized_keys
回到第一臺(tái)機(jī)器試試看能不能連接了
[root@fuxi01?~]#?ssh?yw02 [root@fuxi01?~]#?ssh?127.0.0.1
配置/etc/ansible/hosts,目的是為了配置主機(jī)組的。
管理機(jī)器可以分成多個(gè)組,每一組里都有若干個(gè)機(jī)器,后續(xù)就可以針對(duì)主機(jī)組進(jìn)行操作。
//增加,可以寫主機(jī)名,也可以寫IP地址。主機(jī)名要想被識(shí)別,需要先在/etc/hosts中配置。
#?vi?/etc/ansible/hosts [testhost] 127.0.0.1 yw02
說明: testhost為主機(jī)組名字,自定義的。 下面兩個(gè)ip為組內(nèi)的機(jī)器IP。
三、ansible遠(yuǎn)程執(zhí)行命令
#?ansible??testhost?-m?command?-a?'w'
這樣就可以批量執(zhí)行命令了。這里的testhost 為主機(jī)組名,-m指定模塊(module),-a后面指定命令。也可以直接寫一個(gè)ip,針對(duì)某一臺(tái)機(jī)器來執(zhí)行命令。
#?ansible?127.0.0.1?-m??command?-a?'hostname' #?ansible?yw02?-m??command?-a?'hostname'
當(dāng)出現(xiàn)此錯(cuò)誤:?"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
解決方法:?yum install -y libselinux-python
還有一個(gè)模塊shell同樣也可以實(shí)現(xiàn)
#?ansible??testhost?-m?shell?-a?'w'
模塊:
command:執(zhí)行命令
shell:執(zhí)行腳本
四、ansible拷貝文件和目錄
#?ansible?yw02?-m?copy?-a?"src=/etc/ansible??dest=/tmp/ansible_test?owner=root?group=root?mode=0755"
copy:拷貝模塊,可以用來拷貝文件或目錄。
src:指定來源文件或目錄
dest:指定目標(biāo)文件或目錄
owner:指定目標(biāo)的屬主
group:指定目標(biāo)的屬組
mode:指定權(quán)限
注意:源目錄會(huì)放到目標(biāo)目錄下面去,如果目標(biāo)指定的目錄不存在,它會(huì)自動(dòng)創(chuàng)建。如果拷貝的是文件,dest指定的名字和源如果不同,并且它不是已經(jīng)存在的目錄,相當(dāng)于拷貝過去后又重命名。但相反,如果desc是目標(biāo)機(jī)器上已經(jīng)存在的目錄,則會(huì)直接把文件拷貝到該目錄下面。
#?ansible?testhost?-m?copy?-a?"src=/etc/passwd?dest=/tmp/123"
這里的/tmp/123和源機(jī)器上的/etc/passwd是一致的,但如果目標(biāo)機(jī)器上已經(jīng)有/tmp/123目錄,則會(huì)在/tmp/123目錄下面建立passwd文件。
五、ansible遠(yuǎn)程執(zhí)行腳本
首先創(chuàng)建一個(gè)shell腳本
#?vim??/tmp/1.sh??//加入內(nèi)容 #!/bin/bash echo?`date`?>?/tmp/ansible_test.txt
然后把該腳本分發(fā)到各個(gè)機(jī)器上
#?ansible?testhost?-m?copy?-a?"src=/tmp/1.sh?dest=/tmp/test.sh?mode=0755"
最后是批量執(zhí)行該shell腳本
#?ansible?testhost?-m?shell?-a?"/tmp/test.sh"
shell模塊,還支持遠(yuǎn)程執(zhí)行命令并且?guī)Ч艿?。command模塊是不支持的。
#?ansible?testhost?-m?shell?-a?"cat?/etc/passwd|wc?-l?"