天天看點

Ansible自動化運維工具之主機管理與自定義配置檔案(2)

Ansible自動化安裝入門,看這一篇就夠了

Ansible有很多配置參數,以下是⼏個預設的配置參數:

 <code>inventory</code>:該參數表⽰inventory⽂件的位置,資源清單(inventory)就是Ansible需要連接配接管理的⼀些主機清單。

 <code>library</code> :Ansible的所有操作都使⽤子產品來執⾏實作,這個library參數就是指向存放Ansible子產品的⽬錄。

 <code>forks</code>:設定預設情況下Ansible最多能有多少個程序同時⼯作,預設5個程序并⾏處理。具體需要設定多少個,可

以根據控制端性能和被管理節點的數量來确定。

 <code>sudo_user</code>:設定預設執⾏指令的⽤戶,也可以在playbook中重新設定這個參數。

 <code>remote_port</code>:指定連接配接被管理節點的管理端⼝,預設是22,除⾮設定了特殊的SSH端⼝,否則不需要修改此參數。

 <code>host_key_checking</code> :設定是否檢查SSH主機的密鑰。可以設定為True或False。即ssh的主機再次驗證。如果為False,則不需要輸入yes;如果為True,則等待輸入yes。

 <code>timeout</code>:設定SSH連接配接的逾時間隔,機關是秒。

 <code>log_path</code>:Ansible預設不記錄⽇志,如果想把Ansible系統的輸出記錄到⽇志⽂件中,需要設定log_path。需要注意,子產品将會調⽤被管節點的®syslog來記錄,執⾏Ansible的⽤戶需要有寫⼊⽇志的權限。

 <code>注意:可以指定多個inventory配置⽂件,隻需在ansible的配置⽂件如/etc/ansible/ansible.cf g中将inventory指令設定為對應的⽂件或⽬錄即可,如果是⽬錄,那麼此⽬錄下的所有⽂件都是inventory⽂件。</code>

<code>inventory</code>:指定的配置檔案,寫入遠端主機的位址。定義被托管主機位址配置檔案路徑名。

 格式:

    - # 表示注釋

        [組名稱]

        主機名稱或IP位址,其他參數

Ansible自動化運維工具之主機管理與自定義配置檔案(2)

 由于之前我們在所有主機上都配置好了/etc/hosts,是以以上配置也可以直接寫成:

Ansible自動化運維工具之主機管理與自定義配置檔案(2)

列出所有主機組的主機 :<code>ansible all --list-hosts</code>

列出xx主機組的主機 :<code>ansible ‘主機組名’ --list-hosts</code>

批量檢測主機并使用互動式登入密碼:<code>ansible all -m ping -k</code>

 1.建立自定義檔案夾myansible

 2.建立自定義配置檔案ansible.cfg

 3.指定inventory配置自定義的hosts⽂件

 <code>注意:在ansible.cfg配置檔案中指定inventory的hosts檔案時,可以指定為相對路徑(目前路徑下),也可以指定為絕對路徑,因為在使用自定義的ansible配置檔案運作ansible時,都隻能在自定義的檔案夾中使用才可以識别。</code>

4.自定義配置檔案測試:

 4.1主機組k8s

 可以看到在我們退出自定義配置檔案夾myansible後,再使用ansible指令ping我們myhosts檔案中的k8s主機組時,就無法正常識别了。

 當然,在我們自定義的ansible.cfg配置檔案夾/root/myansible中執行ping主機組k8s_node(ansible安裝完預設的inventory配置⽂件/etc/ansible/hosts中的主機組)時,肯定也是無法識别的。

4.2主機組all

 <code>注意:在有自定義的配置檔案時使用ansible操作主機組all時有兩種情況,一是在自定義的配置檔案夾中使用ansible控制主機組all時,就預設讀取的是自定義配置檔案夾中ansible.cfg定義的inventory的hosts檔案,二是在其他路徑下使用ansible控制主機組all時,則會預設讀取ansible預設配置檔案ansible.cfg中inventory的hosts檔案。</code>

- 驗證 -:

 1.先修改ansible預設的/etc/ansible/hosts配置檔案

 2.退出自定義配置檔案夾/root/myansible時執行ping所有主機組all

 從上面傳回的結果我們可以看出,當我們在退出自定義配置檔案夾/root/myansible後執行ping所有主機組all時,ansible預設是讀取的ansible.cfg配置檔案中指定inventory的hosts檔案/etc/ansible/hosts中的配置。

 3.進入自定義配置檔案夾/root/myansible時執行ping所有主機組all

 可以看到在進入自定義的配置檔案夾/root/myansible中使用ansible的ping子產品操作所有主機組all時,就會預設讀取自定義配置檔案夾中ansible.cfg定義的inventory的hosts檔案。

最終解決方案:

 <code>使用 -i 指定使用的配置檔案</code>

 可以看到在我們使用了<code>-i</code>選項來指定這一次ansible控制時使用的hosts配置檔案時,無論我們目前在哪個檔案夾中,都不影響此次ansible正确讀取指定的配置檔案。

 有興趣的小夥伴可以關注我的微信公衆号,上面會分享一些運維知識,大家點點發财手關注一波,一起學習交流,感謝大家!!! <code>【原創公衆号】:非著名運維 【福利】:公衆号回複 “資料” 送運維自學資料大禮包哦!</code>

Ansible自動化運維工具之主機管理與自定義配置檔案(2)