在Ansible中,可以通过使用register
关键字来将任务的输出保存为一个变量。然后,可以通过使用{{ registered_variable_name }}
的方式在后续的任务中引用该变量。
以下是一个示例,演示如何将任务名称作为变量获取:
- name: Task 1
shell: echo "This is Task 1"
register: task1_output
- name: Task 2
shell: echo "This is Task 2"
register: task2_output
- name: Task 3
shell: echo "This is Task 3"
register: task3_output
- name: Print task names and outputs
debug:
msg: "Task Name: {{ item.item }} | Output: {{ item.stdout }}"
loop:
- { item: "Task 1", stdout: "{{ task1_output.stdout }}" }
- { item: "Task 2", stdout: "{{ task2_output.stdout }}" }
- { item: "Task 3", stdout: "{{ task3_output.stdout }}" }
在上述示例中,register
关键字用于将每个任务的输出保存到相应的变量中。然后,在最后一个任务中,使用debug
模块打印任务名称和输出。注意,在循环中,使用item.item
引用任务名称,使用item.stdout
引用任务输出。
运行上述示例后,输出将类似于以下内容:
TASK [Print task names and outputs] *******************************************************************************************
ok: [localhost] => (item={'item': 'Task 1', 'stdout': 'This is Task 1'}) => {
"msg": "Task Name: Task 1 | Output: This is Task 1"
}
ok: [localhost] => (item={'item': 'Task 2', 'stdout': 'This is Task 2'}) => {
"msg": "Task Name: Task 2 | Output: This is Task 2"
}
ok: [localhost] => (item={'item': 'Task 3', 'stdout': 'This is Task 3'}) => {
"msg": "Task Name: Task 3 | Output: This is Task 3"
}
如上所示,任务名称和输出都被正确地打印出来了。你可以根据自己的需求进一步修改和扩展这个示例。