2019-04-25

12.8 playbook

12.8.1 什么是playbook?

把所有操作按照ansible編程語法猜憎,放在文件里執(zhí)行就是playbook朴皆。

?12.8.2 ansible劇本編寫格式說明

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

規(guī)則一:縮進 yaml使用一個固定的縮進風格表示數(shù)據(jù)層結構關系辉哥,需要每個縮進級別由兩個空格組成缭黔。切記一定不能使用tab鍵進行縮進。

規(guī)則二:冒號 每個冒號后面一定要有一個空格(以冒號結尾不需要空格柬讨,表示文件路徑的模版可以不需要空格)

規(guī)則三:短橫線 想要表示列表項扒接,使用一個短橫杠加一個空格伪货。

多個項使用同樣的縮進級別作為同一個列表的一部分

1.YAML介紹 YAML是一個可讀性高的用來表達資料序列的格式们衙。

YAML參考了其他多種語言,包括:XML碱呼、C語言蒙挑、Python、Perl以及電子郵件格式RFC2822等愚臀。

Clark Evans在2001年在首次發(fā)表了這種語言忆蚀,另外Ingy dt Net與Oren Ben-Kiki也是這語言的共同設計

者。

YAML Ain't Markup Language姑裂,即YAML不是XML馋袜。

不過,在開發(fā)的這種語言時炭分,YAML的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)桃焕。

其特性: YAML的可讀性好 YAML和腳本語言的交互性好 YAML使用實現(xiàn)語言的數(shù)據(jù)類型 YAML有一個一

致的信息模型 YAML易于實現(xiàn) YAML可以基于流來處理 YAML表達能力強,擴展性好 更多的內容及規(guī)范參

http://www.yaml.org捧毛。

?12.8.3 playbook替代方案 playbook

替代方案1:不同樣

?[root@m01 ~]# cat ansible.sh #判斷 循環(huán)观堂,可以腳本實現(xiàn)。

ansible oldboy -m file -a "dest=/tmp/oldboy_file state=touch"

ansible oldboy -m file -a "dest=/tmp/oldboy_file state=touch owner=oldboy group=oldboy mode=ugo=rwx"

?ansible oldboy -m yum -a "name=nginx state=installed"

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

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

?playbook替代方案2:通用

[root@m01 ~]# cat ~/set.sh touch /tmp/oldboy_file chown oldboy.oldboy /tmp/oldboy_file yum install nginx -y /etc/init.d/crond start chkconfig cornd on echo '#sync time oldboy' >>/var/spool/cron/root echo '00 00 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >>/var/spool/cron/root

執(zhí)行: ansible oldboy -m script -a "~/set.sh"

12.8.4實踐

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

把這行命令寫成劇本: 準備:

mkdir -p /etc/ansible/yaml cd /etc/ansible/yaml vim p1.yml

?開始編寫:

[root@m01 /etc/ansible/yaml]# cat /etc/ansible/yaml/p1.yml - hosts: oldboy tasks: - name: Create a log

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

?[root@m01 /etc/ansible/yaml]# cat p2.yml

- hosts: oldboy

???tasks:

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

[root@m01 /etc/ansible/yaml]# ansible-playbook -C /etc/ansible/yaml/p1.yml

說明:利用ansibl-playbook命令執(zhí)行劇本呀忧,-C參數(shù)表示測試劇本任務執(zhí)行师痕,類似話劇的彩排一樣。

PLAY [oldboy] *********************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************** ok: [172.16.1.41] ok: [172.16.1.31] TASK [Create a log file] ************************************************************************************************ skipping: [172.16.1.41] skipping: [172.16.1.31] PLAY RECAP ************************************************************************************************************** 172.16.1.31 : ok=1 changed=0 unreachable=0 failed=0 172.16.1.41 : ok=1 changed=0 unreachable=0 failed=0 執(zhí)行: [root@m01 /etc/ansible/yaml]# ansible-playbook /etc/ansible/yaml/p1.yml PLAY [oldboy] *********************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************** ok: [172.16.1.31] ok: [172.16.1.41] TASK [Create a log file] ************************************************************************************************ changed: [172.16.1.31] changed: [172.16.1.41] PLAY RECAP **************************************************************************************************************

172.16.1.31 : ok=2 changed=1 unreachable=0 failed=0 172.16.

