2019-04-25playbook學(xué)習(xí)

1宪巨,什么是playbook?

把所有操作按照ansible編程語法械巡,放在文件里執(zhí)行就是playbook

ansible編程語法說明:

ansible劇本遵循PYyaml語法規(guī)則進(jìn)行編寫,yaml文件基本編寫規(guī)則如下說明:

規(guī)則一:縮進(jìn)

yaml使用一個(gè)固定的縮進(jìn)風(fēng)格表示數(shù)據(jù)層結(jié)構(gòu)關(guān)系,需要每個(gè)縮進(jìn)級(jí)別由兩個(gè)空格組成济似,切記一定不能使用tab鍵進(jìn)行縮進(jìn)

規(guī)則二:冒號(hào)

每個(gè)冒號(hào)后面一定要有一個(gè)空格,(以冒號(hào)結(jié)尾不需要空格盏缤,表示文件路徑的模板可以不需要空格)

規(guī)則三:短橫線

想要表示列表項(xiàng)砰蠢,使用一個(gè)短橫杠加一個(gè)空格,多個(gè)項(xiàng)使用同樣的縮進(jìn)級(jí)別作為同一個(gè)列表的一部分

1.YAML介紹

YAML是一個(gè)可讀性高的用來表達(dá)資料序列的格式唉铜。YAML參考了其他多種語言台舱,包括:XML、C語言潭流、Python竞惋、Perl以及電子郵件格式RFC2822等。Clark Evans在2001年在首次發(fā)表了這種語言灰嫉,另外Ingy dt Net與Oren Ben-Kiki也是這語言的共同設(shè)計(jì)者拆宛。

YAML Ain't Markup Language,即YAML不是XML讼撒。不過浑厚,在開發(fā)的這種語言時(shí),YAML的意思其實(shí)是:"Yet Another Markup Language"(仍是一種標(biāo)記語言)根盒。其特性:

YAML的可讀性好

YAML和腳本語言的交互性好

YAML使用實(shí)現(xiàn)語言的數(shù)據(jù)類型

YAML有一個(gè)一致的信息模型

YAML易于實(shí)現(xiàn)

YAML可以基于流來處理

YAML表達(dá)能力強(qiáng)钳幅,擴(kuò)展性好

更多的內(nèi)容及規(guī)范參見http://www.yaml.org


2,playbook替代方案

playbook替代方案一炎滞,不同樣

判斷敢艰,循環(huán),可以腳本實(shí)現(xiàn)


3厂榛,playbook替代方案二盖矫,通用


4丽惭,實(shí)踐一

ansible oldboy -m shell -a "echo oldboy linux. >/tmp/oldboy.log"

將這行命令寫成劇本:

[root@BOSS /etc/ansible/yaml]# cat wzj.yml

- hosts: oldboy

? tasks:

? ? - name: create a log file

? ? ? shell: echo oldboy linux. >/tmp/oldboy.log

----------------------------------------------------------------------------------------------->>>內(nèi)容如此

執(zhí)行:

[root@BOSS /etc/ansible/yaml]# ansible-playbook -C /etc/ansible/yaml/wzj.yml

172.16.1.31 ? ? ? ? ?? : ok=2 ?? changed=1 ?? unreachable=0 ?? failed=0

172.16.1.41 ? ? ? ? ?? : ok=2? ? changed=1? ? unreachable=0? ? failed=0

說明,利用ansile-playbook命令執(zhí)行腳本辈双,-C參數(shù)表示測試劇本任務(wù)執(zhí)行责掏,類似于話劇的彩排一樣

--------------------------------------------------------------------------------------------------------->>>成功

實(shí)踐二:ansible oldboy -m file -a "dest=/tmp/oldboy1 state=touch"

編寫成劇本:

[root@BOSS /etc/ansible/yaml]# cat lqz.yml

- hosts: oldboy

? remote_user: root

? tasks:

? ? - name: create new file

? ? ? file: name=/tmp/oldboy1 state=touch

