Ansible自動(dòng)化運(yùn)維工具之主機(jī)管理與自定義配置文件(2)
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
推薦資訊
- 1發(fā)朋友圈對(duì)老公徹底失望的心情 12775
- 2BMI體重指數(shù)計(jì)算公式是什么 11235
- 3補(bǔ)腎吃什么 補(bǔ)腎最佳食物推薦 11199
- 4性生活姿勢(shì)有哪些 盤(pán)點(diǎn)夫妻性 10428
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計(jì)算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7828