首頁(yè) 資訊 Ansible自動(dòng)化運(yùn)維工具之主機(jī)管理與自定義配置文件(2)

Ansible自動(dòng)化運(yùn)維工具之主機(jī)管理與自定義配置文件(2)

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

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

版權(quán)

舉報(bào)

版權(quán)聲明:

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

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

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

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

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

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

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

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

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

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

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

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

[root@k8s_master1 ~]# vim /etc/ansible/ansible.cfg //以下配置中的參數(shù)都是默認(rèn)的,如果不需要修改某項(xiàng)參數(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

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

主機(jī)定義與分組:

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

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

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

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

?由于之前我們?cè)谒兄鳈C(jī)上都配置好了/etc/hosts,所以以上配置也可以直接寫(xiě)成:

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

ansible基礎(chǔ)命令

列出所有主機(jī)組的主機(jī) :ansible all --list-hosts    

列出xx主機(jī)組的主機(jī) :ansible ‘主機(jī)組名’ --list-hosts    

批量檢測(cè)主機(jī)并使用交互式登錄密碼: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主機(jī)組的所有主機(jī)-- [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)的,如果不需要修改某項(xiàng)參數(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文件時(shí),可以指定為相對(duì)路徑(當(dāng)前路徑下),也可以指定為絕對(duì)路徑,因?yàn)樵谑褂米远x的ansible配置文件運(yùn)行ansible時(shí),都只能在自定義的文件夾中使用才可以識(shí)別。

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

4.自定義配置文件測(cè)試:

?4.1主機(jī)組k8s

---在自定義的ansible.cfg配置文件夾/root/myansible中執(zhí)行ping主機(jī)組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時(shí)執(zhí)行ping主機(jī)組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主機(jī)組時(shí),就無(wú)法正常識(shí)別了。

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

[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主機(jī)組all

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

- 驗(yàn)證 -:

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

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

?2.退出自定義配置文件夾/root/myansible時(shí)執(zhí)行ping所有主機(jī)組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)我們?cè)谕顺鲎远x配置文件夾/root/myansible后執(zhí)行ping所有主機(jī)組all時(shí),ansible默認(rèn)是讀取的ansible.cfg配置文件中指定inventory的hosts文件/etc/ansible/hosts中的配置。

?3.進(jìn)入自定義配置文件夾/root/myansible時(shí)執(zhí)行ping所有主機(jī)組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模塊操作所有主機(jī)組all時(shí),就會(huì)默認(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選項(xiàng)來(lái)指定這一次ansible控制時(shí)使用的hosts配置文件時(shí),無(wú)論我們當(dāng)前在哪個(gè)文件夾中,都不影響此次ansible正確讀取指定的配置文件。

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

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

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

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

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

相關(guān)知識(shí)

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

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

推薦資訊