自動化運維之playbook

****前言****
前段時間總結(jié)了ansible的基本配置與使用傀履,那么說到了ansible的話呢捡多,playbook是必不可少的撑帖,playbook在我看來就是一個花花公子-playboy!


****playbook的介紹****
Playbooks are a completely different way to use ansible than in adhoc task execution mode, and are particularly powerful.
顧名思義肿孵,playbooks是一個"劇本",不同于ansible的使用方式唠粥,它是按照編排的任務(wù)智能地執(zhí)行,并且非常強大停做!
Simply put, playbooks are the basis for a really simple configuration management and multi-machine deployment system, unlike any that already exist, and one that is very well suited to deploying complex applications.
簡單地來說呢晤愧,playbooks適合簡單的配置管理以及多服務(wù)器機器的管理,同時還可以處理部署復(fù)雜的應(yīng)用雅宾。
要是服務(wù)器不僅僅復(fù)雜养涮,數(shù)量上還是成千上萬的呢,還是推薦使用重量級又古老文明的saltstack眉抬。
傳送ansible文檔詳解
自動化運維之a(chǎn)nsible


****playbook基礎(chǔ)語法****
playbook使用了YAML格式的語法贯吓,該語法還是相當(dāng)簡單的,可以體驗出程序構(gòu)造或執(zhí)行的過程蜀变。那么還是具體查看簡單的一個實例悄谐!
在docker服務(wù)器組使用root用戶執(zhí)行更新源命令,如下:

- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "初始化更新源列表"
     command: apt-get update

語法注意:"-"以及":"后面都需要一個空格库北。
語法已經(jīng)主意了吧~~~該注意該注意的內(nèi)容了爬舰,從上面的實例額可以看出有兩個必須的屬性,那就是服務(wù)器主機hosts以及遠程用戶remote_user寒瓦,有了它們就可以干點其它事了tasks情屹,自然而然在playbook執(zhí)行任務(wù)是需要通過模塊的來操控的。
使用命令檢查yaml的語法

ansible-playbook main.yml --syntax-check
Alic_yml_check

****playbook模塊化task****
(⊙v⊙)嗯~~~模塊化的理論就不一一說明了杂腰,實踐通過時間來領(lǐng)悟理論精華垃你。該是動手的時候了!

  • command
# 在docker服務(wù)器組執(zhí)行一條命令
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "初始化更新源列表"
     command: apt-get update

說明:name的屬性就是一個任務(wù)的昵稱喂很,自定義惜颇。

  • shell
# 在docker服務(wù)器組執(zhí)行shell命令
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "刪除/home/alic/demo.sh"
     shell: rm -f /home/alic/demo.sh
  • script
# 在docker服務(wù)器組執(zhí)行控制節(jié)點本地的shell腳本
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "被控節(jié)點執(zhí)行控制節(jié)點的shell腳本"
     script: ../scripts/alic.sh
Alic_demo_dir_tree
  • copy
# 將控制節(jié)點的文件上傳到docker服務(wù)器【被控節(jié)點】上
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "控節(jié)點文件cp到被控制節(jié)點服務(wù)器"
     copy:
       src=/etc/ansible/hosts 
       dest=/etc/ansible/hosts 
       owner=root 
       group=root 
       mode=0644

注意:src代表控制節(jié)點路徑,dest代表被控節(jié)點路徑少辣,其它的為可選項目凌摄,顧名思義。

  • yum
# 在docker用戶組以root用戶安裝vim編輯器
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "我正在在centOS安裝vim呢~~~"
     yum: name=vim state=latest

說明:name為安裝某某的名稱漓帅,state則為安裝的版本锨亏,yum該模塊僅僅適合contOS相似的發(fā)行版,對于ubuntu呢忙干,還是推薦使用原生的bash咯~~~

  • service
# 在docker用戶組以root用戶重啟apache2
- hosts: docker
  remote_user: root
  gather_facts: True
  tasks:
   - name: "我正在啟動apache2服務(wù)器~~~"
     service: name=apache2 state=restarted

說明:service的狀態(tài)與我們平常使用的多了-ed stsrted stoped restarted

  • notify 與 handlers
    使用一句英文更好地闡述兩者的關(guān)系
    The things listed in the notify
    section of a task are called handlers.
    還是說一下中文吧~~~
    notify是一個通知屯伞,實質(zhì)上也是一個任務(wù),不同的是使用handlers定義的任務(wù)豪直,handlers里面定義的任務(wù)相當(dāng)于定義方法劣摇,提高復(fù)用性!