----------------------------------------------------------------------------------------->>>編寫完成

[root@BOSS /etc/ansible/yaml]# ansible-playbook lqz.yml

---------------------------------------------------------------------------------------->>>執(zhí)行后查看

[root@BOSS /etc/ansible/yaml]# ansible oldboy -m shell -a "ls /tmp"?

172.16.1.31 | CHANGED | rc=0 >>

oldboy1

172.16.1.41 | CHANGED | rc=0 >>

oldboy1

------------------------------------------------------------------------------------------------->>>創(chuàng)建目錄成功

3,實(shí)踐三

定時(shí)任務(wù):

ansible oldboy -m cron -a "name='sync time' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'"

編寫劇本:

[root@BOSS /etc/ansible/yaml]# cat sgwe.yml

- hosts: oldboy

? tasks:

? ? - name: cron time rsync

? ? ? cron: name='sync time' minute=00 hour=00 weekday=1-5 job='/usr/sbin/ /server/scripts/class.sh? >/dev/null 2>&1'

-------------------------------------------------------------------------->>>編寫完成

執(zhí)行后查看:

[root@BOSS /etc/ansible/yaml]# ansible-playbook sgwe.yml

172.16.1.31 ? ? ? ? ?? : ok=2 ?? changed=1 ? unreachable=0 ?? failed=0

172.16.1.41 ? ? ? ? ? : ok=2? ? changed=1? ? unreachable=0? ? failed=0

查看:

[root@BOSS /etc/ansible/yaml]# ansible oldboy -m shell -a "crontab -l"

172.16.1.31 | CHANGED | rc=0 >>

#Ansible: sync time

00 00 * * 1-5 /usr/sbin/ /server/scripts/class.sh? >/dev/null 2>&1

#Ansible: sync time

00 00 * * 1-5 /usr/sbin/ /server/scripts/class.sh? >/dev/null 2>&1

------------------------------------------------------------------------------------------->>>添加定時(shí)任務(wù)成功

實(shí)踐四:

ansible oldboy -m copy -a "src=/etc/rsyncd.conf dest=/etc/rsyncd.conf backup=yes"

ansible oldboy -m copy -a "content='rsync_backup:oldboy' dest=/etc/rsync.password backup=yes mode=0600"

編寫劇本:

[root@BOSS /etc/ansible/yaml]# cat cwj.yml

- hosts: oldboy

? tasks:

? ? - name: copy rsyncd.conf

? ? ? copy: src=/etc/rsyncd.conf dest=/etc/rsyncd.conf mode=0600 backup=yes

? ? - name: create rsyncd.password

? ? ? copy: content='rsync_backup:oldboy' dest=/etc/rsync.password mode=0600

------------------------------------------------------------------------------------------------>>>編寫完成

執(zhí)行后查看:

[root@BOSS /etc/ansible/yaml]# ansible-playbook cwj.yml

172.16.1.31 ? ? ? ?? : ok=3 ? ? changed=2 ?? unreachable=0 ? ? failed=0?

172.16.1.41 ? ? ? ?? : ok=3? ? changed=2 ? ? unreachable=0 ? ? failed=0

[root@BOSS /etc/ansible/yaml]# ansible oldboy -m shell -a "ls -l /etc/rsyncd.conf"

172.16.1.41 | CHANGED | rc=0 >>

-rw------- 1 root rsync 516 Apr 17 15:19 /etc/rsyncd.conf

172.16.1.31 | CHANGED | rc=0 >>

-rw------- 1 root root 516 Apr 25 12:01 /etc/rsyncd.conf

------------------------------------------------------------------------------>>>/etc/rsyncd.conf成功

[root@BOSS /etc/ansible/yaml]# ansible oldboy -m shell -a "ls -l /etc/rsync.password"

172.16.1.41 | CHANGED | rc=0 >>

-rw------- 1 root dengli 19 Apr 25 16:59 /etc/rsync.password

172.16.1.31 | CHANGED | rc=0 >>

