标签:wordpress efault txt 嵌套 apache 递归 dbn rdp hello
使用include
模块来包含foo文件
tasks:
- include: foo.yml
--- foo.yml
- name: test foo
command: echo foo
include
还允许传递变量
- include: wordpress.yml wp_user=timmy
- include: wordpress.yml
vars:
wp_user: timmy
ssh_keys:
- keys/one.txt
- keys/two.txt
循环引用3次
- include: foo.yml param=
with_items:
- 1
- 2
- 3
还可以使用动态变量引入task文件
- include: ".yml"
动态包含的一些限制
? 您不能使用notify来触发来自动态包含的处理程序名称。 ? 您不能使用–start-at-task在动态包含内的任务开始执行。 ? 仅存在于动态包含内的标记不会显示在-list-tags输出中。 ? 只存在于动态包含内的任务将不会显示在-list-tasks输出中。
为了解决上面限制,2.1版本后引入了static
- include: foo.yml
static: <yes|no|true|false>
默认情况下,在Ansible 2.1及更高版本中,include包含符合以下条件时会自动被视为静态而不是动态:
ansible.cfg配置中有两个选项可用于静态包括:
task_includes_static
- 将所有在tasks部分中包含的内容都设置为静态。handler_includes_static
- 强制所有包括在处理程序部分是静态的。这些选项允许用户强制playbook的行为与他们在1.9.x和之前一样。
include_vars
在task中动态加载yaml或json文件类型中的变量
- include_vars: myvars.yml
根据操作系统类型加载变量文件,如果找不到,则为默认值。
- include_vars: ""
with_first_found:
- ".yml"
- ".yml"
- "default.yml"
角色是基于已知文件结构自动加载某些vars_files,任务和处理程序的方法。 按角色分组内容还允许轻松与其他用户共享角色。
文件结构如下
结构说明
这个 playbook 为一个角色 ‘x’ 指定了如下的行为
如果 roles 目录下有文件不存在,这些文件将被忽略。
这些目录的加载顺序
如果区分环境使用角色,可以使用下列文档结构
** 运行playbook**
ansible-playbook -i production site.yml
在playbook中定义角色
---
- hosts: webservers
roles:
- x
定义角色参数
---
- hosts: webservers
roles:
- { role: x, dir: '/opt/a', app_port: 5000 }
使用条件判断,当主机是Redhat时,才执行角色任务
---
- hosts: webservers
roles:
- { role: some_role, when: "ansible_os_family == 'RedHat'" }
定义角色标签
---
- hosts: webservers
roles:
- { role: x, tags: ["bar", "baz"] }
定义执行角色任务前后执行的动作
---
- hosts: webservers
pre_tasks:
- shell: echo 'hello'
roles:
- { role: some_role }
tasks:
- shell: echo 'still busy'
post_tasks:
- shell: echo 'goodbye'
pre_tasks里的task在roles执行前执行的任务 post_tasks里的task在roles执行完成后执行的任务
角色默认变量
定义角色默认变量,只需在角色目录中添加一个defaults/main.yml文件。角色默认变量优先级最低。
角色依赖性允许您在使用角色时自动提取其他角色。 角色依赖关系存储在角色目录中包含的meta/main.yml文件中。 此文件应包含要在指定角色之前插入的角色和参数的列表,例如角色/myapp/meta/main.yml中的以下内容:
---
dependencies:
- { role: common, some_parameter: 3 }
- { role: apache, apache_port: 80 }
- { role: postgres, dbname: blarg, other_parameter: 12 }
- { role: '/path/to/common/roles/foo', x: 1 }
** 角色依赖执行顺序**
角色依赖性始终在包含角色的角色之前执行,并且是递归的。 如上面内容,按照common,apache,postgres,’/path/to/common/roles/foo顺序依次执行,再执行此角色
** 角色依赖嵌套**
默认情况下,在添加依赖其他角色的时候,如果其他角色内也有依赖关系,是不执行其他角色内的依赖关系的。
可以通过allow_duplicates: yes
设置来实现执行其他角色内的依赖关系。
实际测试,2.1
,2.2
版本的ansible,无论加不加这个设置,就只会执行第一次依赖角色,后续的则不执行。
ansible examples :https://github.com/ansible/ansible-examples
更多文章请看 Ansible 专题文章总览
标签:wordpress efault txt 嵌套 apache 递归 dbn rdp hello
原文地址:https://www.cnblogs.com/lijianming180/p/12360948.html