eba*_*ere 3 ansible ansible-playbook
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
我还发现我可以将每个用户的密码从 /etc/shadow 中提取到 ansible,但这也有点难看。如果未设置 dict 值,有没有办法简单地不尝试管理密码属性?
摘自用户模块文档:
update_password–always/on_create–always如果密码不同,将更新密码。on_create只会为新创建的用户设置密码。
要跳过未知参数,请使用omit:
password: "{{ item.value.password | default(omit) }}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |