1、playbook劇本介紹php
1)playbook介紹html
Playbooks是Ansible的配置,部署和編排語言。它們能夠描述您但願遠程系統執行的策略,或通常IT流程中的一組步驟。
若是說ansible 模塊 是你車間裏的工具,那麼playbooks 是你的說明書/使用手冊,而且資源清單上的主機是你的原材料。
在基本層面上,劇本能夠用於管理遠程主機的配置與部署,在更高的一層來講,它們能夠對涉及滾動更新的多層發佈任務進行排序,而且能夠將操做委派給其餘主機,同時與監視服務器和負載平衡器進行交互。
在ansible 上使用Playbooks是一種徹底不一樣於adhoc的任務執行模式,而且特別強大。簡單地說,playbooks是一個很是簡單的配置管理和多機器部署系統的基礎,以及很是適合部署複雜應用程序的系統。
Playbooks能夠對任務進行編排,就像咱們要安裝一個程序,寫個安裝shell腳本同樣,在哪一步複製配置文件,最後一步啓動服務。
雖然/usr/bin/ansible 能夠運行一些臨時任務,可是針對複雜的配置,而且能夠將配置標準化,這個時候就須要Playbooks了。
2)寫簡單的playbook劇本,tree_install.ymlnginx
[root@web01 ~]# cat ansible_test/tree_install.yml --- - hosts: web01 tasks: - name: Installs tree yum: name=tree state=installed update_cache=true
劇本寫好了,須要先測試一下語法web
分析劇本內容shell
--- - hosts: web01 tasks: - name: Installs tree yum: name=tree state=installed update_cache=true =======分析========= hosts 執行的主機。在 /etc/ansible/hosts tasks 任務 name 任務名字 yum 執行的命令操做 yum install tree -y name=tree ==>指要安裝的名字,update_cache=true ==> 至關於 y
執行記錄服務器
第一次執行 [root@web01 ~]# ansible-playbook ansible_test/tree_install.yml PLAY [web01] ************************************************************************************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************************************************************************** ok: [192.168.10.25] ok: [myweb] TASK [Installs lrzsz] *************************************************************************************************************************************************************** changed: [myweb] changed: [192.168.10.25] PLAY RECAP ************************************************************************************************************************************************************************** 192.168.10.25 : ok=2 changed=1 unreachable=0 failed=0 myweb : ok=2 changed=1 unreachable=0 failed=0 返回狀態:ok=2(執行成功) changed=1(命令執行成功) 第二次再執行 [root@web01 ~]# ansible-playbook ansible_test/tree_install.yml PLAY [web01] ************************************************************************************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************************************************************************** ok: [192.168.10.25] ok: [myweb] TASK [Installs lrzsz] *************************************************************************************************************************************************************** ok: [192.168.10.25] ok: [myweb] PLAY RECAP ************************************************************************************************************************************************************************** 192.168.10.25 : ok=2 changed=0 unreachable=0 failed=0 myweb : ok=2 changed=0 unreachable=0 failed=0 返回狀態:ok=2(執行成功) changed=0(已經安裝了)
等同於 ansible web01 -m yum -a "name=tree state=present update-cache=true"ide
等同於ansible web01 -a "yum install tree -y" 工具
3)playbook劇本安裝nginx並啓動他測試
[root@web01 ~]# cat ansible_test/nginx_install.yml --- - hosts: nginx01 tasks: - name: Installs nginx web server yum: name=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started
執行結果分析spa
[root@web01 ~]# ansible-playbook ansible_test/nginx_install.yml PLAY [nginx01] ********************************************************************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************************************************************************** ok: [k8s1_192_168_10_41] TASK [Installs nginx web server] **************************************************************************************************************************************************** changed: [k8s1_192_168_10_41] RUNNING HANDLER [start nginx] ******************************************************************************************************************************************************* changed: [k8s1_192_168_10_41] PLAY RECAP ************************************************************************************************************************************************************************** k8s1_192_168_10_41 : ok=3 changed=2 unreachable=0 failed=0 結果分析ok=3,鏈接OK,安裝OK,啓動ok changed=2,安裝變化,啓動變化
4)以指定主機iP的形式提交任務,須要加上 -l
ansible-playbook -l 192.168.10.176 nginx_install.yml
測試未經過
5) 安裝nginx並拷貝文件
--- - hosts: all tasks: - name: Installs nginx web server yum: name=nginx state=installed update_cache=true notify: - start nginx - name: Upload default index.html for host copy: src=static_files/index.html dest=/usr/share/nginx/html/ mode=0644 handlers: - name: start nginx service: name=nginx state=started
6)調用shell命令
[root@k8s6 ansible_yml]# cat shell.yml --- - hosts: web tasks: - name: shell_test shell: ss -tnl|grep :22
2、playbook劇本的深刻操做
1)任務執行結果判斷,register
--- - hosts: all tasks: - name: Installs nginx web server yum: name=nginx state=installed update_cache=true notify: - start nginx - name: Upload default index.html for host copy: src=static_files/index.php dest=/usr/share/nginx/html/ mode=0644 register: php ignore_errors: True
# 若是任務php執行成功,執行該任務 - name: Remove index.html for host command: rm /usr/share/nginx/html/index.html when: php|success
# 若是任務php執行失敗,執行該任務 - name: Upload default index.html for host copy: src=static_files/index.html dest=/usr/share/nginx/html/ mode=0644 when: php|failed handlers: - name: start nginx service: name=nginx state=started
分析關鍵字
執行該任務,並註冊任務名字 register: php php任務執行成功後執行 when: php|success php任務執行失敗後執行 when: php|failed