Ansible之playbooks
阿新 • • 發佈:2017-11-06
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