本節(jié)包括的模塊:
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的滿城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!(1)定時(shí)任務(wù)模塊cronvar
(2)歸檔模塊archive
(3)解包模塊unarchive
(4)下載模塊get_url
(5)wait_for模塊
(6)script模塊
除了 cron 模塊本身可以管理 cron 的環(huán)境變量,另一個(gè)模塊 cronvar 也可以定義定時(shí)任務(wù)的環(huán)境變量。
cronvar--Ansible官方使用說(shuō)明文檔
ansible-doc -s cronvar
- name: Manage variables in crontabs
cronvar:
backup: # (yes/no)如果設(shè)置了,則會(huì)在修改遠(yuǎn)程cron_file前備份這些文件
cron_file: # 自定義cron_file的文件名,使用相對(duì)路徑則表示在/etc/cron.d中
state: # present用于創(chuàng)建變量,absent用于移除變量
user: # 指定哪個(gè)用戶的crontab將要被修改,默認(rèn)為root
value: # 環(huán)境變量的值,要求state=present
(1)例如:創(chuàng)建一個(gè)job,每2分鐘進(jìn)行一次時(shí)間同步,并且自定義cron_file。
ansible test -m cron -a 'name="ntpdate" job="/usr/sbin/ntpdate ntp1.aliyun.com" cron_file=ntpdate_cron user=root minute=*/2' -o -f 8
驗(yàn)證是否添加正確。
ansible test -m shell -a 'cat /etc/cron.d/ntpdate_cron'
192.168.246.187 | CHANGED | rc=0 >>
#Ansible: ntpdate
*/2 * * * * root /usr/sbin/ntpdate ntp1.aliyun.com
(2)移除一個(gè)job,要求name必須匹配。如有必要,需要同時(shí)指定cron_file和user。
ansible test -m cron -a 'name="ntpdate" state=absent cron_file=ntpdate_cron user=root' -o
# /etc/cron.d/ntpdate_cron這個(gè)文件還是存在的(內(nèi)容為空)
用于在遠(yuǎn)端壓縮文件。當(dāng)然,前提是在遠(yuǎn)端主機(jī)上要有對(duì)應(yīng)的壓縮工具。支持zip/gz/tar/bz2。
archive--Ansible官方使用說(shuō)明文檔
ansible-doc -s archive
- name: Creates a compressed archive of one or more files or trees
archive:
dest: # 目標(biāo)歸檔文件名。除非path指定要壓縮的是單文件,否則需要dest選項(xiàng)
format: # 指定壓縮格式,默認(rèn)為gz格式
group: # 文件/目錄的所屬組
owner: # 文件/目錄的所有者
mode: # 設(shè)置文件/目錄的的權(quán)限,支持'0644'或'u+rwx'或'u=rw,g=r,o=r'等格式
path: # 要壓縮的文件,可以是絕對(duì)路徑,也可以是glob統(tǒng)配的路徑,還可以是文件列表
remove: # 壓縮后刪除源文件
示例如下:
(1)將文件壓縮成默認(rèn)的gz格式,由于path指定要壓縮的是單文件,所以可不使用dest:
ansible test -m archive -a 'path="/tmp/mu.txt"'
說(shuō)明??:gz后綴壓縮包的解壓命令:gzip -d mu.txt.gz
(2)將目錄/path/to/foo/壓縮為/path/to/foo.tgz:
ansible test -m archive -a 'path="/tmp/xyz" dest=/tmp/xyz.tgz'
(3)將單文件/path/to/foo壓縮為zip格式:
ansible test -m archive -a 'path="/tmp/mu.txt" format=zip'
說(shuō)明??:zip后綴壓縮包的解壓命令:unzip mu.txt.zip
(4)將給定的文件列表壓縮為bz2格式,壓縮包路徑為/path/file.tar.bz2:
- name: Create a bz2 archive of multiple files, rooted at /path
archive:
path:
- /path/to/foo
- /path/wong/foo
dest: /path/file.tar.bz2
format: bz2
默認(rèn)復(fù)制ansible端的歸檔文件到被控主機(jī),然后在被控主機(jī)上進(jìn)行解包。如果設(shè)置選項(xiàng)remote_src=yes,則表示解包被控主機(jī)上的歸檔文件。
要求在被控主機(jī)上有對(duì)應(yīng)的解包命令。unzip命令用于解壓".zip"文件,gtar(tar包提供)命令用于解壓".tar"、 ".tar.gz "、".tar.bz 2"和".tar.xz "。
unarchive--Ansible官方使用說(shuō)明文檔
ansible-doc -s unarchive
- name: Unpacks an archive after (optionally) copying it from the local machine.
unarchive:
creates: # 如果指定的文件存在則不執(zhí)行該任務(wù)??捎糜趯?shí)現(xiàn)冪等性
dest: # 遠(yuǎn)程機(jī)器上需要被解包的歸檔文件,要求是絕對(duì)路徑
exclude: # 列出解包過(guò)程中想要忽略的目錄和文件
group: # 文件/目錄的所屬組
owner: # 文件/目錄的所有者
mode: # 設(shè)置文件/目錄的的權(quán)限,支持'0644'或'u+rwx'或'u=rw,g=r,o=r'等格式
keep_newer: # 在解包過(guò)程中,如果目標(biāo)路徑中和包中有同名文件,且比包中的文件更新,則保留新的文件
list_files: # 設(shè)置為true時(shí),將返回歸檔文件中的文件列表
remote_src: # 設(shè)置為yes表示遠(yuǎn)程主機(jī)上已有目標(biāo)歸檔文件,即不再?gòu)谋镜貜?fù)制歸檔文件到遠(yuǎn)端,直接在遠(yuǎn)端解包。
# 默認(rèn)為no
src: # 如果remote_src=no,將復(fù)制本地歸檔文件到遠(yuǎn)端,可相對(duì)路徑也可絕對(duì)路徑.
# 如果remote_src=yes, 將解包遠(yuǎn)程已存在的歸檔文件
# 如果remote_src=yes且src中包含了"://",將指揮遠(yuǎn)程主機(jī)從url中下載文件并解包
get_url--Ansible官方使用說(shuō)明文檔
ansible-doc -s get_url
- name: Downloads files from HTTP, HTTPS, or FTP to node
get_url:
backup: # 下載文件時(shí)同時(shí)創(chuàng)建一個(gè)名稱中包含時(shí)間戳的備份文件
dest: # 文件保存路徑,必須為絕對(duì)路徑。
# 如果dest是一個(gè)目錄,則使用url的base name作為文件名
# 如果dest是一個(gè)目錄,則'force'選項(xiàng)不生效
# 如果dest是一個(gè)目錄,則總是會(huì)下載目標(biāo)文件,但只在已存在的文件變化了才會(huì)替換舊文件
force: # 如果設(shè)置為yes,且dest不是一個(gè)目錄時(shí),則總是會(huì)下載文件,但只在已存在的文件變化了才會(huì)替換舊文件
# 如果設(shè)置為no(默認(rèn)),則只會(huì)在目錄路徑下不存在該文件時(shí)才會(huì)進(jìn)行下載。
tmp_dest: # 下載時(shí)臨時(shí)存放目錄,在任務(wù)執(zhí)行完成前會(huì)刪除下載的臨時(shí)文件
group: # 文件/目錄的所屬組
owner: # 文件/目錄的所有者
mode: # 設(shè)置文件/目錄的的權(quán)限,支持'0644'或'u+rwx'或'u=rw,g=r,o=r'等格式
timeout: # 請(qǐng)求url時(shí)的超時(shí)時(shí)間,默認(rèn)10秒鐘
url: # 要下載的url路徑,(http|https|ftp)://[user[:pass]]@host.domain[:port]/path
# 還支持file格式的路徑,實(shí)現(xiàn)復(fù)制功能。file:///path/to/file
注意,dest為目錄或者force=yes時(shí),總是會(huì)下載文件到臨時(shí)存放目錄中,只不過(guò)不一定會(huì)替換舊文件。只有 force=no(默認(rèn))且dest是一個(gè)文件時(shí),在文件已存在時(shí)才不會(huì)下載文件。
示例如下:
(1)下載foo.conf,若/etc/foo.conf已存在,則不下載該文件:
- name: Download foo.conf
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
mode: '0440'
有些時(shí)候任務(wù)之間對(duì)狀態(tài)、文件、端口等資源是有依賴關(guān)系的,只有滿足了前提,任務(wù)才會(huì)繼續(xù)。wait_for模塊就是用于判斷任務(wù)在滿足什么條件的情況下會(huì)繼續(xù)。主要用來(lái)判斷端口是否開啟、文件是否存在、文件中是否存在某些字符串。
wait_for--Ansible官方使用說(shuō)明文檔
ansible-doc -s wait_for
- name: Waits for a condition before continuing
wait_for:
delay: # 在檢查操作進(jìn)行之前等待的秒數(shù)
host: # 等待這個(gè)主機(jī)處于啟動(dòng)狀態(tài),默認(rèn)為127.0.0.1
port: # 等待這個(gè)端口已經(jīng)開放
path: # 這個(gè)文件是否已經(jīng)存在
search_regex: # 在文件中進(jìn)行正則匹配
state: # present/started/stopped/absent/drained.默認(rèn)started
# 當(dāng)檢查的是一個(gè)端口時(shí):
# started:保證端口是開放的
# stopped:保證端口是關(guān)閉的
# 當(dāng)檢查的是一個(gè)文件時(shí):
# present/started:在檢查到文件存在才會(huì)繼續(xù)
# absent:檢查到文件被移除后才會(huì)繼續(xù)
sleep: # 兩次檢查之間sleep的秒數(shù),默認(rèn)1秒
timeout: # 檢查的等待超時(shí)時(shí)間(秒數(shù),默認(rèn)300)
示例如下:
(1)連接上主機(jī)后10秒后才檢查8000端口是否處于開放狀態(tài),300秒(默認(rèn)值)內(nèi)未開放則超時(shí)。
- name: Wait for port 8000 to become open on the host, don't start checking for 10 seconds
wait_for:
port: 8000
delay: 10
(2)直到/tmp/foo文件存在才會(huì)繼續(xù)
- name: Wait until the file /tmp/foo is present before continuing
wait_for:
path: /tmp/foo
(3)直到/tmp/foo文件中能匹配"completed"字符串才繼續(xù)
- name: Wait until the string "completed" is in the file /tmp/foo before continuing
wait_for:
path: /tmp/foo
search_regex: completed
(4)直到/var/lock/file.lock這個(gè)鎖文件被移除了才繼續(xù)
- name: Wait until the lock file is removed
wait_for:
path: /var/lock/file.lock
state: absent
(5)直到/proc/3466/status文件被移除才繼續(xù),可用來(lái)判斷進(jìn)程是啟動(dòng)還是停止,pid文件是存在還是被移除等
- name: Wait until the process is finished and pid was destroyed
wait_for:
path: /proc/3466/status
state: absent
script模塊用于控制遠(yuǎn)程主機(jī)執(zhí)行腳本。在執(zhí)行腳本前,ansible會(huì)將本地腳本傳輸?shù)竭h(yuǎn)程主機(jī),然后再執(zhí)行。在執(zhí)行腳本的時(shí)候,其采用的是遠(yuǎn)程主機(jī)上的shell環(huán)境。
script--Ansible官方使用說(shuō)明文檔
ansible-doc -s script
- name: Runs a local script on a remote node after transferring it
script:
chdir: # 在遠(yuǎn)程執(zhí)行腳本前先切換到此目錄下。
creates: # 當(dāng)此文件存在時(shí),不執(zhí)行腳本。可用于實(shí)現(xiàn)冪等性。
removes: # 當(dāng)此文件不存在時(shí),不執(zhí)行腳本??捎糜趯?shí)現(xiàn)冪等性。
free_form: # 本地待執(zhí)行的腳本路徑、選項(xiàng)、參數(shù)。之所以稱為free_form,是因?yàn)樗悄_本名+選項(xiàng)+參數(shù)。
本博文是參考馬龍帥大佬文章整理生成,屬于博主讀書筆記,如有侵權(quán),請(qǐng)大佬與我聯(lián)系,立刪!
最后,感謝開源,擁抱開源~
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:Asible學(xué)習(xí)筆記--常用模塊(三)-創(chuàng)新互聯(lián)
本文地址:http://bm7419.com/article10/ddhsgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)建站、Google、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站制作、虛擬主機(jī)
聲明:本網(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)容