Ansible - 角色的子类

时间:2017-09-29 10:57:23

标签: ansible

我们正在创建一个整体的Ansible代码库,各个部门都会使用它来启动自己的环境。

拥有通用代码库然后允许每个部门配置自己的服务器的最佳方法是什么?

这是一个具体的例子。假设我们有这个角色:

角色/阿帕奇

包含defaults/tasks/vars/目录。

但是,A部门可能希望确保有/var/www/html目录,而B部门可能需要/opt/www目录。

如何创建允许A和B创建自己的目录的基本模板角色?

1 个答案:

答案 0 :(得分:1)

例如:

defaults/main.yml中定义默认变量:

dirs_list: ['/var/www/html']

创建任务以在tasks/main.yml中创建所需目录:

- file:
    path: '{{ item }}'
    state: directory
  with_items: '{{ dirs_list }}'

这样Dept A可以使用默认值调用角色:

roles:
  - apache

和部门B可以覆盖默认值:

roles:
  - role: apache
    dirs_list:
      - /opt/www
      - /var/somepath