2016-07-26 116 views
0

下面是我简单的剧本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}} 

我的输出总是消息:“”或味精:[]。为什么我无法看到变量的值

回答

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