1.41 : ok=2 changed=1 unreachable=0 failed=0 ansible oldboy -m file -a "dest=/tmp/oldboy1 state=touch"

編寫劇本:

?[root@m01 /etc/ansible/yaml]# cat p3.yml

- hosts: oldboy remote_user: root

tasks:

- name: Create New File

file: name=/tmp/oldboy1 state=touch

定時任務:

ansible oldboy -m cron -a "name='sync time' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'" #crond-id-001:time sync by oldboy */5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1

編寫劇本:

?[root@m01 /etc/ansible/yaml]# cat p4.yml

- hosts: oldboy

?tasks:

- name: Cron time sync

cron: name='sync time' minute=*/10 job='/usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1'

練習題:每周一1-5 上午8:30 /server/scripts/class.sh 編寫劇本:

[root@m01 /etc/ansible/yaml]# cat p5.yml

- hosts: oldboy

tasks:

- name:

Cron

1而账、Linux命令行操作 #3)創(chuàng)建用戶和備份目錄

?useradd rsync

?id rsync

mkdir -p /backup

chown -R rsync.rsync /backup/

?ls -ld /backup/

?#4)啟動和檢查

systemctl start rsyncd

?systemctl enable rsyncd

systemctl status rsyncd

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@m01 ~]# cat /etc/ansible/yaml/p6.yml

- hosts: backup

?tasks:

- name: copy rsyncd.conf

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

?- name: create rsync.password

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

?- name: create

user 用user模塊 替代 command: useradd rsync -s /sbin/nologin -M - name: create dir

用file模塊替代 command: mkdir -p /backup - name: shouquan

用file模塊替代 command: chown -R rsync.rsync /backup/ - name: startup rsyncd systemd: name='rsyncd.service' state=restarted enabled=yes

執(zhí)行三部曲: ansible-playbook --syntax-check /etc/ansible/yaml/p6.yml ansible-playbook -C /etc/ansible/yaml/p6.yml ansible-playbook /etc/ansible/yaml/p6.yml

檢測結果: rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 今晚25日項目實踐一分鐘內泞辐,

一鍵完成三個項目的安裝: 使用playbook完成如下配置:

1)各一鍵完成rsync服務端和客戶端笔横。 #完成

?2)各一鍵完成nfs服務端和客戶端。

3)各一鍵完成sersync服務端和客戶端咐吼。

一個腳本one_key.sh或者一個ansible命令吹缔。

完成

- name: This command will change the working directory to somedir/ and will only run when /path/to/database doesn't exist. command: /usr/bin/make_database.sh arg1 arg2 args: chdir: somedir/ creates: /path/to/database

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锯茄,隨后出現(xiàn)的幾起案子厢塘,更是在濱河造成了極大的恐慌,老刑警劉巖肌幽,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晚碾,死亡現(xiàn)場離奇詭異,居然都是意外死亡喂急,警方通過查閱死者的電腦和手機格嘁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廊移,“玉大人糕簿,你說我怎么就攤上這事涣易。” “怎么了冶伞?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長步氏。 經(jīng)常有香客問我响禽,道長,這世上最難降的妖魔是什么荚醒? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任芋类,我火速辦了婚禮,結果婚禮上界阁,老公的妹妹穿的比我還像新娘侯繁。我一直安慰自己,他們只是感情好泡躯,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布贮竟。 她就那樣靜靜地躺著,像睡著了一般较剃。 火紅的嫁衣襯著肌膚如雪咕别。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天写穴,我揣著相機與錄音惰拱,去河邊找鬼。 笑死啊送,一個胖子當著我的面吹牛偿短,可吹牛的內容都是我干的。 我是一名探鬼主播馋没,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼昔逗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了披泪?” 一聲冷哼從身側響起纤子,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎款票,沒想到半個月后控硼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡艾少,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年卡乾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缚够。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡幔妨,死狀恐怖鹦赎,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情误堡,我是刑警寧澤古话,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站锁施,受9級特大地震影響陪踩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜悉抵,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一肩狂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姥饰,春花似錦傻谁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岂座,卻和暖如春力图,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掺逼。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工吃媒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吕喘。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓赘那,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氯质。 傳聞我的和親對象是個殘疾皇子募舟,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內容