2017-12-14 4 views
-1

私はどのように変数の値をyamlキーとして使用しますか?在庫に応じて、私は私の脚本で、変数の名前でYAMLキーを代用したいと思い

config: 
    {{ db_name }}: 
    other_config 

いくつかの点で、後に、私はテンプレートで使用to_nice_jsonを経由してJSONにそれを変換します。しかし、JSONでは、変数名の代わりに{{ db_name }}が表示されます。キーコンテキストで変数値を使用する回避策はありますか?

答えて

0

テンプレートで変数を変更する場合は、変数の代わりにreplaceをキーとして使用できます。例えば は、テンプレートの正規表現で検索用の名前(CHANGETHISVAR)を設定し、モジュールを使用するには:

- replace: 
    path: /path/to/your/file 
    regexp: '(CHANGETHISVAR)' 
    replace: 'db_name' 

テンプレートのタスクを実行した後、このルーチンを追加します。

0

しかし、JSONに、私はあなたが "JSONに" 間違った何かを{{ db_name }}代わりに、変数名の

を参照してください。

例:

--- 
- hosts: localhost 
    gather_facts: no 
    connection: local 
    vars: 
    db_name: DB1 
    config: "{'{{ db_name }}':'value'}" 
    tasks: 
    - debug: 
     var: config 

結果:私はここに述べた要件から理解して何から

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "config": { 
     "DB1": "value" 
    } 
} 
0

、次は動的なJSONの設定を生成するための実行可能な方法であるかもしれない:

  • は、YAMLテンプレートファイルにconfigsを持っています。
  • ホスト名などに基づいてYAML設定を生成する
  • include_varsを使用して生成されたYAMLファイルから変数をロードし、to_jsonフィルタなどを使用してJSONに変換します。
関連する問題