我正在尝试使用 with_dict 在 Ansible 中创建一组用户。问题是有时用户已经存在而我没有密码。在这种情况下,我想简单地跳过设置密码,而是管理其余的用户属性。这是一个丑陋的解决方法,但必须有更好的方法来做到这一点:
- name: create FTP users (password known)
user:
name: "{{ item.key }}"
comment: "{{ item.value.comment | default('') }}"
password: "{{ item.value.password }}"
shell: "{{ item.value.shell | default('/sbin/nologin') }}"
home: "{{ item.value.home | default('/var/ftp/' + item.key) }}"
createhome: "{{ item.value.createhome | default('no') }}"
with_dict: "{{ ftp_users }}"
when: item.value and item.value.password is defined
- name: create FTP users (password unknown)
user:
name: "{{ item.key }}"
comment: "{{ item.value.comment | default('') }}"
shell: "{{ item.value.shell | default('/sbin/nologin') }}"
home: "{{ item.value.home | default('/var/ftp/' + item.key) }}"
createhome: "{{ item.value.createhome | default('no') }}"
with_dict: "{{ ftp_users }}"
when: item.value.password is not defined
我还发现我可以将每个用户的密码从 /etc/shadow 中提取到 ansible 中,但这也很丑陋。如果 dict 值未设置,有没有办法简单地不尝试管理密码属性?
摘自用户模块文档:
要跳过未知参数,请使用omit:
通过“密码未知”剧本运行所有帐户。
使用单独的剧本设置新帐户的密码。