Esta es la solución más exacta que te podemos aportar, sin embargo estúdiala detenidamente y analiza si se puede adaptar a tu trabajo.
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 --check
puede 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
--check
colocarcheck_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
--check
colocarcheck_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_mode
que 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
Recuerda algo, que te damos el privilegio decir si acertaste tu incógnita en el momento fiel.