2016-07-25 8 views
1

アシスタント(つまり、複数のホストにまたがって)に「グローバル」変数がありますか?エラーフラグを設定して、そのエラー状態になった場合は別個のプレイブックを呼び出したいと思います。私の構造は以下のようなものです:アシスタブル - グローバル変数

- hosts: localhost 
    connection: local 
    gather_facts: no 
    roles: 
    - role1 <-- some error flag is set here 
    - role2 
- include: teardown.yml 
    when: error_flag is defined and error_flag == true 

私はgroup_varsで変数を設定しようとしましたが、実行時に変数の値を変更する現実的な方法もありません私には表示されます。

ティアダウンのwhenがローカルホストにないため、Set_factが機能しません。そして、私がhostvars['localhost']['error_flag]にアクセスしようとしても、when句でJinjaテンプレートを使用できないように見えるので、それは機能しません。

+0

ホスト変数 'hostvars.localhost.error_flag'は、' when'節でJinja2テンプレートなしでアクセス可能でなければなりません。つまり、 '{{' '}}' Jinja2デリミタなしでその式を書いてください。 –

答えて

0

上記のChin Huang氏の言葉通り、私はwhen句の使用に関する構文を乱していました。ですから、それを修正することによって、明らかにwhen節が動作します。 Anatileで動的なグローバル変数を宣言する良い方法はないようですので、hostvarsオブジェクトのホストごとの変数を使うのが最も実用的な方法です。

他の情報源もファイルの使用とファイルからのデータの読み込みについて言及していますが、それは非常に非効率的です。だから、私は物事をlocalhostに保存することによって支払っています。