Tengo un libro de jugadas que ejecuta un script en un cuadro de Windows que devuelve un valor que tengo que reutilizar más adelante en mi libro de jugadas después de cambiar al localhost. ¿Cómo puedo acceder a este valor después de volver a localhost? Aquí hay un ejemplo:
hosts: localhost
connection: local
gather_facts: no
tasks:
.
.
.
hosts: windows
gather_facts: no
tasks:
- name: Call PowerShell script
win_command: "c:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe c:\\psl_scripts\\getData.ps1"
register: value_to_reuse
hosts: localhost
gather_facts: no
connection: local
tasks:
- name: debug store_name from windows host
debug:
var: "{{ hostvars[windows][value_to_reuse][stdout_lines] }}"
¿Cuál es la sintaxis correcta para acceder a una variable desde otro host? Recibo un mensaje de error: "msg": "La tarea incluye una opción con una variable indefinida. El error fue: 'windows' no está definido
2 respuestas
Aquí está el código que funciona with_items
:
- name: print value_to_reuse
debug:
var: hostvars[item]['value_to_reuse']['stdout_lines']
with_items: "{{ groups['windows'] }}"
El mismo código funciona sin iteraciones:
- name: print value_to_reuse
debug:
var: hostvars[groups['windows'][0]]['value_to_reuse']['stdout_lines']
La sintaxis es:
- debug:
var: hostvars['windows']['value_to_reuse']['stdout_lines']
Tres errores:
- deberías citar valores de cadena
- El parámetro
var
toma el nombre de la variable, no una plantilla (que debe ser un valor de parámetromsg
) windows
en el ejemplo dado debe ser el nombre del host ya que todos los hechos están vinculados a los hosts, no al grupo de hosts
Preguntas relacionadas
Nuevas preguntas
ansible
Red Hat Ansible es un sistema de gestión de configuración basado en modelos, implementación / orquestación de múltiples nodos y ejecución remota de tareas. Utiliza SSH de forma predeterminada, por lo que no es necesario instalar ningún software especial en los nodos que administra. Ansible está escrito en Python pero puede ampliarse en cualquier idioma. Viene en versión de código abierto y versión Enterprise.