将module_defaults属性应用于角色

时间:2019-01-31 17:48:49

标签: ansible

我具有以下文件结构:

webserver.yml
emailserver.yml
roles/
    common/
        tasks/
            main.yml

emailserver.ymlwebserver.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_defaultswebserver.yml上都添加emailserver.yml,但这意味着代码重复并且具有共同的角色配置,并且分布在多个文件中)。

2 个答案:

答案 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_defaultsPlay属性只。