Ansible proporciona dos modos de ejecución que validan tareas: modo de verificación y modo de diferencia. Estos modos se pueden usar por separado o juntos. Son útiles cuando está creando o editando un libro de jugadas o un rol y desea saber qué hará. En el modo de verificación, Ansible se ejecuta sin realizar ningún cambio en los sistemas remotos. Los módulos que admiten el modo de verificación informan los cambios que habrían realizado. Los módulos que no admiten el modo de verificación no informan nada ni hacen nada. En modo diff, Ansible proporciona comparaciones de antes y después. Los módulos que admiten el modo diff muestran información detallada. Puede combinar el modo de verificación y el modo de diferencia para una validación detallada de su libro de jugadas o rol.

  • Uso del modo de verificación

    • Hacer cumplir o prevenir el modo de verificación en las tareas
    • Omitir tareas o ignorar errores en el modo de verificación
  • Usando el modo diferencial

    • Hacer cumplir o prevenir el modo diff en las tareas

Uso del modo de verificación

El modo de verificación es solo una simulación. No generará salida para tareas que usan condicionales basados ​​en variables registradas (resultados de tareas anteriores). Sin embargo, es excelente para validar libros de jugadas de administración de configuración que se ejecutan en un nodo a la vez. Para ejecutar un libro de jugadas en modo de verificación:

ansible-playbook foo.yml --check

Hacer cumplir o prevenir el modo de verificación en las tareas

Nuevo en la versión 2.2.

Si desea que ciertas tareas se ejecuten en modo de verificación siempre o nunca, independientemente de si ejecuta el libro de jugadas con o sin --checkpuede agregar el check_mode opción a esas tareas:

  • Para forzar que una tarea se ejecute en modo de verificación, incluso cuando se llama al libro de jugadas sin --checkcolocar check_mode: yes.
  • Para forzar que una tarea se ejecute en modo normal y realizar cambios en el sistema, incluso cuando se llama al libro de jugadas con --checkcolocar check_mode: no.

Por ejemplo:

tasks:-name: This task will always make changes to the system
    ansible.builtin.command: /something/to/run --even-in-check-mode
    check_mode: no

  -name: This task will never make changes to the system
    ansible.builtin.lineinfile:line:"important config"dest: /path/to/myconfig.conf
      state: present
    check_mode: yes
    register: changes_to_important_config

Ejecutar tareas individuales con check_mode: yes puede ser útil para probar los módulos de Ansible, ya sea para probar el propio módulo o para probar las condiciones en las que un módulo haría cambios. Puede registrar variables (ver Condicionales) sobre estas tareas para obtener aún más detalles sobre los posibles cambios.

Nota

Antes de la versión 2.2 solo el equivalente de check_mode: no existió. La notación para eso fue always_run: yes.

Omitir tareas o ignorar errores en el modo de verificación

Nuevo en la versión 2.1.

Si desea omitir una tarea o ignorar errores en una tarea cuando ejecuta Ansible en modo de verificación, puede usar una variable mágica booleana ansible_check_modeque se establece en True cuando Ansible se ejecuta en modo de verificación. Por ejemplo:

tasks:-name: This task will be skipped in check mode
    ansible.builtin.git:repo: ssh://[email protected]/mylogin/hello.git
      dest: /home/mylogin/hello
    when: not ansible_check_mode

  -name: This task will ignore errors in check mode
    ansible.builtin.git:repo: ssh://[email protected]/mylogin/hello.git
      dest: /home/mylogin/hello
    ignore_errors:" ansible_check_mode "

Usando el modo diferencial

Él --diff La opción para ansible-playbook se puede usar sola o con --check. Cuando se ejecuta en modo diff, cualquier módulo que admita el modo diff informa los cambios realizados o, si se usa con --check, los cambios que se habrían realizado. El modo Diff es más común en módulos que manipulan archivos (por ejemplo, el módulo de plantilla), pero otros módulos también pueden mostrar información de “antes y después” (por ejemplo, el módulo de usuario).

El modo Diff produce una gran cantidad de salida, por lo que es mejor usarlo cuando se verifica un solo host a la vez. Por ejemplo:

ansible-playbook foo.yml --check --diff --limit foo.example.com

Nuevo en la versión 2.4.

Hacer cumplir o prevenir el modo diff en las tareas

Porque el --diff puede revelar información confidencial, puede deshabilitarla para una tarea especificando diff: no. Por ejemplo:

tasks:-name: This task will not report a diff when the file changes
    ansible.builtin.template:src: secret.conf.j2
      dest: /etc/secret.conf
      owner: root
      group: root
      mode:'0600'diff: no