Ansible: deixa a senha inalterada quando não está definida

2

Estou tentando criar um conjunto de usuários no Ansible usando with_dict. O problema é que às vezes o usuário já existe e não tenho a senha. Nesse caso, gostaria de simplesmente ignorar a configuração da senha, mas gerenciar o restante dos atributos do usuário. Aqui está uma solução feia, mas deve haver uma maneira melhor de fazer isso:

- 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

Eu também descobri que posso simplesmente puxar a senha de cada usuário para o ansible de / etc / shadow, mas isso também é feio. Existe uma maneira de simplesmente não tentar gerenciar o atributo de senha se o valor do dict não for definido?

    
por ebarrere 03.08.2017 / 00:28

2 respostas

5

Trecho dos documentos do módulo usuário :

update_passwordalways/on_createalways will update passwords if they differ. on_create will only set the password for newly created users.

Para ignorar um parâmetro desconhecido, use omitir :

password: "{{ item.value.password | default(omit) }}"
    
por 03.08.2017 / 08:17
0

Executar todas as contas através do manual de reprodução de 'senhas desconhecidas'.

Use um playbook separado para definir as senhas das novas contas.

    
por 03.08.2017 / 00:55