ansible中絕大多數(shù)的模塊都具有冪等特性,意味著執(zhí)行依次或多次不會(huì)產(chǎn)生副作用。但是shell、command、script、raw這四個(gè)模塊時(shí)不滿足冪等性,所有操作會(huì)重復(fù)執(zhí)行,但是有些操作不允許重復(fù)執(zhí)行,比如MySQL的初始化命令mysql_install_db,邏輯上它只在第一次配置的過(guò)程中初始化依次,其他任何時(shí)候都不應(yīng)該再執(zhí)行。所有,每當(dāng)使用這四個(gè)模塊的時(shí)候,都要想一想,重復(fù)執(zhí)行這個(gè)命令會(huì)不會(huì)產(chǎn)生負(fù)面影響。
當(dāng)然,在上面的四個(gè)模塊中,除了raw模塊外,都提供了實(shí)現(xiàn)冪等特性的參數(shù),就是creates和removes:
示例如下:
---
- name: use some module
hosts: node
gather_facts: false
tasks:
# 網(wǎng)卡配置文件不存在時(shí)則不執(zhí)行
- name: use command module
command: ifup ens33
args:
removes: /etc/sysconfig/network-scripts/ifcfg-ens33
# mysql配置文件已存在時(shí)則不執(zhí)行,避免覆蓋
- name: use shell module
shell: cp /tmp/my.cnf /etc/my.cnf
args:
creates: /etc/my.cnf
經(jīng)過(guò)測(cè)試可以證明,使用removes或creates參數(shù)之后,就可以實(shí)現(xiàn)冪等性,保證命令不會(huì)重復(fù)執(zhí)行。
這四個(gè)模塊都不限于執(zhí)行shell命令或shell腳本,可以通過(guò)executable參數(shù)指定其他解釋器,如expec執(zhí)行expect腳本、perl解釋器執(zhí)行perl腳本等等。如下:
[root@ansible ansible]# cat test.yaml
---
- name: RUN a perl script
script: /some/local/script.pl
args:
executable: perl
本文名稱:ansible中的冪等性-創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article20/dphjco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、域名注冊(cè)、響應(yīng)式網(wǎng)站、網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容