上一篇先說明了ansible.cfg的基本設定還有交換金鑰, 也就是說先定義那個人是這場戲的導演, Inventory就是定義角色的一個設定檔,也就是說有了導演之後,需要找那些人要配合演那個角色(例如:讓某台主機扮成Mariadb Server的角色),那一群人(主機)要扮演Application Server的角色,均可以自由調整
Inventory的寫法如以下的一些範例:
[Group_name]
192.168.1.30 --單一IP
servera.linux.rhce.taipei --單一Hostname(必需要先在/etc/hosts
serverb.linux.rhce.taipei --或是DNS伺服器上定義)
serverc.linux.rhce.taipei
[other_Group_name]
db[1:9].linux.rhec.taipei --可以是一個範圍的Hostname,例如db1~9.linux.rhce.taipei
10.1.[0:255].[0:255] --可以是一個網段意思就是10.1.0.0/16的意思
192.168.1.[0:255] --就是192.168.1.0/24的意思
server[a:f].linux.rhce.taipei --同第一個是一個範圍的Hostname意思是可以是數字or文字
[dbserver]
db[20:30].linux.rhce.taipei
[apserver]
[services:children] --意思是將上面的dbserver及apserver合併為一個叫services的群組
dbserver --這個群組包含dbserver及apserver
apserver
*Inventory的注意事項
1.在所有Ansible的定義或yaml中,變數或是名稱,如果必需要加上“空格”時,則要用"_"底線當成空格
例如:
取名為db server時中間不能有空格
而是要設定為"db_server"
2.中括弧中的群組名稱不能與“主機名稱(hostname)"相同,當然如果寫了DomainName名稱解析要正確
3.在Playbook中,也就是yaml檔如果要“排除”某個群組中的主機加上單引號及”!“
- name: Deployment "other_Group_name" but not serverc.linux.rhce.taipei and serverf.linux.rhce.taipei
hosts: ' ! serverc.linux.rhce.taipei, serverf.linux.rhce.taipei '
搜尋Inventroy中的Hosts利用ansible指令(拿上面的範例來說好了),其實可以用vi
列出這個inventory中的所有主機然後配合ansible.cfg設定檔(-v參數)
#anisble -i inventory all --list-hosts -v
列出這個inventory中[other_Group_name]的所有主機
#ansible -i inventory other_Group_name --list-hosts -v
列出這個inventory中的192.168.1.250這台主機
#ansible -i inventory 192.168.1.250 --list-hosts -v
列出這個inventory中的有關linux.rhce.taipei名稱的主機,利用萬用字元" * "
#ansible -i inventroy *.linux.rhce.taipei --list-hosts -v
參考資料 >
還是以前讀書的筆記
沒有留言:
張貼留言