我具有以下文件结构:
webserver.yml
emailserver.yml
roles/
common/
tasks/
main.yml
emailserver.yml
和webserver.yml
如下:
- hosts: all
roles:
- common
还有main.yml
:
- name: apt-get update
apt:
update_cache: yes
force_apt_get: yes
- name: apt-get upgrade
apt:
name: "*"
state: latest
force_apt_get: yes
为了避免重复force_apt_get: yes
,我想使用the module_defaults
attribute来担任这个角色:
module_defaults:
apt:
force_apt_get: yes
我尝试将其包含在main.yml
的顶部,但出现语法错误。
如何将module_defaults
属性应用于角色的任务?
(一种替代方法是在module_defaults
和webserver.yml
上都添加emailserver.yml
,但这意味着代码重复并且具有共同的角色配置,并且分布在多个文件中)。
答案 0 :(得分:0)
一种解决方案是在角色任务文件main.yml
中使用一个块:
- block:
- name: apt-get update
apt:
update_cache: yes
- name: apt-get upgrade
apt:
name: "*"
state: latest
become: yes
module_defaults:
apt:
force_apt_get: yes
答案 1 :(得分:0)
如何施加
module_defaults
属性的作用?
这是不可能作为当前Ansible版本(2.7)。 module_defaults
是Play
属性只。