-rw------- 1 root dengli 19 Apr 25 16:59 /etc/rsync.password

------------------------------------------------------------------------------------>>>/etc/password成功


實(shí)踐五

創(chuàng)建用戶和備份目錄

useradd rsync

id rsync

mkdir -p /backup

chown -R rsync.rsync /backup/

ls -ld /backup/

---------------------------------------------------------------------->>>要求

2湃望、ansible命令

ansible oldboy -m systemd -a "name=crond.service enabled=no state=stopped "

ansible oldboy -m command -a "systemctl status crond"

ansible oldboy -m systemd -a "name=crond.service enabled=yes state=started"

--------------------------------------------------------------------------------------------->>>檢查

3换衬,編寫劇本

[root@BOSS /etc/ansible/yaml]# cat lss.yml

- hosts: oldboy

? tasks:

? ? - name: copy rsyncd.conf

? ? ? copy: src=/etc/rsyncd.conf dest=/etc/rsyncd.conf mode=0600 backup=yes

? ? - name: create rsyncd.password

? ? ? copy: content='rsync_backup:oldboy' dest=/etc/rsyncd.password mode=0600

? ? - name: create user

? ? ? command: useradd rsync -s /sbin/nologin -M

? ? - name: create dir

? ? ? command: mkdir -p /backup/

? ? - name: shouquan

? ? ? command: chown -R rsync.rsync /backup/

? ? - name: startup rsyncd

? ? ? systemd: name='rsyncd.service' state=restarted enabled=yes

---------------------------------------------------------------------------------------------->>>編寫完成

執(zhí)行后檢查:

[root@BOSS /etc/ansible/yaml]# ansible-playbook lss.yml

172.16.1.31 ? ? ? ? ? : ok=7 ? ?? changed=4 ? unreachable=0 ?? failed=0

172.16.1.41 ? ? ? ? ? : ok=7 ? ? changed=4? ? unreachable=0? ? failed=0 ?

---------------------------------------------------------------------------------->>>執(zhí)行成功

測試:

NFS 上測試:

[root@NFS ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/

sending incremental file list

sent 51 bytes? received 23 bytes? 148.00 bytes/sec

total size is 332? speedup is 4.49

--------------------------------------------------------------------------->>>推送成功

BACKUP 上查看:

[root@BACKUP ~]# ll /backup/

-rw-r--r-- 1 rsync rsync 332 4月 12 15:08 hosts

--------------------------------------------------------------------------->>>完成

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市证芭,隨后出現(xiàn)的幾起案子瞳浦,更是在濱河造成了極大的恐慌,老刑警劉巖废士,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叫潦,死亡現(xiàn)場離奇詭異,居然都是意外死亡官硝,警方通過查閱死者的電腦和手機(jī)矗蕊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氢架,“玉大人傻咖,你說我怎么就攤上這事♂校” “怎么了卿操?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孙援。 經(jīng)常有香客問我害淤,道長,這世上最難降的妖魔是什么拓售? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任筝家,我火速辦了婚禮,結(jié)果婚禮上邻辉,老公的妹妹穿的比我還像新娘溪王。我一直安慰自己,他們只是感情好值骇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布莹菱。 她就那樣靜靜地躺著,像睡著了一般吱瘩。 火紅的嫁衣襯著肌膚如雪道伟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音蜜徽,去河邊找鬼祝懂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛拘鞋,可吹牛的內(nèi)容都是我干的砚蓬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盆色,長吁一口氣:“原來是場噩夢啊……” “哼灰蛙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隔躲,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤摩梧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后宣旱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仅父,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年浑吟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驾霜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡买置,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出强霎,到底是詐尸還是另有隱情忿项,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布城舞,位于F島的核電站轩触,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏家夺。R本人自食惡果不足惜脱柱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拉馋。 院中可真熱鬧榨为,春花似錦、人聲如沸煌茴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔓腐。三九已至矩乐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背散罕。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工分歇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欧漱。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓职抡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親硫椰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子繁调,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容