Bên trong playbook của tôi, tôi muốn tạo một biến giữ đầu ra của một lệnh bên ngoài. Sau đó, tôi muốn sử dụng biến đó trong một vài mẫu.
Dưới đây là các phần liên quan của playbook:
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
và giả sử đây là mẫu của tôi:
[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
(Lưu ý {{ string_to_echo }}
)
Vì vậy, những gì tôi cơ bản đang tìm kiếm là một cách để lưu trữ nội dung của command_output.stdout
(được tạo / truy xuất trong tác vụ đầu tiên) trong một biến mới string_to_echo
.
Biến đó tôi muốn sử dụng trong nhiều mẫu sau đó.
Tôi đoán tôi chỉ có thể sử dụng {{command_output.stdout}}
trong các mẫu của mình, nhưng tôi muốn loại bỏ điều đó .stdout
để dễ đọc.
.stdout
.