Omitindo o argumento do ansible baseando-se na variável

0

Eu quero manter os usuários com ansible. Eu uso o módulo user , mas quero ter alguns IDs de usuário não exclusivos. Agora eu tenho um dicionário como este:

users:
    user: { password: "HASH", shell: "/bin/zsh", home: "/home/user", uid: -1, non-unique: "no" }
    userroot: { password: "HASH1", shell: "/bin/zsh", home: "/home/userroot", uid: 0, non-unique: "yes" }

Estou criando usuários assim:

- name: Create users
  user: name={{ item.key }} createhome=yes shell={{ item.value.shell }} password={{ item.value.password }} home="{{ item.value.home }}" append=yes state=present 
  with_dict: "{{users}}"

A pergunta é como adicionar uma lógica que irá especificar o argumento uid quando for definido para um valor maior ou igual a 0?

    
por Kalavan 10.11.2016 / 12:59

1 resposta

1

Acho que a única maneira de decidir isso por um número de uid maior que / igual é ter dois recursos diferentes com condicional when .

Mas se você não precisa ter uid: -1 , algo assim pode funcionar. Apenas se livre dos valores de uid e non_unique nas variáveis do usuário:

- name: Create users
    user:
      name={{ item.key }}
      createhome=yes
      shell={{ item.value.shell }}
      password={{ item.value.password }}
      home="{{ item.value.home }}"
      append=yes
      state=present
      uid="{{ item.value.uid | default(omit) }}"
      non_unique="{{ item.value.non_unique | default('no') }}" 
    with_dict: "{{users}}"

E, além de não usar uid e non_unique (pagar attantion a essa variável, deve haver _ em vez de - ) em usuários comuns:

user: { password: "HASH", shell: "/bin/zsh", home: "/home/user" }
userroot: { password: "HASH1", shell: "/bin/zsh", home: "/home/userroot", uid: 0, non_unique: "yes" }
    
por 10.11.2016 / 14:30

Tags