Назад | Перейти на главную страницу

Ansible: оставьте пароль без изменений, если он не установлен

Я пытаюсь создать группу пользователей в 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) }}"

Запустите все учетные записи с помощью инструкции «пароль неизвестен».

Используйте отдельную книгу для установки паролей новых учетных записей.