Я пытаюсь создать группу пользователей в Ansible с помощью with_dict. Иногда проблема в том, что пользователь уже существует, а у меня нет пароля. В этом случае я хотел бы просто пропустить установку пароля, но управлять остальными атрибутами пользователя. Вот уродливый обходной путь, но должен быть способ лучше:
- 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, но это тоже некрасиво. Есть ли способ просто не пытаться управлять атрибутом пароля, если значение dict не установлено?
Отрывок из пользователь документы модуля:
update_password
-always
/on_create
-always
обновит пароли, если они отличаются.on_create
установит пароль только для вновь созданных пользователей.
Чтобы пропустить неизвестный параметр, используйте опускать:
password: "{{ item.value.password | default(omit) }}"
Запустите все учетные записи с помощью инструкции «пароль неизвестен».
Используйте отдельную книгу для установки паролей новых учетных записей.