角色的结构

角色结构

利用角色构造ansible playbook

随着开发更多的playbook,我们可能会发现有很多机会重复利用以前缩写的playbook中的代码。或许,一个用于为某一应用配置MySQL数据库的play可以改变用途,通过利用不同的主机名、密码和用户来为另一个应用配置MySQL数据库。

但在现实中,这个play可能比较冗长且复杂,有许多包含或导入的文件,以及用于管理各种情况的任务和处理程序。将所有这些代码复制到另一playbook中可能比较困难。

  • Ansible角色具有下列优点:
    • 角色可以分组内容,从而与他人轻松共享代码
    • 可以编写角色来定义系统类型的基本要素:Web服务器、数据库服务器、Git存储库,或满足其他用途
    • 角色使得较大型项目更容易管理
    • 角色可以由不同的管理员并行开发

除了自行编写、使用、重用和共享角色外,还可以从其他来源获取角色。一些角色已包含在rhel-system-roles软件包中,用户也可以从Ansible Galaxy网站获取由社区提供支持的许多角色。

role结构

  • Ansible角色由子目录和文件的标准化结构定义
  • 顶级目录定义角色本身的名称
  • 文件整理到子目录中,子目录按照各个文件在角色中的用途进行命名
    以下tree命令显示了user.example角色的目录结构:
[root@localhost roles]# tree user.example/
user.example/    //角色的名字,自行设置
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

Ansible角色子目录

子目录功能
defaults此目录中的main.yml文件包含角色变量的默认值,使用角色时可以覆盖这些默认值。
这些变量的优先级较低,应该在play中更改和自定义。
files此目录包含由角色任务引用的静态文件
handlers此目录中的main.yml文件包含角色的处理程序定义
meta此目录中的main.yml文件包含与角色相关的信息,如作者、许可证、平台和可选的角色依赖项。
tasks此目录中的main.yml文件包含角色的任务定义
templates此目录包含由角色任务引用的Jinja2模板
tests此目录可以包含清单和名为test.yml的playbook,可用于测试角色
vars此目录中的main.yml文件定义角色的变量值。
这些变量通常用于角色内部用途。
这些变量的优先级较高,在playbook中使用时不应更改

注:并非每个角色都拥有所有这些目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值