Я пытаюсь автоматизировать конфигурацию распределения Amazon Cloudfront с Ansible. В настоящее время мне нужно найти менеджера сертификатов Amazon для ARN (имя ресурса Amazon) моего сертификата и сохранить ARN в качестве переменной, которая будет использоваться позже в моей конфигурации дистрибутива Cloudfront.Как зарегистрировать переменную в Ansible, вытащил из JSON Output?
Мой поиск для этого заключается в следующем:
- 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?
Спасибо!
Это хороший пример использования jinja2 фильтра внутри скобок в шаблонный. –
Это прекрасно. Действительно полезная модель, которую я, несомненно, буду использовать в будущем. Большое спасибо! – Ben