我正在尝试使用 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 值未设置,有没有办法简单地不尝试管理密码属性?
答案1
答案2
通过“密码未知”剧本运行所有帐户。
使用单独的剧本来设置新账户的密码。