2016-04-22 15 views
1

を働かなかったときに私は私の条件私の脚本上でいくつかの問題を抱えて:ここAnsible条件が

は、ステートメントがあると私は何が間違っている見当がつかない。

main.yml

- include: setup-ubuntu-trusty.yml 
when: (ansible_distribution == "Ubuntu" and ansible_distribution_release == "trusty") 

    - include: setup-ubuntu-xenial.yml 
when: (ansible_distribution == "Ubuntu" and ansible_distribution_release == "xenial") 

私はそれが私にこのエラーが発生します。このスクリプトを実行した

TASK: [utilities/requirements | requirements | include os-specific variables] *** 
skipping: [ansible-test-vm02] 

TASK: [utilities/requirements | requirements | install] *********************** 
fatal: [ansible-test-vm02] => with_items expects a list or a set 

FATAL: all hosts have already failed -- aborting 

私はUbuntuのxenialと二つの変数の値を使用しています(ansible_distribution = Ubuntuの/ ansible_distribution_release = xenial)

私はなぜ最初のファイルにジャンプしてエラーが出るのか分かりません。これをスキップして、xenialファイルに移動します。追加

: これは、ファイルが含ま

セットアップのubuntu-trusty.yml /セットアップのubuntu-xenial.yml

- name: requirements | include os-specific variables 
    include_vars: "{{ ansible_distribution | lower }}-{{ ansible_distribution_release | lower }}.yml" 

    - name: requirements | install 
    apt: name={{ item }} state=present 
    with_items: "{{ package }}" 
    register: out_download 

    - name: requirements | output install 
    debug: var=out_download 
+0

まず、インデントが問題ではないことを確認するためにコードサンプルを適切にインデントしてください。そして、 'when'ステートメントで変数の出力をデバッグしてください。 – Wtower

+0

でした。 (Ubuntuと{{ansible_distribution_release}} ==の信頼{{ansible_distribution}} ==) は今私が得た:とき :エラー条件を評価しながら、(Ubuntuの== Ubuntuとxenial ==信頼できる) – F961

+0

及びそれを変更when条件で{{}}を使用しないでください。私は、あなたが含まれているプレイブックが何をしているのかについて少し詳しい情報を与えるべきだと思います。どちらが含まれますか?この問題はインクルード自体に含まれているようではなく、含まれているプレイブックにあります。 – shaps

答えて

1

あなたは試すことができます。この1:

- include: setup-ubuntu-trusty.yml 
    when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty' 

- include: setup-ubuntu-xenial.yml 
    when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'xenial'