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”}
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í:En la tarea
debug
, la condiciónwhen
verifica si la familia del sistema operativo esRedHat
y la versión principal de la distribución es7
, antes de mostrar la versión del sistema operativo. Esto debería solucionar el problema de errores de variables indefinidas.