- hosts: docker
  remote_user: root
  tasks:
    - name: "test notify"
      shell: ls
      notify: 
        - restart apache2
  handlers:
    - name: restart apache2
      service: name=apache2 state=restarted
  • vars
    先說明一下弓乙,很明顯vars模塊用戶聲明變量
# vars 變量的定義與使用
- hosts: docker
  remote_user: root
  vars: 
     config_path: "/root/application/sise.conf"
  tasks:
    - name: "test notify"
      command: touch {{config_path}}

然而說到變量還可以這樣使用:在yml使用變量末融,在執(zhí)行playbook命令是額外賦值,注意記得加上引號 "{{var}}"
ansible-playbook main.yml --extra-vars hosts=docker

 hosts: "{{hosts}}"
  remote_user: root
  vars: 
  - dir_name: "public"
  tasks: 
  - name: create dir
    shell: mkdir {{dir_name}}
Alic_--extra-vars
  • when
    (⊙o⊙)嗯~~~暇韧,when在運維時是一個重點勾习,不同Linux的發(fā)行版呢,有些命令就不一樣懈玻,但都是了解到了條件即可switch地處理巧婶。好比如yum只有centOS,RedHat等發(fā)行版才具有的包管理命令工具
    重點:when主要用于處理不同的操作系統(tǒng)與處理邏輯上。
- hosts: docker
  remote_user: root
  tasks:
   - name: "我正在紅帽子安裝vim呢~~~"
     yum: name=vim state=latest
     when: ansible_os_family == "RedHat"
  • with_items
# 便利迭代 + when
- hosts: docker
  remote_user: root
  tasks:
    - command: echo {{ item }}
      with_items: [ 0, 2, 4, 6, 8, 10 ]
      when: item > 5
便利迭代 + when

****Tips and Tricks For Ansible-book Command****
1 查看任務(wù)所指定的host列表

$ ansible-playbook main.yml --list-hosts
Alic-查看任務(wù)所指定的host列表

2 If you need to specify a password to sudo, run ansible-playbook
with --ask-pass
or when using the old sudo syntax --ask-sudo-pass
即當(dāng)你使用普通用戶執(zhí)行命令需要輸入密碼時可使用

$ ansible-playbook main.ym --ask-sudo-pass --ask-pass
Alic_密碼交互

3 獲取docker server-group主機的所有基本信息
既然可以獲取主機信息 當(dāng)時用when的時候艺栈,該命令就其很大作用了英岭!

$ ansible docker -m setup
Alic_還有很多message沒有截取

4 直接通過ansible-playbook命令來指定主機

$ ansible-playbook playbook.yml --limit docker

嘿嘿~~~這個野蠻好的( ⊙o⊙ )哇,有時候我想在某臺服務(wù)器搭建nginx的話湿右,task只寫好模板诅妹,需要的服務(wù)器就在執(zhí)行命令指定host或服務(wù)器組即可!

****Demo實踐目錄樹****

Demo實踐目錄樹

自動化運維之a(chǎn)nsible


****價值源于技術(shù)毅人,貢獻源于分享****

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吭狡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丈莺,更是在濱河造成了極大的恐慌划煮,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缔俄,死亡現(xiàn)場離奇詭異般此,居然都是意外死亡,警方通過查閱死者的電腦和手機牵现,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門铐懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞎疼,你說我怎么就攤上這事科乎。” “怎么了贼急?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵茅茂,是天一觀的道長。 經(jīng)常有香客問我太抓,道長空闲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任走敌,我火速辦了婚禮碴倾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掉丽。我一直安慰自己跌榔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布捶障。 她就那樣靜靜地躺著僧须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪项炼。 梳的紋絲不亂的頭發(fā)上担平,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天示绊,我揣著相機與錄音,去河邊找鬼暂论。 笑死面褐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的空另。 我是一名探鬼主播盆耽,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蹋砚,長吁一口氣:“原來是場噩夢啊……” “哼扼菠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坝咐,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤循榆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后墨坚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秧饮,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年泽篮,在試婚紗的時候發(fā)現(xiàn)自己被綠了盗尸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡帽撑,死狀恐怖泼各,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亏拉,我是刑警寧澤扣蜻,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站及塘,受9級特大地震影響莽使,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜笙僚,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一芳肌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肋层,春花似錦庇勃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掂铐,卻和暖如春罕拂,著一層夾襖步出監(jiān)牢的瞬間揍异,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工爆班, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衷掷,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓柿菩,卻偏偏與公主長得像戚嗅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢舶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

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