GNU/Linux >> Tutoriales Linux >  >> Linux

Serie RHCE Ansible n.º 5:bucles Ansible

En ocasiones, es posible que desee repetir una tarea varias veces. Por ejemplo, es posible que desee crear varios usuarios, iniciar/detener varios servicios o cambiar la propiedad de varios archivos en sus hosts administrados.

En este tutorial, aprenderá a utilizar los bucles de Ansible para repetir una tarea varias veces sin tener que volver a escribir toda la tarea una y otra vez.

Antes de ver los bucles en Ansible, espero que haya seguido otros capítulos de esta serie de tutoriales de Ansible. Debe conocer el concepto de libros de jugadas de Ansible, ser consciente de los comandos ad-hoc y conocer la terminología básica asociada con Ansible, como listas, diccionarios, etc.

También se agradece conocer los conceptos básicos de YAML.

Recorriendo listas

Ansible utiliza las palabras clave bucle para iterar sobre los elementos de una lista. Para demostrarlo, creemos un libro de jugadas muy simple llamado print-list.yml que le muestra cómo imprimir los elementos en una lista:

[[email protected] plays]$ cat print-list.yml 
---
- name: print list
  hosts: node1
  vars:
    prime: [2,3,5,7,11]
  tasks:
    - name: Show first five prime numbers
      debug:
        msg: "{{ item }}"
      loop: "{{ prime }}"

Tenga en cuenta que uso el elemento variable con bucles de Ansible. La tarea se ejecutaría cinco veces, lo que equivale al número de elementos en el principal lista.

En la primera ejecución, el elemento la variable se establecerá en el primer elemento de la matriz principal (2). En la segunda ejecución, la variable del elemento se establecerá en el segundo elemento de la matriz principal (3) y así sucesivamente.

Continúe y ejecute el libro de jugadas para ver todos los elementos del principal lista mostrada:

[[email protected] plays]$ ansible-playbook print-list.yml 

PLAY [print list] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
    "msg": 2
}
ok: [node1] => (item=3) => {
    "msg": 3
}
ok: [node1] => (item=5) => {
    "msg": 5
}
ok: [node1] => (item=7) => {
    "msg": 7
}
ok: [node1] => (item=11) => {
    "msg": 11
}

PLAY RECAP *********************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0

Ahora aplica bucles a una aplicación de la vida real. Por ejemplo, puede crear un add-users.yml libro de jugadas que agregaría varios usuarios en todos los hosts en los dbservers grupo:

[[email protected] plays]$ cat add-users.yml 
---
- name: Add multiple users
  hosts: dbservers
  vars:
    dbusers:
      - username: brad
        pass: pass1
      - username: david
        pass: pass2
      - username: jason
        pass: pass3
  tasks: 
    - name: Add users
      user:
        name: "{{ item.username }}"
        password: "{{ item.pass | password_hash('sha512') }}"
      loop: "{{ dbusers }}"

Primero creé un dbusers list que es básicamente una lista de hashes/diccionarios. Luego usé el usuario módulo junto con un bucle para agregar los usuarios y establecer las contraseñas para todos los usuarios en dbusers lista.

Note que también usé la notación punteada item.username y item.pass para acceder a los valores de las claves dentro de los hashes/diccionarios de los dbusers lista.

También vale la pena señalar que utilicé password_hash('sha512') filtro para encriptar las contraseñas de los usuarios con el sha512 algoritmo hash como el usuario El módulo no permitiría establecer contraseñas de usuario sin cifrar.

Sugerencia para el examen RHCE:tendrá acceso a la página docs.ansible.com en su examen. Es un recurso muy valioso, especialmente en la sección "Preguntas frecuentes"; encontrará numerosas preguntas prácticas con respuestas y explicaciones.

Ahora ejecutemos add-users.yml libro de jugadas:

Lea la historia completa

El resto del artículo está disponible solo para miembros de LHB. Puede registrarse ahora GRATIS para leer el resto de este artículo junto con el acceso a todas las publicaciones exclusivas para miembros. También se suscribe a nuestro boletín quincenal de Linux.

Suscríbete¿Ya tienes una cuenta?Iniciar sesión
Linux
  1. Sin lista de tipos en ISPConfig 3.1.11

  2. RHCE Ansible Series #8:Cifrado de contenido con Ansible Vault

  3. Serie RHCE Ansible n.º 7:Plantillas Jinja2

  4. RHCE Ansible Series #6:Toma de decisiones en Ansible

  5. Serie RHCE Ansible n.º 5:bucles Ansible

Cómo usar bucles en Ansible Playbook

Una introducción a los hechos de Ansible

Serie RHCE Ansible n.º 2:Ejecución de comandos ad-hoc

Serie RHCE Ansible n.º 1:Salude a Ansible

Serie RHCE Ansible n.º 3:Manuales de Ansible

Serie RHCE Ansible n.º 12:solución de problemas de Ansible