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.

Cómo comprobar la versión del sistema operativo de un host que se ha agregado dinámicamente al inventario.

Estoy tratando de obtener el nombre del servidor como entrada del usuario y si el sistema operativo del servidor es RHEL7, se procederá a realizar más tareas. Estoy intentando con hostvars pero no está funcionando, por favor ayúdame a encontrar la versión del sistema operativo con una condición when:

name: Añadir hosts
hosts: localhost
vars:
username: test
password: test
vars_prompt:
– name: server1
prompt: IP o nombre de servidor 1
private: no
– name: server2
prompt: IP o nombre de servidor 2
private: no
tareas:
– add_host:
name: “{{ server1 }}”
groups:
– cluster_nodes
– primary
– management
ansible_user: “{{ username }}”
ansible_password: “{{ password }}”
– add_host:
name: “{{ server2 }}”
groups:
– cluster_nodes
– secondary
ansible_user: “{{ username }}”
ansible_password: “{{ password }}”
– debug:
msg: “{{ hostvars[‘server1’].ansible_distribution_major_version }}”

Cuando ejecuto el playbook, obtengo el siguiente error:
fatal: [localhost]: FAILED! => {“msg”: “La tarea incluye una opción con una variable no definida. El error fue: \”hostvars[‘server1’]\” es indefinido\n\nEl error parece estar en ‘/var/lib/awx/projects/pacemaker/RHEL7ST/main_2.yml’: línea 33, columna 7, pero puede\nestar en otro lugar del archivo dependiendo del problema de sintaxis exacto.\n\nLa línea ofensiva parece ser:\n\n\n- debug:\n ^ aquí\n”}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para encontrar la versión del sistema operativo con una condición when, puedes modificar la sección de tareas para que se vea así:

      tasks:
        - add_host:
            name: "{{ server1 }}"
            groups:
              - cluster_nodes
              - primary
              - management
            ansible_user: "{{ username }}"
            ansible_password: "{{ password}}"
    
        - add_host:
            name: "{{ server2 }}"
            groups:
              - cluster_nodes
              - secondary
            ansible_user: "{{ username }}"
            ansible_password: "{{ password}}"
    
        - name: Verificar versión de SO
          debug:
            msg: "{{ hostvars[server1].ansible_distribution_major_version }}"
          when: "hostvars[server1].ansible_os_family == 'RedHat' and hostvars[server1].ansible_distribution_major_version == '7'"
    

    En la tarea debug, la condición when verifica si la familia del sistema operativo es RedHat y la versión principal de la distribución es 7, antes de mostrar la versión del sistema operativo. Esto debería solucionar el problema de errores de variables indefinidas.

Comments are closed.