Ansible 利用角色简化playbook
1.描述角色结构
1.1 利用角色构造ansible playbook
ansible角色提供了一种方法,让用户能以通用的方式更加轻松地重复利用ansible代码。我们可以在标准化目录结构中打包所有任务、变量、文件、模板以及调配基础架构或部署应用所需的其他资源。只需要通过复制相关的目录,将角色从一个项目复制到另一个项目。然后,只需从一个play调用该角色就能执行它。
ansible角色具有下列优点:
- 角色可以分组内容,从而与他人轻松共享代码
- 可以编写角色来定义系统类型的基本要素:web服务器、数据库服务器、Git存储库,或满足其他用途
- 角色使得较大型项目更容易管理
- 角色可以由不同的管理员并行开发
除了自行编写、使用、重用和共享角色外,还可以从其他来源获取角色。一些角色已包含在rhel-system-roles软件包中,用户也可以从Ansible Galaxy网站获取由社区提供支持的许多角色。
1.2 检查ansible角色结构
ansible角色由子目录和文件的标准化结构定义。顶级目录定义角色本身的名称。文件整理到子目录中,子目录按照各个文件在角色中的用途进行命名,如tasks和handlers。files和templates子目录中包含由其他YAML文件中的任务引用的文件。
site.yml playbook
webservers.yml playbook
fooservers.yml playbook
roles/ 角色
common/ 通用(里面的东西分别独立,可以组装)
tasks/
handlers/
files/
templates/
vars/
defaults/
meta/
webservers/
tasks/
defaults/
meta/
以下tree命令显示了user.example角色的目录结构:
[root@localhost roles]# tree user.example/
user.example/
├── defaults
│ └── main.yml(主要的,从这里执行)
├── files
├── h