1. 程式人生 > >ansible-playbook劇本基礎(一)

ansible-playbook劇本基礎(一)

centos7 opp serve write mct -c 實驗 blog remote

ansible的劇本是使用yaml語言進行編寫的,基本語法如下:

基本語法:
1、大小寫
2、同級別要對齊,縮進表示層級
3、縮進不允許使用Tab鍵
4、縮進空格數不規定,相同元素區分即可


支持的數據結構:
1、對象:鍵值對集合,又稱映射/哈希/字典
例如:name:example 鍵:值
2、數組:一組按次序排列的值,又稱序列/列表/
例如:-apple
3、純量:單個的、不再分的值
例如:number:12.30
sure:true


play-book劇本
通過tasks調用ansible的模板將多個play組織在一個playbook中運行。
palybook構成部分:
(1)tasks:任務,相當於執行事務

(2)variables:變量(定義場景:hosts文件;劇本中;命令中)
(3)templates:模板
(4)handlers:處理器,滿足條件,觸發執行操作
(5)roles:角色


一個簡單的playbook小示例:
實驗環境:兩臺centos7,一臺ansible服務器,一臺測試機。
ansible服務器地址:192.168.71.128
測試機服務器地址:192.168.71.129

vim /opt/book.yml      #首先創建一個以.yml為結尾的文件
- hosts: webserver           #hosts定義了配置文件中的組名
  remote_user: root          #劇本中的演員:root用戶,也可以是你推送秘鑰的任意用戶
  tasks:                              #任務,以下是執行什麽任務
   - name: download apache          #自行定義的名稱
     yum: name=httpd                        #指定模塊,模塊後跟相對應的操作
   - name: stopped firewalld
     service: name=firewalld state=stopped
   - name: stopped selinux
     command: ‘/usr/sbin/setenforce 0‘
   - name: copy index.html
     template: src=/opt/index.html dest=/var/www/html/index.html          #這裏的模板要註意,需要創建推送的文件並寫入你指定的內容。
   - name: started apache
     service: name=httpd state=started
檢查yml文件中語法的正確性

ansible-playbook book.yml --syntax-check #檢查yaml語法
ansible-playbook book.yml --list-tasks #檢查tasks任務
ansible-playbook book.yml --syntax-hosts #檢查生效的主機
ansible-playbook book.yml --start-at-task=‘Copy Nginx.conf

執行過程如下:
技術分享圖片

效果圖如下:
技術分享圖片


playbook劇本一些常用的操作

1、觸發器調用

- hosts: webserver            #定義主機組
  vars:                       #定義變量
    http_port: 80            
    max_clients: 200
  users:root
  tasks:                      #執行的任務
    - name: write the apache config file
    template: src=/srv/httpd,j2 dest=/etc/httpd.conf
    notify:                    #調用觸發以下操作
    - restart apache
  - name: ensure apache is running
    service: name=httpd state=started
  handlers:                    #處理器,給notify調用的命令,不調用不進行任何操作。
    - name: restart apache 
      service: name=httpd state=restarted

2、執行錯誤,跳過改操作繼續執行

- hosts: webserver
  remote_user: root
  tasks:
  - name: create mysql
    user:                      #這裏不添加任何的實質性操作,會報錯
    ignore_errors: true       #添加該行後出錯跳過,繼續執行
  - name: apache status
    command: ‘systemctl status httpd‘

技術分享圖片

ansible-playbook劇本基礎(一)