首頁 資訊 Ansible自動化運維工具之主機管理與自定義配置文件(2)

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

來源:泰然健康網(wǎng) 時間:2025年06月04日 18:06

2023-10-20 193 發(fā)布于廣東

版權(quán)

舉報

版權(quán)聲明:

本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《 阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和 《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫 侵權(quán)投訴表單進(jìn)行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

設(shè)置ansible.cfg配置文件參數(shù)

Ansible有很多配置參數(shù),以下是?個默認(rèn)的配置參數(shù):

?inventory:該參數(shù)表?inventory?件的位置,資源清單(inventory)就是Ansible需要連接管理的?些主機列表。

?library :Ansible的所有操作都使?模塊來執(zhí)?實現(xiàn),這個library參數(shù)就是指向存放Ansible模塊的?錄。

?forks:設(shè)置默認(rèn)情況下Ansible最多能有多少個進(jìn)程同時?作,默認(rèn)5個進(jìn)程并?處理。具體需要設(shè)置多少個,可

以根據(jù)控制端性能和被管理節(jié)點的數(shù)量來確定。

?sudo_user:設(shè)置默認(rèn)執(zhí)?命令的?戶,也可以在playbook中重新設(shè)置這個參數(shù)。

?remote_port:指定連接被管理節(jié)點的管理端?,默認(rèn)是22,除?設(shè)置了特殊的SSH端?,否則不需要修改此參數(shù)。

?host_key_checking :設(shè)置是否檢查SSH主機的密鑰??梢栽O(shè)置為True或False。即ssh的主機再次驗證。如果為False,則不需要輸入yes;如果為True,則等待輸入yes。

?timeout:設(shè)置SSH連接的超時間隔,單位是秒。

?log_path:Ansible默認(rèn)不記錄?志,如果想把Ansible系統(tǒng)的輸出記錄到?志?件中,需要設(shè)置log_path。需要注意,模塊將會調(diào)?被管節(jié)點的(r)syslog來記錄,執(zhí)?Ansible的?戶需要有寫??志的權(quán)限。

[root@k8s_master1 ~]# vim /etc/ansible/ansible.cfg //以下配置中的參數(shù)都是默認(rèn)的,如果不需要修改某項參數(shù)的話,就不需要管(不需要取消注釋),默認(rèn)就好。 14 inventory = /etc/ansible/hosts 15 library = /usr/share/my_modules/ 20 forks = 5 22 sudo_user = root 26 remote_port = 22 71 host_key_checking = False 103 timeout = 20 111 log_path = /var/log/ansible.log

?注意:可以指定多個inventory配置?件,只需在ansible的配置?件如/etc/ansible/ansible.cf g中將inventory指令設(shè)置為對應(yīng)的?件或?錄即可,如果是?錄,那么此?錄下的所有?件都是inventory?件。

主機定義與分組:

[root@k8s_master1 ~]# cat /etc/ansible/ansible.cfg ... 14 inventory = /etc/ansible/hosts ...

inventory:指定的配置文件,寫入遠(yuǎn)程主機的地址。定義被托管主機地址配置文件路徑名。

?格式:???    -  # 表示注釋    ????????[組名稱]   ?????? ?主機名稱或IP地址,其他參數(shù)

[root@k8s_master1 ~]# vim /etc/ansible/hosts ... [k8s_node] 192.168.1.19 192.168.1.20

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

[root@k8s_master1 ~]# vim /etc/ansible/hosts ... [k8s_node] k8s_node1 k8s_node2

ansible基礎(chǔ)命令

列出所有主機組的主機 :ansible all --list-hosts    

列出xx主機組的主機 :ansible ‘主機組名’ --list-hosts    

批量檢測主機并使用交互式登錄密碼:ansible all -m ping -k

[root@k8s_master1 ~]# ansible all --list-hosts hosts (2): k8s_node1 k8s_node2 [root@k8s_master1 ~]# ansible all -m ping -k SSH password: ---》需要交互式輸入密碼 k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } [root@k8s_master1 ~]# ansible all -m ping //不需要輸入密碼 k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } --列出k8s_node主機組的所有主機-- [root@k8s_master1 ~]# ansible k8s_node --list-hosts hosts (2): k8s_node1 k8s_node2

自定義ansible.cfg配置文件:

?1.創(chuàng)建自定義文件夾myansible

[root@k8s_master1 ~]# mkdir myansible

?2.創(chuàng)建自定義配置文件ansible.cfg

