2017-10-06 53 views
0

我有一个ansible任务,我要注册里面多个变量中注册多个变量,我该如何实现这一目标?它似乎不是一个列表或逗号分隔字符串将工作。Ansible单个任务

我想要做这样的事情:

- name: my task 
    module_name: 
    <some more params> 
    register: [var1, var2] 

如果我添加register: var1 \n register: var2则只有第二个GET的注册。

编辑: OK,我想我的混乱位怎么变登记工作说谎。所以当你做register: any_var_name时,新创建的变量包含任务的整个输出。然后,您可以按照接受的答案以任何方式访问它。

+1

这是什么原因? –

+0

我想在以下任务中检查任务'我的任务'的输出中的几个值的值 – eddyP23

回答

1

不,这是不可能的。

Ansible(作为当前版本2.4)不允许注册模块(或它的几个不同的部分)的部分输出。

您只能注册完整的结果并将其中的部分内容提取到要执行的任务中。

例如,如果你想获得std_outcommand模块的std_err,你会做两个任务:

- 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 
0

为什么你不能做到这一点在多个步骤?

- name: my task 
    module_name: 
    <some more params> 
    register: var1 

    - set_fact: 
     var2: "{{var1}}"