一、概述
Ansible是一種開源的自動(dòng)化工具,用于自動(dòng)化任務(wù)的執(zhí)行、配置管理和應(yīng)用部署。它采用基于Python編寫的簡單、輕量級(jí)的語法,可以通過SSH協(xié)議遠(yuǎn)程管理和配置多臺(tái)計(jì)算機(jī)。
Ansible的主要特點(diǎn)包括:
1、簡單易用:設(shè)計(jì)簡單,語法清晰,無需特殊培訓(xùn)即可上手使用。
2、基于模塊化的架構(gòu):使用各種內(nèi)置和第三方的插件和模塊,可以輕松地?cái)U(kuò)展功能。
3、配置管理:可以管理各種操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備和云平臺(tái)等的配置。
4、任務(wù)自動(dòng)化:可以自動(dòng)執(zhí)行各種任務(wù),如軟件安裝、服務(wù)啟停等。
5、基于劇本(Playbook)的自動(dòng)化:可以編寫劇本來定義一系列任務(wù)和配置,實(shí)現(xiàn)復(fù)雜的自動(dòng)化流程。
6、可擴(kuò)展性:可以與其他工具和平臺(tái)集成,如監(jiān)控系統(tǒng)、版本控制工具等。
二、工作原理
Ansible的工作原理基于以下幾個(gè)核心概念:
1、控制節(jié)點(diǎn)(Control Node):控制節(jié)點(diǎn)是指安裝了Ansible的機(jī)器,可以是任何一臺(tái)可以訪問到被管理節(jié)點(diǎn)的計(jì)算機(jī)。在控制節(jié)點(diǎn)上,管理員可以編寫Ansible的配置文件和劇本,然后使用Ansible命令行工具來執(zhí)行這些任務(wù)。
2、主機(jī)清單(Inventory):主機(jī)清單是一個(gè)文本文件,用于定義被管理節(jié)點(diǎn)的主機(jī)列表和相關(guān)的配置信息。其中可以包含主機(jī)名、IP地址、SSH連接信息等。管理員可以根據(jù)需要在主機(jī)清單中組織和分類主機(jī)。
3、模塊(Modules):模塊是Ansible的核心組成部分,用于執(zhí)行特定的任務(wù)。Ansible自帶了眾多內(nèi)置模塊,如文件操作、軟件包管理、服務(wù)管理等。管理員可以通過在劇本中使用模塊來指定需要執(zhí)行的任務(wù),并傳遞參數(shù)。
4、劇本(Playbook):劇本是一個(gè)定義了一系列任務(wù)和配置的YAML格式文件。通過劇本,管理員可以描述需要在被管理節(jié)點(diǎn)上執(zhí)行的操作。劇本由一個(gè)或多個(gè)Play組成,每個(gè)Play包含了一組任務(wù)和要操作的主機(jī)列表。
5、執(zhí)行流程:管理員在控制節(jié)點(diǎn)上編寫好劇本,然后使用Ansible命令行工具執(zhí)行劇本。當(dāng)執(zhí)行命令時(shí),Ansible會(huì)首先與被管理節(jié)點(diǎn)建立SSH連接,然后將劇本分發(fā)到被管理節(jié)點(diǎn)上,并在每個(gè)節(jié)點(diǎn)上按照劇本定義的任務(wù)進(jìn)行執(zhí)行。執(zhí)行完成后,Ansible會(huì)將執(zhí)行結(jié)果返回到控制節(jié)點(diǎn)。
三、ansible的應(yīng)用
Ansible沒有客戶端,也不需要在被管理主機(jī)添加任何代理程序,通過SSH完成底層通信,而SSH在Linux的發(fā)型版本中默認(rèn)已經(jīng)安裝并啟用,而在Windows系統(tǒng)下則依賴于PowerShell,Ansible要求管理端必須是Linux系統(tǒng),在管理節(jié)點(diǎn)通過應(yīng)用模塊將指令發(fā)送到被管理主機(jī)上,并在執(zhí)行完畢后自動(dòng)刪除產(chǎn)生的臨時(shí)文件,根據(jù)Ansible使用過程中不同角色,可將其分為三個(gè)部分。
1、使用者如何使用Ansible實(shí)現(xiàn)自動(dòng)化運(yùn)維?
2、Ansible的工具集,Ansible可以實(shí)現(xiàn)的功能?
3、作用對(duì)象,Ansible可以影響哪些主機(jī)?
四、ansible的使用者
1、CMDB:CMDB系統(tǒng)存儲(chǔ)和管理著企業(yè)IT架構(gòu)中的各種配置信息,是構(gòu)建ITL項(xiàng)目核心工具,運(yùn)維人員可以組合CMDB和Ansible,通過CMDB直接下發(fā)指令調(diào)用Ansible工具完成操作者所希望達(dá)到的目標(biāo)。
2、PUBLIC/PRIVATE方式,Ansible除了豐富的內(nèi)置模塊外,同時(shí)提供豐富的API語言接口,如PHP,Pythone,PERL等多種流行語言,基于PUBLIC/PRIVATE,Ansible以API調(diào)用的方式運(yùn)行。
3、Ad-Hoc命令集,Users直接通過Ad-Hoc命令集調(diào)用Ansible工具來完成工作。
4、Playbooks:Users預(yù)先編寫好Ansible?Playbooks,通過執(zhí)行Playbooks中預(yù)先編排好的任務(wù)集按序執(zhí)行命令。
五、ansible的工具集合
Ansible工具集合了inventory,Moudles,Plugins和API。其中,inventory用來管理設(shè)備列表,可以通過分組(不同的業(yè)務(wù))實(shí)現(xiàn),對(duì)組的調(diào)用直接影響組內(nèi)所有的主機(jī);Moudles是各種執(zhí)行模塊,幾乎所有的管理任務(wù)都是通過模塊來執(zhí)行的;Plugins提供了各種附加功能;API為編程人員提供了一個(gè)調(diào)用接口,可以做Ansible的二次開發(fā)具體表現(xiàn)如下:
1、Ansible?Playbook:任務(wù)腳本,編排定義Ansible任務(wù)集的配置文件,由Ansible按序依次執(zhí)行,通常是JSON格式的YML/YAML文件;
2、inventory:Ansible管理主機(jī)清單
3、Moudle:Ansible執(zhí)行命令功能模塊,多數(shù)為內(nèi)置的核心模塊也可以用戶自定義;
4、Plugins:模塊功能的補(bǔ)充,如連接類型插件,循環(huán)插件,變量插件,過濾插件等,該功能不常用。
5、API:提供第三方程序調(diào)用的應(yīng)用程序編程接口;
六、作用對(duì)象
Ansible的作用對(duì)象不僅僅是Linux和非Linux操作系統(tǒng)的主機(jī),也可以作用于各類PUBLIC/PRIVATE,商業(yè)和非商業(yè)設(shè)備的網(wǎng)絡(luò)設(shè)施。
使用者使用Ansible或Ansible-playbooks時(shí),在服務(wù)器終端輸入Ansible的Ad-Hoc命令集或playbooks后,Ansible會(huì)遵循預(yù)先定義安排的規(guī)則將Playbooks逐步拆解為Play,再將Play組織成Ansible可以識(shí)別的任務(wù),隨后調(diào)用任務(wù)涉及的所有模板和插件,根據(jù)inventory中自定義的主機(jī)列表通過SSH將任務(wù)集以臨時(shí)文件或命令的形式傳輸給遠(yuǎn)程客戶端執(zhí)行并返回執(zhí)行結(jié)果,如果是臨時(shí)文件則執(zhí)行完畢后自動(dòng)刪除。
七、準(zhǔn)備工作
1、準(zhǔn)備三臺(tái)或多臺(tái)服務(wù)器
2、三臺(tái)主機(jī)關(guān)閉防火墻
3、三臺(tái)主機(jī)互相通聯(lián)
4、三臺(tái)主機(jī)互相配置ssh免密登錄
八、安裝部署
三臺(tái)主機(jī)都安裝ansible
yum -y install ansible
修改主機(jī)的配置文件
vim /etc/ansible/hosts
到最后一行插入
[syh] 組名
192.168.77.111 成員ip
192.168.77.115 成員ip
ok這樣ansible就配置完成了
九、ansible的使用
ansible命令格式:ansible? 要執(zhí)行命令的組? -m? 要使用的模塊? -[選項(xiàng)]?? 指定模塊參數(shù)
在ansible中有3000多個(gè)模塊,ansible通過模塊來控制組中的成員執(zhí)行命令,修改文件內(nèi)容,安裝軟件等這里只寫幾個(gè)常用的模塊
配置完成后測(cè)試
ansible -i /etc/ansible/hosts syh -m ping
這里-i選項(xiàng)表示inventory 默認(rèn)為/etc/ansible/hosts
-m表示指定模塊
ping是一個(gè)模塊用來測(cè)試
?1、command模塊
command模塊在遠(yuǎn)程主機(jī)執(zhí)行命令,但是不支持管道,重定向等shell的特征,常用參數(shù)如下(不支持管道,不建議使用)。
-
chdir:在遠(yuǎn)程主機(jī)上運(yùn)行命令前要提前進(jìn)入的目錄
-
creates:在命令運(yùn)行時(shí)創(chuàng)建一個(gè)文件,如果文件已經(jīng)存在,則不會(huì)創(chuàng)建任務(wù)
-
removes:在命令運(yùn)行時(shí)移除一個(gè)文件,如果文件不存在,則不會(huì)執(zhí)行移除任務(wù)
-
executable:指明運(yùn)行命令的shell程序
遠(yuǎn)程查看組中成員家目錄的內(nèi)容
ansible syh -m command -a "chdir=/root ls -l"
查看組成員的的時(shí)間和平均負(fù)載
ansible syh -m command -a "uptime"
?2、shell模塊
shell模塊在遠(yuǎn)程主機(jī)執(zhí)行命令,相當(dāng)于調(diào)用遠(yuǎn)程主機(jī)的shell進(jìn)程,然后在該shell下打開一個(gè)子shell運(yùn)行命令,和command模塊的區(qū)別是它支持shell特征,如管道,重定向等。
重定向
ansible syh -m shell -a "echo 111 > 1.txt"
測(cè)試管道符
ansible syh -m shell -a 'ifconfig ens33 | awk 'NR==2' "
?3.raw模塊
最原始的方式運(yùn)行命令(不依賴python,僅通過ssh實(shí)現(xiàn))
清除yum緩存
ansible syh -m raw -a "yum clean all"
4、copy模塊
copy模塊用于復(fù)制指定主機(jī)文件到遠(yuǎn)程主機(jī)的指定位置,常見參數(shù)如下
-
dest:指出復(fù)制文件的目標(biāo)目錄位置,使用絕對(duì)路徑。如果源是目錄,指目標(biāo)也要是目錄,如果目標(biāo)文件已經(jīng)存在會(huì)覆蓋原有內(nèi)容。
-
src:指出源文件的路徑,可以使用相對(duì)路徑或絕對(duì)路徑,支持直接指定目錄,如果源是目錄則目標(biāo)也要是目錄
-
mode:指出復(fù)制時(shí),目標(biāo)文件的權(quán)限 可選
-
owner:指出復(fù)制時(shí),目標(biāo)文件的屬主 可選
-
group:指出復(fù)制時(shí),目標(biāo)文件的屬組 可選
-
content:指出復(fù)制到目標(biāo)主機(jī)上的內(nèi)容,不能與src一起使用,相當(dāng)于復(fù)制content指明的數(shù)據(jù)到目標(biāo)文件中
特別提示:
參數(shù):backup=yes===>意思是,如果目標(biāo)路徑下,有與我同名但不同內(nèi)容的文件時(shí),在覆蓋前,對(duì)目標(biāo)文件先進(jìn)行備份。
所有被管理端節(jié)點(diǎn)必須安裝libselinux-python包
將syh組中主機(jī)的/etc/hosts文件拷貝到/tmp下 指定權(quán)限為777 更改屬主為syh更改屬組為root
ansible syh -m copy -a "src=/etc/hosts dest=/tmp mode=777 owner=Rich group=root"
查看
?5、yum模塊
Yum模塊基于yum機(jī)制,對(duì)遠(yuǎn)程主機(jī)管理程序包,常用參數(shù)如下。
-
name:程序包的名稱,可以帶上版本號(hào),如不指定版本號(hào)默認(rèn)安裝為最新版本
-
state=present?|?latest?|?absent:指明對(duì)程序包執(zhí)行的操作,present表示安裝程序包,latest表示安裝最新版本的程序包,absent表示卸載程序包
-
disablerepo:在用yum安裝時(shí)禁用某個(gè)倉庫的ID
-
enablerepo:在用yum安裝時(shí)啟用某個(gè)參考的ID
-
conf_file:yum運(yùn)行時(shí)的配置文件而不是使用默認(rèn)的配置文件
-
diable_gpg_check=yes?|?no:是否啟用完整性校驗(yàn)功能
在組成員中安裝dns服務(wù)
ansible syh -m yum -a "name=bind state=present"
查看
7.service模塊?
Service模塊為用來管理遠(yuǎn)程主機(jī)上的服務(wù)的模塊,常見參數(shù)如下:
-
name:被管理的服務(wù)名稱
-
state=started?|?stopped?|?restarted:動(dòng)作包含啟動(dòng)關(guān)機(jī)或重啟
-
enabled=yes?|?no:表示是否設(shè)置該服務(wù)開機(jī)自啟動(dòng)
-
runlevel:如果設(shè)定了enabled開機(jī)自啟動(dòng),則要定義在哪些運(yùn)行目標(biāo)下自啟動(dòng)
啟動(dòng)組成員中http服務(wù),并設(shè)置為開機(jī)自啟
ansible syh -m service -a "name=httpd state=started enabled=yes"
?查看
?8、user模塊
User模塊用于管理遠(yuǎn)程主機(jī)上的用戶賬戶,常見參數(shù)如下:
-
name:必選參數(shù) ?賬號(hào)名稱
-
state=present?|?absent:創(chuàng)建賬號(hào)或者刪除賬號(hào),present表示創(chuàng)建,absent表示刪除
-
system=yes?|?no:是否為系統(tǒng)賬號(hào)
-
uid:用戶UID
-
group:用戶的基本組
-
groups:用戶的附加組
-
shell:默認(rèn)使用的shell
-
home:用戶的家目錄
-
move_home=yes?|?no:如果設(shè)置的家目錄已經(jīng)存在,是否將已經(jīng)存在的家目錄進(jìn)行移動(dòng)
-
password:用戶的密碼,建議使用加密后的字符串
-
comment:用戶的注釋信息
-
remove=yes?|?no:當(dāng)state=absent時(shí),是否刪除用戶的家目錄
創(chuàng)建一個(gè)程序用戶
ansible syh -m user -a 'name=user1 system=yes uid=502 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"'
?9、script模塊
script模塊能夠?qū)崿F(xiàn)遠(yuǎn)程服務(wù)器批量運(yùn)行本地的shell腳本
vim /opt/file.sh 在opt目錄下創(chuàng)建一個(gè)創(chuàng)建20個(gè)測(cè)試文件的腳本
#!/bin/bash
touch /tmp/file{1..20}.txt
查看
?十、playkook(劇本)的使用
playbook格式:ansible-playbook -[選項(xiàng)] 編寫的yml文件路徑
Playbook配置文件使用YAML語法,具有簡潔明了,結(jié)構(gòu)清晰等特點(diǎn)。Playbook配置文件類似于shell腳本,是一個(gè)YAML格式的文件,用于保存針對(duì)特定需求的任務(wù)列表,前面介紹的ansible命令雖然可以完成各種任務(wù),但是當(dāng)配置一系列任務(wù)時(shí),逐條輸入命令就顯得效率非常低下,更有效的方式在playbook配置中配置所有的任務(wù)代碼,利用ansible-playbook命令執(zhí)行該文件,可以實(shí)現(xiàn)自動(dòng)化運(yùn)維,YAML文件的擴(kuò)展名通常為.yaml或.yml。
YAML語法和其他高級(jí)語言類似,其結(jié)構(gòu)通過縮進(jìn)來展示,通過“-“來表達(dá)選項(xiàng),通過冒號(hào)“:”來分隔鍵和值。整個(gè)文件以“---”開始并以“…”結(jié)束。
1、playbook選項(xiàng)
--syntax-check:檢測(cè)yaml文件的語法
-C(--check):測(cè)試,不會(huì)改變主機(jī)的任何配置
--list-hosts:列出yaml文件影響的主機(jī)列表
--list-tasks:列出yaml文件的任務(wù)列表
--list-tags:列出yaml文件中的標(biāo)簽
-t?TAGS(--tags=TAGS):表示只執(zhí)行指定標(biāo)簽的任務(wù)
--skip-tags=SKIP_TAGSS:表示除了指定標(biāo)簽任務(wù),執(zhí)行其他任務(wù)
--start-at-task=START_AT:從指定任務(wù)開始往下運(yùn)行
2、修改配置文件(方便測(cè)試)
vim /etc/ansible/hosts
[test1]
192.168.77.112
[test2]
192.168.77.115
?3、編寫playbook
所有的“-”和“:”后面均有空格,而且要注意縮進(jìn)和對(duì)齊
Playbook的核心元素包含:
-
hosts:任務(wù)的目標(biāo)主機(jī),多個(gè)主機(jī)用冒號(hào)分隔,一般調(diào)用/etc/ansible/hosts中的分組信息
-
remote_user:遠(yuǎn)程主機(jī)上,運(yùn)行此任務(wù)的默認(rèn)為root運(yùn)行
-
tasks:任務(wù),即定義的具體任務(wù),由模塊定義的操作列表
-
handlers:觸發(fā)器,類似tasks,只是在特定的條件下才會(huì)觸發(fā)任務(wù)。某任務(wù)的狀態(tài)在運(yùn)行后changed時(shí),可通過“notify”通知給相應(yīng)的handlers進(jìn)行觸發(fā)執(zhí)行。
-
roles:角色,將hosts剝離出去,由tasks,handlers等所組成的一種特定的結(jié)構(gòu)集合。
vim /etc/ansible/test1.yml
--- #開頭格式(可忽略)
- hosts: test1 #表示對(duì)test01(192.168.77.112)的操作
remote_user: root #遠(yuǎn)端執(zhí)行用戶身份root
tasks: #任務(wù)列表
- name: adduser #任務(wù)名稱
user: name=user2 state=present #執(zhí)行user模塊創(chuàng)建用戶
tags: #創(chuàng)建tag標(biāo)簽
- testa #tag標(biāo)簽為testa
- name: addgroup #任務(wù)名稱
group: name=tests system=yes #執(zhí)行g(shù)roup模塊創(chuàng)建一個(gè)組賬號(hào)
tags: #創(chuàng)建tag標(biāo)簽
- testb #tag標(biāo)簽為testb
- hosts: test2 #表示對(duì)test02(192.168.77.115)的操作
remote_user: root #遠(yuǎn)端執(zhí)行用戶身份root
tasks: #任務(wù)列表
- name: cf #任務(wù)名稱
copy: src=/etc/passwd dest=/home #執(zhí)行copy模塊復(fù)制文件
tags: #創(chuàng)建tag標(biāo)簽
- testc #tag標(biāo)簽為testsc
... #結(jié)尾格式(可忽略)
測(cè)試palybook
ansible-playbook -C /etc/ansible/test.yml
沒有報(bào)錯(cuò)就可以執(zhí)行了(有些特殊情況就算沒有報(bào)錯(cuò)也會(huì)執(zhí)行失?。?/h4>
?執(zhí)行
十一、觸發(fā)器
需要觸發(fā)才能執(zhí)行的任務(wù),當(dāng)之前定義在tasks中的任務(wù)執(zhí)行完成后,若希望在基礎(chǔ)上觸發(fā)其他的任務(wù),這時(shí)就需要定義handlers。例如,當(dāng)通過ansible的模塊對(duì)目標(biāo)主機(jī)的配置文件進(jìn)行修改之后,如果任務(wù)執(zhí)行成功,可以觸發(fā)一個(gè)觸發(fā)器,在觸發(fā)器中定義目標(biāo)主機(jī)的服務(wù)重啟操作,以使配置文件生效,handlers觸發(fā)器具有以下優(yōu)點(diǎn)。
-
handlers是Ansible提供的條件機(jī)制之一,handlers和task很類似,但是他在被task通知的時(shí)候才會(huì)觸發(fā)執(zhí)行
-
handlers只會(huì)在所有任務(wù)執(zhí)行完成后執(zhí)行,而且即使被通知了多次,它也只會(huì)執(zhí)行一次,handlers按照定義的順序依次執(zhí)行
--- //固定開頭格式
- hosts: test1 //指定運(yùn)行主機(jī)為test01組
remote_user: root //指定對(duì)端運(yùn)行用戶的身份
tasks: //任務(wù)列表
- name: change port //定義任務(wù)名稱
command: sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
//模塊為command:使用sed命令替換監(jiān)聽端口為8080
notify: //完成任務(wù)后調(diào)用restart httpd server觸發(fā)器
- restart httpd server
handlers: //配置觸發(fā)器
- name: restart httpd server //指定觸發(fā)器名字
service: name=httpd state=restarted //指定觸發(fā)條件為重啟httpd服務(wù)
測(cè)試playbook (沒有報(bào)錯(cuò))
?執(zhí)行playbook(成功)
十二、變量
vim /etc/ansible/test_vars.yml 編寫自定義變量
---
- hosts: all
vars: #定義變量
- names: "cloud" #第一個(gè)name變量
age: "3" #第二個(gè)age變量
tasks:
- name: "{{ names }}" #{{}}兩對(duì)大括號(hào)引用變量,變量名兩頭空格
shell: echo "myname {{ names }},myage {{ age }}"
register: var_result
- debug: var=var_result
...
圖中紅色的就是剛才定義的變量
?
十三、playbook中的角色
將多種不同的tasks的文件集中存儲(chǔ)在某個(gè)目錄下,則該目錄就是角色,角色一般存放在/etc/ansible/roles/目錄中,可通過ansible的配置文件來調(diào)整默認(rèn)的角色目錄。/etc/ansible/roles目錄下有很多的子目錄,其中每一個(gè)子目錄對(duì)應(yīng)一個(gè)角色。每個(gè)角色也有自己的目錄結(jié)構(gòu)。
/etc/ansible/roles/為角色集合,該目錄下有自定義的各個(gè)子目錄
-
mariadb:mysql角色
-
apache:httpd角色
-
nginx:nginx角色
每個(gè)角色的定義,以特定的層級(jí)目錄結(jié)構(gòu)進(jìn)行組織,以Mariadb(mysql角色)?為例
-
files:存放copy或script等模塊調(diào)用的文件
-
templates:存放template模塊查找所需要的模板文件的目錄,如mysql配置文件等模板
-
tasks:任務(wù)存放目錄
-
handlers:存放相關(guān)觸發(fā)執(zhí)行器的目錄
-
vars:變量存放的目錄
-
meta:用于存放此角色元數(shù)據(jù)
-
default:默認(rèn)變量存放目錄,文件中定義了此角色使用的默認(rèn)變量
上述目錄中tasks,handlers,vars,meta,default至少應(yīng)該包含一個(gè)main.yml,該目錄下也可以有其他的yml文件,但是需要在main.yml文件中用include指定將其他.yml文件包含進(jìn)來。
十三、用ansible-playbook給成員安裝mariadb
創(chuàng)建數(shù)據(jù)庫角色
mkdir -pv /etc/ansible/roles/mariadb/{files,tasks,handlers}
vim /etc/ansible/mariadb.yml 創(chuàng)建mariadb角色
---
- hosts: test1:test2 需要執(zhí)行的主機(jī)
remote_user: root 執(zhí)行的用戶
roles:
- mariadb 角色
...
cd /etc/ansible/roles/mariadb/tasks 進(jìn)入任務(wù)存放目錄
vim main.yml 編寫任務(wù)
--- //固定開頭格式
- name: install mariadb //指定任務(wù)名稱安裝mariadb數(shù)據(jù)庫
yum: name=mariadb-server state=present //執(zhí)行yum模塊安裝mariadb
- name: move config file //指定任務(wù)名稱移除原有配置文件
shell: "[ -e /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak" //判斷有就移除
- name: provide a new config file //創(chuàng)建一個(gè)新的配置文件
copy: src=my.cnf dest=/etc/my.cnf //src源會(huì)自動(dòng)到files文件去找my.cnf文件
- name: reload mariadb //指定任務(wù)名稱為重啟mariadb
shell: systemctl restart mariadb //shell模塊重啟
- name: create database testdb //按要求添加執(zhí)行如下sql語句
shell: mysql -u root -e "create database testdb;grant all privileges on testdb.* to test@192.168.77.% identified by 'test123';flush privileges;"
notify: //配置觸發(fā)器
- restart mariadb //為重啟mariadb
...
cd ../handlers/ 進(jìn)入觸發(fā)器文件
vim main.yml 編寫觸發(fā)器
---
- name: restart mariadb //引用上面配置的觸發(fā)器
service: name=mariadb state=restarted //觸發(fā)后重啟mariadb
...
?
cd ../files/
cp /etc/my.cnf /etc/ansible/roles/mariadb/files/
ls
my.cnf //準(zhǔn)備my.cnf文件
cd /etc/ansible/
tree
?
測(cè)試(成功)
文章來源:http://www.zghlxwxcb.cn/news/detail-596085.html
?執(zhí)行成功
文章來源地址http://www.zghlxwxcb.cn/news/detail-596085.html
以上就是ansible的基本使用
如有錯(cuò)誤歡迎各位大佬批評(píng)指正,我們共同進(jìn)步
到了這里,關(guān)于小白到運(yùn)維工程師的自學(xué)之路 第五十四集 (ansible自動(dòng)化運(yùn)維工具)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!