1.0 在playbook中定義變數
cat ns.yml
---
- hosts: web
gather_facts: no
remote_user: root
vars: #定義變數
- work_dir: /usr/local
- nginx_version: 1.16
tasks:
- name: "創建目錄"
shell: mkdir "{{work_dir}}/nginx{{nginx_version}}" #參考變數
2.0 include和import區別
| 名稱 | 執行方法 | 特點 |
|---|---|---|
| import | import*(靜態):在Playbook決議時預先匯入 | .不能與回圈一起使用,將變數用于目標檔案或者角色名稱時,不能使用inventory(主機/主機組等) |
| include | include* (動態):在運行時匯入 | --list-tags, --list-tasks不會顯示到輸出,不能使用notify觸發來自include*內部處理程式名稱(handlers) |
3.0 實戰import_playbook

由一個主檔案加多個分解任務組成,運行主檔案,自動去讀取不同任務檔案,如圖所示

3.1撰寫組態檔
cat lnmp.yml
---
#主組態檔
- import_playbook: nginx.yml
- import_playbook: php.yml
- import_playbook: mysql.yml
cat nginx.yml
---
#安裝nginx
- hosts: web
gather_facts: no
tasks:
- name: "安裝nginx"
debug: msg="install nginx"
cat mysql.yml
---
#安裝mysql
- hosts: web
gather_facts: no
tasks:
- name: "安裝mysql"
debug: msg="install mysql"
cat php.yml
---
#安裝php
- hosts: web
gather_facts: no
tasks:
- name: "安裝php"
debug: msg="install php"
#上面的yml檔案只是為了測驗,具體使用方法參考上一章檔案
3.2測驗lnmp專案一件部署
ansible-playbook lnmp.yml

說明分解任務成功,執行主組態檔會去找相應的子組態檔執行,
4.0 實戰import_playbook

4.1撰寫yml檔案
cat main.yml
---
#主組態檔
- hosts: web
gather_facts: no
tasks:
- include_tasks: task1.yml #任務一
- include_tasks: task2.yml #任務二
任務一
cat task1.yml
---
- name: "任務 task1"
debug: msg="task1"
任務二
cat task2.yml
---
- name: "任務 task2"
debug: msg="task2"
4.2執行測驗
ansible-playbook main.yml

如圖所示,執行主組態檔,分別去執行兩個子任務,至此 include測驗ok
5.0roles 角色管理
5.1 Roles目錄結構
site.yml #主組態檔
hosts #主機清單
roles/
common/
files/ #角色部署時用到的檔案,例如安裝包
templates/ #角色部署時用到的模板
tasks/ #包含校色要執行的主要任務串列
handlers/ #包含校色使用的處理程式
vars/ #校色其他的變數
defaults/ #校色默認的變數
meta/ #角色定義的一些元資料
5.2測驗
定義主組態檔
cat site.yml
- hosts: web
gather_facts: no
roles:
- common
- nginx
- php
定義清單組態檔
cat hosts
[web]
192.168.1.21
192.168.1.22
mkdir -p roles/{common,nginx,php}/{files,templates,tasks,handlers}

ansible-playbook site.yml

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287847.html
標籤:其他
