2021年2月22日 星期一

Ansible筆記(二)-Inventory

     上一篇先說明了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


參考資料 >

    還是以前讀書的筆記

沒有留言:

張貼留言