[root@k8s_master1 ~]# cd myansible/ [root@k8s_master1 myansible]# cp -r /etc/ansible/ansible.cfg . [root@k8s_master1 myansible]# ll 總用量 20 -rw-r--r-- 1 root root 19978 8月 10 18:32 ansible.cfg [root@k8s_master1 myansible]# vim ansible.cfg //以下配置中的參數(shù)都是默認(rèn)的,如果不需要修改某項參數(shù)的話,就不需要管(不需要取消注釋),默認(rèn)就好。 [defaults] inventory = /etc/ansible/hosts #library = /usr/share/my_modules/ #module_utils = /usr/share/my_module_utils/ #remote_tmp = ~/.ansible/tmp #local_tmp = ~/.ansible/tmp #plugin_filters_cfg = /etc/ansible/plugin_filters.yml #forks = 5 #poll_interval = 15 #sudo_user = root #ask_sudo_pass = True #ask_pass = True #transport = smart #remote_port = 22 #module_lang = C #module_set_locale = False

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

?注意:在ansible.cfg配置文件中指定inventory的hosts文件時,可以指定為相對路徑(當(dāng)前路徑下),也可以指定為絕對路徑,因為在使用自定義的ansible配置文件運行ansible時,都只能在自定義的文件夾中使用才可以識別。

[root@k8s_master1 myansible]# vim ansible.cfg //以下配置中的參數(shù)都是默認(rèn)的,如果不需要修改某項參數(shù)的話,就不需要管(不需要取消注釋),默認(rèn)就好。 [defaults] inventory = myhosts 或者 /root/myansible/myhosts //取消注釋,修改成相對路徑或者絕對路徑都不影響,因為都只能在當(dāng)前文件夾/myansible中執(zhí)行 #library = /usr/share/my_modules/ ...... [root@k8s_master1 myansible]# cat >> myhosts << EOF > [k8s] ---》這里為了與默認(rèn)的ansible配置文件/etc/ansible/hosts中的主機組k8s_node區(qū)別,我們這里用k8s主機組 > k8s_node1 > k8s_node2 > EOF [root@k8s_master1 myansible]# ls ansible.cfg myhosts [root@k8s_master1 myansible]# pwd //查看當(dāng)前路徑 /root/myansible [root@k8s_master1 myansible]# cat myhosts [k8s] ---》這里為了與默認(rèn)的ansible配置文件/etc/ansible/hosts中的主機組k8s_node區(qū)別,我們這里用k8s主機組 k8s_node1 k8s_node2

4.自定義配置文件測試:

?4.1主機組k8s

---在自定義的ansible.cfg配置文件夾/root/myansible中執(zhí)行ping主機組k8s--- [root@k8s_master1 myansible]# ansible k8s -m ping k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } ---退出自定義的ansible.cfg配置文件夾/root/myansible時執(zhí)行ping主機組k8s--- [root@k8s_master1 myansible]# cd .. //退出自定義配置文件夾 [root@k8s_master1 ~]# ansible k8s -m ping [WARNING]: Could not match supplied host pattern, ignoring: k8s [WARNING]: No hosts matched, nothing to do

?可以看到在我們退出自定義配置文件夾myansible后,再使用ansible命令ping我們myhosts文件中的k8s主機組時,就無法正常識別了。

?當(dāng)然,在我們自定義的ansible.cfg配置文件夾/root/myansible中執(zhí)行ping主機組k8s_node(ansible安裝完默認(rèn)的inventory配置?件/etc/ansible/hosts中的主機組)時,肯定也是無法識別的。

[root@k8s_master1 ~]# cat /etc/ansible/hosts [k8s_node] k8s_node1 k8s_node2 [root@k8s_master1 ~]# cd myansible/ [root@k8s_master1 myansible]# ansible k8s_node -m ping [WARNING]: Could not match supplied host pattern, ignoring: k8s_node [WARNING]: No hosts matched, nothing to do

4.2主機組all

?注意:在有自定義的配置文件時使用ansible操作主機組all時有兩種情況,一是在自定義的配置文件夾中使用ansible控制主機組all時,就默認(rèn)讀取的是自定義配置文件夾中ansible.cfg定義的inventory的hosts文件,二是在其他路徑下使用ansible控制主機組all時,則會默認(rèn)讀取ansible默認(rèn)配置文件ansible.cfg中inventory的hosts文件。

- 驗證 -:

