2016-09-28 2 views
0

私は、可能性のある遊びを書いています。タスクの1つは、JSONドキュメントにエントリを追加することです。例えば。jqを使用してAnabilitiesテンプレートから生成された出力を追加します。

JSONドキュメントstaff.json

{ 
    "staff":[ 
     { 
     "john":[ 
      { 
       "position":"techwriter" 
      }, 
      { 
       "sex":"male" 
      } 
     ] 
     } 
    ] 
} 

私はstaffにこのエントリを追加する必要があります。

{ 
    "staff":[ 
     { 
     "john":[ 
      { 
       "position":"techwriter" 
      }, 
      { 
       "sex":"male" 
      } 
     ] 
     }, 
     { 
     "jane":[ 
      { 
       "position":"admin" 
      }, 
      { 
       "sex":"female" 
      } 
     ] 
     } 
    ] 
} 
エントリはAnsible template、このようなものから生成される

 { 
     "{{ staff_name }}":[ 
      { 
       "position":"{{ staff_position }}" 
      }, 
      { 
       "sex":"{{ staff_sex }}" 
      } 
     ] 
     } 

私はを使うことを学んだ「Add json array element with jq (cmdline)」に示すように、JSONドキュメントに対して〜append entryが表示されます。しかし、テンプレートとしてファイルに出力されるので、私はこれをAnabilitiesでどのように実装できるのか分かりません。

cat staff.json | jq '.staff |= .+ ["OUTPUT_FROM_TEMPLATE"]' 

すべてのアイデアは歓迎:

私はこのような何かのソリューションが必要です。 Ansibleテンプレートエンジンは、それが辞書に評価できるJSON文字列に変換するので、あなたはitemto_jsonフィルタを使用する必要が

- shell: cat staff.json | jq '.staff |= . + [{{ item | to_json }}]' > staff.json 
     with_template: person.j2 
     vars: 
     staff_name: jane 
     staff_position: admin 
     staff_sex: female 

注:

+0

jqソリューションを求めていないので、私はjqタグを削除しています。 –

答えて

1

あなたはtemplate検索プラグインを使用することができます。

+0

魅力的な作品です!私は 'with_template'が存在することを知りませんでした。しかし、 'staff.json'は私のためには機能しません。私は '|ティースタッフ.json' –

関連する問題