2016-07-26 114 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