Nuevo en Ansible: agregar usuarios a servidores según el tipo

Nuevo en Ansible: agregar usuarios a servidores según el tipo

Soy relativamente nuevo en ansible y estoy intentando escribir un libro de estrategias que agregue usuarios a un grupo de servidores dependiendo del tipo de usuario (que estoy tratando de definir)...

Entonces... mi libro de jugadas se parece un poco a esto...

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

userlistse define en un archivo yml separado:

---
userlist:
user1
user2
user3

Definido en mi archivo de hosts, tengo 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

Lo que estoy pensando en hacer es agregar estos tipos de grp a mi lista de usuarios, por lo que se vería más o menos así:

---
userlist:
user1  grp1
user2  grp2
user3  grp3

Estoy tratando de averiguar cómo diablos mi libro de jugadas va a determinar qué usuarios se agregan a qué servidores. Sé que tendré que declarar otra variable para que mi libro de jugadas sepa que el usuario1 se agrega a los servidores en grp1, pero ¿No puedo entender cómo?

Respuesta1

Un método simple: usarvariables de grupo:

Si solo tienes un usuario por servidor, puedes definirlo en el inventario (debes adaptar tu juego para que no se repita y usarlo newusercomo var):

[grp1:vars]
newuser=user1

Si hay más usuarios, necesita un inventario YAML (en lugar de ini) o usar un archivo var de grupo: cree un subdirectorio llamado group_varsdebajo del directorio que contiene el archivo de inventario con un archivo por grupo, por ejemplo

$ cat grp1

userlist: 
   - user1
   - user2   

y luego userlistse definiría por separado para cada grupo.

Respuesta2

La forma más sencilla es mediante variables de host o variables de grupo de host. Puedes leer cómo hacerlo aquí enel manual ansible. Otra opción más avanzada es mediante hechos o scripts personalizados. Es necesario leer sobre el orden de las variables para evitar comportamientos inesperados.

También me gustaría señalar algunos pequeños errores de sintaxis. No se puede iniciar una declaración con un elogio ({). Y use dos puntos al colocar una sola declaración por línea. Al igual que:

archivo_inventario:

[grp1]
host1
host2
host3

[grp2]
host4
host5
host6

[grp3]
host1
host4

libro de jugadas.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

información relacionada