2016-04-29 33 views
1

我有使用參數化的安全參數的問題。參數化的安全任務包括 - '參數未定義'

我已經創建下列文件,命名爲任務/ haproxy.xml

- name: "change node state to {{state}} in haproxy" 
    tags: 
    - "haproxy-{{state}}" 
    become: yes 
    become_user: root 
    haproxy: 
     state: "{{ state }}" 
     wait: yes 
     host: "{{ inventory_hostname }}" 
     backend: app 
     socket: /var/container_data/haproxy/run/haproxy.sock 
    delegate_to: "{{ item }}" 
    with_items: "{{ groups.haproxy }}" 

我,包括我的playbook.yml這個文件,傳遞狀態參數的值

- include: tasks/haproxy.yml state=enabled 

我得到以下錯誤

TASK [include] ***************************************************************** 
included: /home/bb/tasks/haproxy.yml for 172.16.224.68, 172.16.224.69 
ERROR! 'state' is undefined 

state is my pa rameter,在做include的時候通過(如http://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse中所述) 什麼錯誤?

我使用的是Ansible 2.0.2.0。

編輯: 使用替換語法用於使paramteres

- include: tasks/haproxy.yml 
    vars: 
    state: enabled 

給出恰好相同的錯誤消息。

+0

如鏈接文檔中所述,您是否獲得與替代('vars')語法相同的結果? – udondan

+0

vars語法提供相同的錯誤消息。 –

+1

如何引用「啓用」? –

回答

0

解決方法是使用替代語法(vars)時刪除單個前導空格(!!)。

所以正確的參數化包括是

- include: tasks/haproxy.yml 
    vars: 
    state: enabled 

vars關鍵字必須在同一水平include關鍵字。 否則它不起作用,消息ERROR! 'state' is undefined

縮短的語法(- include: tasks/haproxy.yml state=enabled)仍然不起作用。

+0

這並沒有爲我解決它。任何其他想法? – CamHart

+0

我試圖做一個「劇本包括」不是「任務包括」,它似乎不支持傳遞變量? – CamHart