Ansible - 条件更改选项值

时间:2017-11-08 11:03:42

标签: ansible

我有一个Ansible任务,可确保创建用户列表(dict),并在需要时创建它们。

我希望此任务不会更新密码(仅on_creation),除非我将全局变量enforce_config设置为true。在这种情况下,我希望所有托管用户都使用默认密码更新密码(存储在我的用户dict中)。

简而言之,我希望根据enforce_config变量的值更改此user模块选项:

update_password: on_create

成:

update_password: always

这是完整的任务:

  - name: Manage users and their password
  user:
    name: "{{ item.key }}"
    home: "{{ item.value.home }}"
    createhome: yes
    shell: "{{ item.value.shell }}"
    password: "{{ item.value.password }}"
  # IF `enforce_config` == true
  #   update_password: always
  # ELSE
    update_password: on_create
  with_dict: "{{ users }}"

2 个答案:

答案 0 :(得分:0)

update_password: "{{ ‘always’ if (`enforce_config` == true) else ‘on_create’ }}"

或者

update_password: "{{ (`enforce_config` == true) | ternary(‘always’, ‘on_create’) }}"

答案 1 :(得分:0)

阅读此question here后,我实际上找到了自己问题的答案。

  • 直接使用任务的update_password选项中的Jinja2 if-else:

update_password: "{% if enforce_config==true %}always{% else %}on_create{% endif %}"