?1.先修改ansible默認(rèn)的/etc/ansible/hosts配置文件

[root@k8s_master1 ~]# vim /etc/ansible/hosts [k8s_node] k8s_node1 k8s_node2 k8s_node3 //加入一個新的配置,用于驗證

?2.退出自定義配置文件夾/root/myansible時執(zhí)行ping所有主機組all

[root@k8s_master1 ~]# ansible all -m ping k8s_node3 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname k8s_node3: Name or service not known", "unreachable": true } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }

?從上面返回的結(jié)果我們可以看出,當(dāng)我們在退出自定義配置文件夾/root/myansible后執(zhí)行ping所有主機組all時,ansible默認(rèn)是讀取的ansible.cfg配置文件中指定inventory的hosts文件/etc/ansible/hosts中的配置。

?3.進(jìn)入自定義配置文件夾/root/myansible時執(zhí)行ping所有主機組all

[root@k8s_master1 ~]# cd myansible/ [root@k8s_master1 myansible]# ansible all -m ping k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }

?可以看到在進(jìn)入自定義的配置文件夾/root/myansible中使用ansible的ping模塊操作所有主機組all時,就會默認(rèn)讀取自定義配置文件夾中ansible.cfg定義的inventory的hosts文件。

最終解決方案:

?使用 -i 指定使用的配置文件

[root@k8s_master1 ~]# ansible all -m ping -i /root/myansible/myhosts k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } [root@k8s_master1 ~]# ansible all -m ping -i /etc/ansible/hosts k8s_node3 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname k8s_node3: Name or service not known", "unreachable": true } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } [root@k8s_master1 myansible]# ansible all -m ping -i /root/myansible/myhosts k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } [root@k8s_master1 myansible]# ansible all -m ping -i /etc/ansible/hosts k8s_node3 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname k8s_node3: Name or service not known", "unreachable": true } k8s_node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } k8s_node2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }

?可以看到在我們使用了-i選項來指定這一次ansible控制時使用的hosts配置文件時,無論我們當(dāng)前在哪個文件夾中,都不影響此次ansible正確讀取指定的配置文件。

相關(guān)實踐學(xué)習(xí)

通過Ingress進(jìn)行灰度發(fā)布

本場景您將運行一個簡單的應(yīng)用,部署一個新的應(yīng)用用于新的發(fā)布,并通過Ingress能力實現(xiàn)灰度發(fā)布。

容器應(yīng)用與集群管理

歡迎來到《容器應(yīng)用與集群管理》課程,本課程是“云原生容器Clouder認(rèn)證“系列中的第二階段。課程將向您介紹與容器集群相關(guān)的概念和技術(shù),這些概念和技術(shù)可以幫助您了解阿里云容器服務(wù)ACK/ACK Serverless的使用。同時,本課程也會向您介紹可以采取的工具、方法和可操作步驟,以幫助您了解如何基于容器服務(wù)ACK Serverless構(gòu)建和管理企業(yè)級應(yīng)用。 學(xué)習(xí)完本課程后,您將能夠: 掌握容器集群、容器編排的基本概念 掌握Kubernetes的基礎(chǔ)概念及核心思想 掌握阿里云容器服務(wù)ACK/ACK Serverless概念及使用方法 基于容器服務(wù)ACK Serverless搭建和管理企業(yè)級網(wǎng)站應(yīng)用

相關(guān)知識

在Windows環(huán)境中,有多種自動化工具可以用來執(zhí)行重復(fù)性任務(wù)、腳本編寫、系統(tǒng)管理等。以下是常見的Windows自動化工具對比分析表格:PowerShell、Ansible 和 Jenkins 在 Windows 環(huán)境下的自動化工具對比分析表格
文件夾重定向、脫機文件和漫游用戶配置文件概述
機動車維修管理規(guī)定
自融票的定義和運作機制是什么?這種金融工具如何影響市場參與者?
服務(wù)器批量健康檢測(ansible+python+shell)
醫(yī)療機構(gòu)為何要實施IT運維管理系統(tǒng)/軟件/工具?
Android健康步數(shù)自定義控件,開啟運動健康新紀(jì)元!
小米運動健康怎么自定義表盤
手游掛機輔助軟件有哪些?手游自動掛機輔助工具推薦
電力自動化設(shè)備論文

網(wǎng)址: Ansible自動化運維工具之主機管理與自定義配置文件(2) http://m.u1s5d6.cn/newsview1365990.html

推薦資訊