Dentro de mi libro de jugadas, me gustaría crear una variable que contenga la salida de un comando externo. Luego quiero hacer uso de esa variable en un par de plantillas.
Estas son las partes relevantes del libro de jugadas:
tasks:
- name: Create variable from command
command: "echo Hello"
register: command_output
- debug: msg="{{command_output.stdout}}"
- name: Copy test service
template: src=../templates/test.service.j2 dest=/tmp/test.service
- name: Enable test service
shell: systemctl enable /tmp/test.service
- name: Start test service
shell: systemctl start test.service
y digamos que esta es mi plantilla:
[Unit]
Description=MyApp
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo {{ string_to_echo }}; sleep 1; done"
[Install]
WantedBy=multi-user.target
(Note el {{ string_to_echo }}
)
Entonces, lo que básicamente estoy buscando es una forma de almacenar el contenido de command_output.stdout
(que se genera / recupera durante la primera tarea) en una nueva variable string_to_echo
.
Esa variable que me gustaría usar en varias plantillas después.
Supongo que podría usarlo {{command_output.stdout}}
en mis plantillas, pero quiero deshacerme de eso .stdout
para mejorar la legibilidad.
.stdout
también.