2016-04-29 18 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 

状態は私のPAですラムター、インクルード時に渡される(http://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuseに記載) 何が間違っていますか?

私はAnipal 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

関連する問題