Я пытаюсь автоматизировать настройку дистрибутива Amazon Cloudfront с помощью Ansible. В настоящее время мне нужно найти в Amazon Certificate Manager ARN (имя ресурса Amazon) моего сертификата и сохранить ARN в качестве переменной для последующего использования в конфигурации моего дистрибутива Cloudfront.
Мой поиск для этого выглядит следующим образом:
- 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"
}
]
}
}
У меня две цели:
- Вытащите значение
CertificateArn
из возвращаемого там JSON; - Сделайте его устойчивым, специально найдя в результатах «foo.com» (у меня есть домен как Ansible var, готовый для сравнения) и сохранив только ARN для сертификата этого домена на случай, если
list-certificates
вернет более одного сертификата.
Есть ли способ записать мой set_fact
из обхода вывода JSON из cert_list.stdout
и вернуть только значение ARN, где значение DomainName
содержит foo.com?
Спасибо!