2
私はAmazon Cloudfrontディストリビューションの設定をAnsibleと自動化しようとしています。現在、自分の証明書のARN(Amazonリソース名)のAmazon証明書マネージャーを検索し、後で自分のCloudfrontディストリビューション設定で使用する変数としてARNを保存する必要があります。JSON出力から変数を取得するにはどうすればよいですか?
次のように、このための私のルックアップは次のとおりです。
- name: Check for existence of a certificate for this project in Amazon Certificate Manager
command: >
aws acm list-certificates
--profile "{{ project_name }}"-deploy
--region us-east-1
register: cert_list
ignore_errors: True
- name: Record list-certificates output to Json
set_fact:
this_project_arn: # I want to set this from the output of list-certficates
- debug: msg="{{ cert_list.stdout | from_json }}"
次のようにそのデバッグの出力は、現在、次のとおりです。
TASK [configure-cloudfront : debug] ********************************************
ok: [localhost] => {
"msg": {
"CertificateSummaryList": [
{
"CertificateArn": "arn:aws:acm:us-east-1:123456789101:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"DomainName": "*.foo.com"
}
]
}
}
私は2つの目的があります。
- 引き出しをJSONから返された
CertificateArn
の値がそこに返されました。 - 結果に「foo.com」を具体的に探して(私は比較のためにAnipal var readyとしてドメインを持っています)、複数の証明書が返ってきた場合にそのドメインの証明書のARNのみを保存するby
list-certificates
。
cert_list.stdout
からJSON出力のトラバースから私のset_fact
を記録し、唯一DomainName
値がfoo.comが含まれているARN値を返すために、いくつかの方法はありますか?
ありがとうございます!
これは、中括弧内Jinja2のフィルタを使用しての良い例ですテンプレート化。 –
これは完璧です。私は将来的に疑いの余地のない本当に便利なパターンです。どうもありがとう! – Ben