如何将值从 ansible 中的多个任务保存到列表变量中?
How can I save values into a list var from multiple tasks in ansible?
我有一个执行多个任务的剧本。每个任务只要满足WHEN条件就可以执行。我想将一些数据保存到列表中,以便稍后在过程中使用它。
这里有一个简单的例子来说明我的需要:
- Set GlobalVar = []
- task A
when task_A_enabled
register custom_value_A into GlobalVar
- task B
when task_B_enabled
register custom_value_B into GlobalVar
- task C
do something with GlobalVar
我希望它足够清楚,可以帮助我弄清楚如何做到这一点。谢谢。
一个选项是使用 block
比如下面的戏
- hosts: localhost
gather_facts: no
vars:
GlobalVar: []
task_a: true
task_b: false
tasks:
- name: task A
block:
- debug:
msg: Task A is enabled
- set_fact:
GlobalVar: "{{ GlobalVar + [ 'A' ] }}"
when: task_a
- name: task B
block:
- debug:
msg: Task B is enabled
- set_fact:
GlobalVar: "{{ GlobalVar + [ 'B' ] }}"
when: task_b
- name: task C
debug:
var: GlobalVar
给出(删节):
ok: [localhost] => {
"msg": "Task A is enabled"
}
...
ok: [localhost] => {
"GlobalVar": [
"A"
]
}
您可以使用模块 set_fact to do the variable assignment and use blocks 对任务和变量分配步骤进行分组,这样您就可以检查一次条件:
---
- hosts: "all"
vars:
GlobalVar: []
tasks:
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [1, 2] }}"
- debug:
msg: "{{GlobalVar}}"
when: true
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [3, 4] }}"
- debug:
msg: "{{GlobalVar}}"
when: false
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [5, 6] }}"
- debug:
msg: "{{GlobalVar}}"
when: true
我有一个执行多个任务的剧本。每个任务只要满足WHEN条件就可以执行。我想将一些数据保存到列表中,以便稍后在过程中使用它。
这里有一个简单的例子来说明我的需要:
- Set GlobalVar = []
- task A
when task_A_enabled
register custom_value_A into GlobalVar
- task B
when task_B_enabled
register custom_value_B into GlobalVar
- task C
do something with GlobalVar
我希望它足够清楚,可以帮助我弄清楚如何做到这一点。谢谢。
一个选项是使用 block
比如下面的戏
- hosts: localhost
gather_facts: no
vars:
GlobalVar: []
task_a: true
task_b: false
tasks:
- name: task A
block:
- debug:
msg: Task A is enabled
- set_fact:
GlobalVar: "{{ GlobalVar + [ 'A' ] }}"
when: task_a
- name: task B
block:
- debug:
msg: Task B is enabled
- set_fact:
GlobalVar: "{{ GlobalVar + [ 'B' ] }}"
when: task_b
- name: task C
debug:
var: GlobalVar
给出(删节):
ok: [localhost] => {
"msg": "Task A is enabled"
}
...
ok: [localhost] => {
"GlobalVar": [
"A"
]
}
您可以使用模块 set_fact to do the variable assignment and use blocks 对任务和变量分配步骤进行分组,这样您就可以检查一次条件:
---
- hosts: "all"
vars:
GlobalVar: []
tasks:
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [1, 2] }}"
- debug:
msg: "{{GlobalVar}}"
when: true
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [3, 4] }}"
- debug:
msg: "{{GlobalVar}}"
when: false
- block:
- set_fact:
GlobalVar: "{{ GlobalVar + [5, 6] }}"
- debug:
msg: "{{GlobalVar}}"
when: true