我有一个ansible任务,我想在其中注册多个变量,我该如何实现?列表或逗号分隔的字符串似乎不起作用。
我想做这样的事情:
- name: my task
module_name:
<some more params>
register: [var1, var2]
如果我添加register: var1 \n register: var2
,则只会注册第二个。
编辑:
好吧,我认为我的困惑在于变量注册的工作方式。因此,当您执行register: any_var_name
时,新创建的变量包含任务的整个输出。然后,您可以按照接受的答案以任何方式访问它。
答案 0 :(得分:3)
不,这是不可能的。
Ansible(截至当前版本2.4)不允许注册模块的部分输出(或其几个不同部分)。
您只能注册完整结果,并在要执行的任务中提取部分结果。
例如,如果您想获得std_out
模块的std_err
和command
,则可以执行两项任务:
- command: myscript.sh
register: cmd_res
- set_fact:
std_out: "{{ cmd_res.stdout }}"
std_err: "{{ cmd_res.stderr }}"
你不能一次性完成,如下所示:
- command: myscript.sh
# this code does not work!
register:
std_out: result.stdout
std_err: result.stderr
答案 1 :(得分:0)
为什么不能分多步完成?
- name: my task
module_name:
<some more params>
register: var1
- set_fact:
var2: "{{var1}}"