es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ansible cuando la condición condicional no se salta cuando es falsa y muestra un error.

Aquí están mis tareas de Ansible dentro de un rol:

- name: incluir variables tcrj01 de prefix<em>lists
  include</em>vars:
    file: "../collection-data/output/{{ market<em>input | lower }}tcrj01</em>prefix<em>lists.yml"
    name: prefix01
  delegate</em>to: localhost
  when: '"target1" in market<em>input or "target2" in market</em>input'

<ul>
<li>name: incluir variables dsrj01 de prefix<em>lists
include</em>vars:
file: "../collection-data/output/{{ market<em>input | lower }}dsrj01</em>prefix<em>lists.yml"
name: prefix01
delegate</em>to: localhost
when: '"target1" not in market<em>input or "target2" not in market</em>input'

market_input == “target1”

El error que estoy obteniendo es &quot;No se pudo encontrar o acceder a &#39;../collection-data/output/targetdsrj01_prefix_lists.yml&#39;, lo cual es correcto porque ese archivo no existe y no debería existir, ya que el valor de la variable target ES igual a la variable market_input. Debería buscar un archivo tcrj que sí existe para esa cadena de destino y no el archivo dsrj del cual está arrojando el error. No puedo entender por qué la tarea dsrj no se está omitiendo. Funciona para otras cadenas de destino, pero no para la que estoy ejecutando actualmente. Proporcionaré más detalles o claridad si es necesario. ¡Muchas gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Entendiendo la Tarea de Ansible

    La tarea de Ansible dada es parte de un rol e incluye dos tareas. La primera tarea incluye variables del archivo tcrj01_prefix_lists.yml y las guarda en una variable llamada prefix01. La línea delegate_to: localhost especifica que las tareas deben ejecutarse localmente en la máquina donde se está ejecutando Ansible. La tarea se ejecuta solo cuando la variable market_input contiene la cadena "target1" o "target2".

    La segunda tarea incluye variables del archivo dsrj01_prefix_lists.yml y las guarda en la misma variable prefix01. Esta tarea se ejecuta solo cuando la variable market_input no contiene la cadena "target1" o "target2".

    Identificando el Error

    El mensaje de error indica que Ansible no pudo encontrar o acceder al archivo ../collection-data/output/targetdsrj01_prefix_lists.yml. Sin embargo, este archivo no existe, ya que el valor de market_input es "target1", lo que significa que se debe ejecutar la primera tarea y se debe omitir la segunda tarea.

    Resolver el Problema

    Para resolver el problema, debes identificar por qué la segunda tarea no se está omitiendo correctamente. Puedes agregar líneas de depuración al playbook para imprimir el valor de la variable market_input y verificar su valor. También puedes imprimir un mensaje en la segunda tarea para determinar si se está ejecutando y por qué.

    Una vez que hayas identificado el problema, puedes modificar el valor de market_input o ajustar la instrucción when en la segunda tarea para asegurarte de que se ejecute solo cuando sea necesario.

    En general, el problema parece estar relacionado con el valor de market_input, y al modificarlo, puedes resolver el mensaje de error.

Comments are closed.