1. 程式人生 > >Ansible之playbooks

Ansible之playbooks

images 生效 tor 用戶 sts 忘記 strong ebs boa

playbook是一個或多個“paly”組成的列表。play的主要功能在於將事先並歸為一組的主機扮成事先通過ansible中task定義好的角色,從根本上將,所謂的task就是調用ansible的一個module。將多個play組織的一個playbook中就可以讓它們連同起來按事先安排的機制同唱一臺大戲。

下面是一個簡單的示例

/etc/ansible/playbooks/nginx.yml

技術分享

分析

1、定義了執行的遠程主機是 webservers組,這個組定義主機有(192.168.88.2,192.168.88.3)
2、定義了變量,這個變量可以運用到我們模板文件中(nginx2.conf)
3、定義了遠程主機執行任務的是用戶root
      remote_usery也可用於各task中,支持通過sudo的方式在遠程主機上執行任務,其可用於play全局後某任務;此外,設置可以在sudo時使用sudo_user指定sudo時切換的用戶
     - hosts: webnodes
           remote_user: heboan
           tasks:
               - name: test connection
                  ping:
                  remote_user: heboan
                  sudo: yes
      
4、任務列表:定義了5個任務
      ①create directory /data/www
      ②copy index.html
      ③install nginx is at the latest version
      ④start nginx
      ⑤write the nginx config file
      其中任務⑤是替換配置文件,我們都知道nginx配置文件變更需要重啟才會生效,所以這裏關聯了一個[restart nginx]的handlers
5、因為有關聯操作,所以我們需要定義handlers

模板文件(/etc/ansible/templates/nginx/nginx2.conf)

註意(第14行我忘記了分號結尾,需要補上)

技術分享

分析:

我們這個模板用到了我們在nginx.yml中定義的變量

運行劇本

技術分享

包含文件,鼓勵復用

當多個playbook涉及復用的任務列表時,可以將復用的內容剝離出來,寫到獨立的文檔當中最後在需要的地方include進來即可。示例如下:

【tasks/foo.yml】
---
# possibly saved as tasks/foo.yml
- name: placeholder foo
  command: /bin/foo
- name: placeholder bar
  command: /bin/bar
然後就可以在使用的playbook中include進來,如:
tasks:
- include: tasks/foo.yml

  

Ansible之playbooks