2015-01-02 9 views
25

varsファイルをAnabilitiesに別のvarsファイルに動的に含めることは可能ですか?varsファイルをvarsファイルに組み込むには?

I.e.

--- 
definitions: 
- { product: web_v2, suite: mysuite, include: default_step.yml } 
- { product: prod2, suite: mysuite2, include: default_step.yml } 

私はdefault_step.ymlの内容は辞書に追加したい:私はVARSファイルを持っています。これはのvarsファイルにあるので、タスクからのvarsファイルのインクルード方法に関するドキュメントは適用されないように注意してください。

私は考えることができるすべては神社で、このファイルをテンプレートとその{% include %}機能を使用して、その後、メインタスクからinclude_varsを使用することですが、それは複雑なようだ...

+0

Varsファイルには、組み込みの組み込み文がありません。 'include_vars'タスクでvarsファイルをインクルードすると、Anabilities設定で' hash_behaviour = merge'が定義されていない限り、辞書の内容は無効になります。代わりに、私のアクションプラグイン['include_vars_merged'] [1]を使うこともできます。どちらの亜種も、最初のレベルでのみ辞書をマージします。おそらく、私のプラグインをベースとして使用して、深いマージや実際の 'include 'を直接実装することができます。 [1]:https://gist.github.com/udondan/b730206056a018cf9838 – udondan

答えて

37

残念ながら、ファイルが含まれていないvarsのステートメント。

すべての変数をdefinitionsディクショナリに格納するか、変数を別のディクショナリとして同じファイルに追加することができます。

同じファイルでそれらを持ってしたくない場合は、プレイの開始時にVARSファイルを追加することにより、脚本レベルでそれらを含めることができます。

--- 
- hosts: myhosts 

    vars_files: 
    - default_step.yml 

またはタスクで:

--- 
- hosts: myhosts 

    tasks: 
    - name: include default step variables 
     include_vars: default_step.yml 
0

私がやったことは簡単ですが、私はそれが古いポストを知っているが、私は今日同じ問題を持っていた:私は、Mavenのコマンドでそれを送信する前に、サーバーに自分のローカルホストからの私の脚本を送って私のスクリプトを変更しますしました:

cat common_vars.yml > vars.yml 
cat snapshot_vars.yml >> vars.yml 
# or 
#cat release_vars.yml >> vars.yml 
mvn .... 
関連する問題