ansible的playbook劇本

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

 ansible-playbook -C xx.yml  測試的時候先驗證語法 

分析劇本內容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,安裝變化,啓動變化
View Code

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
相關文章
相關標籤/搜索