利用角色簡化playbook
ansible角色具有下列優點:
- 角色可以把內容分組,容易複用
- 可以用角色定義系統基本信息:web服務器、數據庫服務器等
- 角色可以使大型項目易管理
- 角色可以由不同人並行開發
ansible角色會把不同功能的playbook分開,一個標準的角色含有下列子目錄:
- defaults: 其中的main.yml包含角色變量的默認值
- files: 包含角色任務引用的靜態文件
- handlers: 主要定義處理程序
- meta: 角色相關信息,如作者、許可證等
- tasks: 定義任務
- templates:任務引用的jinja2模板
- tests: 可以包含清單和test.yml的playbook,用於測試
- vars: 定義角色的變量
在playbook中使用ansible角色
如:
---
- hosts: xxx.xxx.com
roles:
- role1
- role2
var1:var1
var2:var2
爲role2定義了兩個變量,任何defaults和vars中的變量都會被覆蓋
控制執行順序
有時需要在角色之前或之後執行一些任務:
關鍵字:
- 之前:pre_tasks
- 之後:post_tasks
利用系統角色重用內容
安裝系統角色
yum install -y rhel-system-roles
安裝好的角色位於:
ls -l /usr/share/ansible/roles
ls -l /usr/share/ansible/roles/rhel-system-roles.network
查看系統中有哪些角色可以使用
ansible-galaxy list
創建目錄保存變量
mkdir-pvgroup_vars/all
查看幫助
cat /usr/share/doc/rhel-system-roles/timesync/README.md
時區設置的例子
ansible-doc timezone | grep -A 4 "EXAMPLES"
清單和配置文件
cat ansible.cfg
cat inventory
修改主playbook
創建針對主機組的變量目錄
mkdir -pv group_vars/webservers
新建時間yml文件並寫入
cat group_vars/webservers/timezone.yml
檢測和運行
ansible-playbook --syntax-check configure_time.yml
ansible-playbook configure_time.yml
創建角色
角色創建流程:
- 創建角色目錄結構
- 定義角色內容
- 在playbook中使用角色
創建角色框架
創建並初始化
配置tasks的play
編寫處理程序
編寫html文件
配置模板
編寫使用roles的playbook
'這裏使用的主機清單是系統默認的'