Novo no Ansible - adicionando usuários a servidores dependendo do tipo

Novo no Ansible - adicionando usuários a servidores dependendo do tipo

Sou relativamente novo no ansible e estou tentando escrever um manual que adiciona usuários a um grupo de servidores dependendo do user_type (que estou tentando definir)...

Então... meu manual é mais ou menos assim...

- name: add user  
      user:  
        name={{ item }}  
        state=present  
        shell=/bin/bash  
      with_items: "{{ userlist }}"  
      tags: add_new_user  
      become: true  

userlisté definido em um arquivo yml separado:

---
userlist:
user1
user2
user3

Definido no meu arquivo hosts, tenho 3 grupos:

[grp1]
192.168.0.0
192.168.0.1

[grp2]
192.168.0.0
192.168.0.3

[grp3] 
192.168.0.4

O que estou pensando em fazer é adicionar esses tipos de grp à minha lista de usuários, para que fique mais ou menos assim:

---
userlist:
user1  grp1
user2  grp2
user3  grp3

Estou tentando descobrir como meu manual vai funcionar para descobrir quais usuários serão adicionados a quais servidores - sei que precisarei declarar outra variável para que meu manual saiba que o usuário1 está sendo adicionado aos servidores no grp1, mas Não consigo descobrir como?

Responder1

Um método simples: usevars de grupo:

Se você tiver apenas um usuário por servidor, você pode defini-los no inventário (você precisa adaptar seu jogo para não ficar em loop e usar newusercomo var):

[grp1:vars]
newuser=user1

Se houver mais usuários, você precisará de um inventário YAML (em vez de ini) ou usar um arquivo var de grupo: Crie um subdiretório chamado group_varsabaixo do diretório que contém o arquivo de inventário com um arquivo por grupo, por exemplo

$ cat grp1

userlist: 
   - user1
   - user2   

e então userlistseria definido separadamente para cada grupo.

Responder2

A maneira mais fácil é através de variáveis ​​de host ou variáveis ​​de grupo de hosts. Você pode ler como fazer isso aqui emo manual ansible. Outra opção mais avançada é por meio de fatos ou scripts personalizados. Você precisa ler sobre ordenação de variáveis ​​para evitar comportamento inesperado.

também gostaria de apontar alguns pequenos erros de sintaxe. Você não pode iniciar uma declaração com um elogio ({). E use dois pontos ao colocar uma única declaração por linha. Igual a:

arquivo_de_inventário:

[grp1]
host1
host2
host3

[grp2]
host4
host5
host6

[grp3]
host1
host4

manual de instruções.yml:

- hosts: all
  become: true
  tasks:
    - name: adding users to x
      user:  
        name: "{{ item }}  "
        state: present  
        shell: /bin/bash  
      with_items: "{{ userlist }}"  
      tags: add_new_user  

group_vars/grp1.yml:

---
userlist:
  - user1
  - user2
  - user3

host_vars/host5.yml

---
userlist:
  - user1
  - user4
  - user10

informação relacionada