我有一个 ansible 任务,我想在其中注册多个变量,我该如何实现?列表或逗号分隔的字符串似乎不起作用。
我想做这样的事情:
- name: my task
module_name:
<some more params>
register: [var1, var2]
Run Code Online (Sandbox Code Playgroud)
如果我添加register: var1 \n register: var2然后只有第二个得到注册。
编辑:好的,我认为我的困惑在于变量注册的工作原理。所以当你这样做时register: any_var_name,新创建的变量包含任务的整个输出。然后,您可以按照接受的答案以任何方式访问它。
Kon*_*rov 10
不,这是不可能的。
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 }}"
Run Code Online (Sandbox Code Playgroud)
而且你不能一次性做到这一点,就像这样:
- command: myscript.sh
# this code does not work!
register:
std_out: result.stdout
std_err: result.stderr
Run Code Online (Sandbox Code Playgroud)