Ansible任务变量输出不显示

时间:2016-07-26 01:48:57

标签: ansible

以下是我的简单剧本

  name: "test"
  hosts: webservers

 tasks:
- name: Echo my_env_var
  shell: "echo $MY_ENV_VARIABLE"
  environment:
    MY_ENV_VARIABLE: whatever_value

- name: Echo my_env_var again
  shell: "echo $MY_ENV_VARIABLE"
  register: stdd
- debug: msg={{stdd.stdout_lines}}

我的输出始终是msg:“”或msg:[]。为什么我无法看到变量

的值

1 个答案:

答案 0 :(得分:1)

我拿了你的例子并将其从debug msg更改为debug var。我还通过仅运行一次任务简化了它,并在此过程中发现了错误。 environment参数特定于任务。您没有将其包含在第二个shell任务中。

以下是我使用的示例。

<强> echo.yml

- hosts: localhost
  tasks:
  - name: Echo my_env_var
    shell: "echo $MY_ENV_VARIABLE"
    environment:
      MY_ENV_VARIABLE: whatever_value
    register: stdd
  - debug: var=stdd

<强>执行

$ ansible-playbook -c local -i "localhost," echo.yml 

PLAY [localhost] ************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [localhost]

TASK: [Echo my_env_var] ******************************************************* 
changed: [localhost]

TASK: [debug var=stdd] ******************************************************** 
ok: [localhost] => {
    "var": {
        "stdd": {
            "changed": true,
            "cmd": "echo $MY_ENV_VARIABLE",
            "delta": "0:00:00.005332",
            "end": "2016-07-25 19:42:54.320667",
            "invocation": {
                "module_args": "echo $MY_ENV_VARIABLE",
                "module_complex_args": {},
                "module_name": "shell"
            },
            "rc": 0,
            "start": "2016-07-25 19:42:54.315335",
            "stderr": "",
            "stdout": "whatever_value",
            "stdout_lines": [
                "whatever_value"
            ],
            "warnings": []
        }
    }
}

PLAY RECAP ******************************************************************** 
localhost                  : ok=3    changed=1    unreachable=0    failed=0