您好,登錄后才能下訂單哦!
一、ansible介紹
不需要安裝客戶端,通過sshd去通信
基于模塊工作,模塊可以由任何語言開發
不僅支持命令行使用模塊,也支持編寫yaml格式的playbook,易于編寫和閱讀。
安裝十分簡單,centos上可直接yum安裝
有提供UI(web界面)www.ansible.com/tower,收費的。
官方文檔 http://docs.ansible.com/ansible/latest/index.html
ansible已經被redhat公司收購,它在github上是一個非常受歡迎的開源軟件,github地址https://github.com/ansible/ansible
一本不錯的入門電子書 https://ansible-book.gitbooks.io/ansible-first-book/
二、ansible安裝
準備兩臺機器,前面我們做實驗的兩臺機器fuxi01,yw02
只需要在fuxi01上安裝ansible
#?yum?list?|grep?ansible?可以看到自帶源里就有2.8版本的ansible #?yum?install?-y?ansible?ansible-doc
fuxi01上生成密鑰對 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放到yw02和本機上,設置密鑰認證
[root@yw02?~]#?vi?.ssh/authorized_keys [root@fuxi01?~]#?vi?.ssh/authorized_keys
回到第一臺機器試試看能不能連接了
[root@fuxi01?~]#?ssh?yw02 [root@fuxi01?~]#?ssh?127.0.0.1
配置/etc/ansible/hosts,目的是為了配置主機組的。
管理機器可以分成多個組,每一組里都有若干個機器,后續就可以針對主機組進行操作。
//增加,可以寫主機名,也可以寫IP地址。主機名要想被識別,需要先在/etc/hosts中配置。
#?vi?/etc/ansible/hosts [testhost] 127.0.0.1 yw02
說明: testhost為主機組名字,自定義的。 下面兩個ip為組內的機器IP。
三、ansible遠程執行命令
#?ansible??testhost?-m?command?-a?'w'
這樣就可以批量執行命令了。這里的testhost 為主機組名,-m指定模塊(module),-a后面指定命令。也可以直接寫一個ip,針對某一臺機器來執行命令。
#?ansible?127.0.0.1?-m??command?-a?'hostname' #?ansible?yw02?-m??command?-a?'hostname'
當出現此錯誤:?"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
解決方法:?yum install -y libselinux-python
還有一個模塊shell同樣也可以實現
#?ansible??testhost?-m?shell?-a?'w'
模塊:
command:執行命令
shell:執行腳本
四、ansible拷貝文件和目錄
#?ansible?yw02?-m?copy?-a?"src=/etc/ansible??dest=/tmp/ansible_test?owner=root?group=root?mode=0755"
copy:拷貝模塊,可以用來拷貝文件或目錄。
src:指定來源文件或目錄
dest:指定目標文件或目錄
owner:指定目標的屬主
group:指定目標的屬組
mode:指定權限
注意:源目錄會放到目標目錄下面去,如果目標指定的目錄不存在,它會自動創建。如果拷貝的是文件,dest指定的名字和源如果不同,并且它不是已經存在的目錄,相當于拷貝過去后又重命名。但相反,如果desc是目標機器上已經存在的目錄,則會直接把文件拷貝到該目錄下面。
#?ansible?testhost?-m?copy?-a?"src=/etc/passwd?dest=/tmp/123"
這里的/tmp/123和源機器上的/etc/passwd是一致的,但如果目標機器上已經有/tmp/123目錄,則會在/tmp/123目錄下面建立passwd文件。
五、ansible遠程執行腳本
首先創建一個shell腳本
#?vim??/tmp/1.sh??//加入內容 #!/bin/bash echo?`date`?>?/tmp/ansible_test.txt
然后把該腳本分發到各個機器上
#?ansible?testhost?-m?copy?-a?"src=/tmp/1.sh?dest=/tmp/test.sh?mode=0755"
最后是批量執行該shell腳本
#?ansible?testhost?-m?shell?-a?"/tmp/test.sh"
shell模塊,還支持遠程執行命令并且帶管道。command模塊是不支持的。
#?ansible?testhost?-m?shell?-a?"cat?/etc/passwd|wc?-l?"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。