循环
迭代:with_items
标准循环
以创建多个文件和用户为例
1 |
|
嵌套循环
循环也可以嵌套:
1 | - name: give users access to multiple databases |
和以上介绍的’with_items’一样,你也可以使用预定义变量.:
Playbook中template for if
for循环和if条件判断的语法格式
1 | {% for x in list %} |
案例
1 |
|
1 | {% for port in ports %} |
补充:yaml中vars变量还可以采用列表嵌套字典的方式,定义更多的键值对。
role
Roles 的概念来自于这样的想法:通过 include 包含文件并将它们组合在一起,组织成一个简洁、可重用的抽象对象。这种方式可使你将注意力更多地放在大局上,只有在需要时才去深入了解细节。
- role提高了playbook的复用率
role的推荐目录为
/etc/ansible/roles
1 | roles/ |
场景模拟
每个角色,以特定的层级目录结构进行组织。
roles 目录结构: playbook.yml roles/ project/ tasks/ files/ vars/ templates/ handlers/ default/ meta/
Roles 各目录作用: roles/project/
:项目名称,有以下子目录
files/
:存放由 copy 或 script 模块等调用的文件templates/
:template 模块查找所需要模板文件的目录tasks/
:定义 task,role 的基本元素,至少应该包含一个名为 main.yml 的文件;其它的文件需要在此文件中通过 include 进行包含handlers/
:至少应该包含一个名为 main.yml 的文件;其它的文件需要在此文件中通过 include 进行包含vars/
:定义变量,至少应该包含一个名为 main.yml 的文件;其它的文件需要在此文件中通过 include 进行包含meta/
:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为 main.yml 的文件,其它文件需在此文件中通过 include 进行包含default/
:设定默认变量时使用此目录中的 main.yml 文件,比 vars 的优先级低
注意
未来使用playbook调用role时,要将playbook文件放在role平级目录下
需要实现一个nginx的role
思路
- 创建组nginx
- 创建用户nginx
- 安装nginx
- 使用模板文件,修改配置
- 启动service
首先
1 | mkdir /etc/ansible/roles/nginx |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狼的学习笔记!
评论