Я использую Ansible playbook (через AWX) для установки обновлений на некоторые серверы Linux, размещенные в AWS EC2.Я хотел бы следовать процессу:
- Создание AMI экземпляра, включая тег «name» для AMI, а также теги «name» для любых снимков, прикрепленных к AMI.
- Установка обновлений на сервере
- Отмена регистрации всех AMI, которые соответствуют соглашению об именах, которые я использовал (
mydomain.com-YYYYMMDD
), и старше определенного возраста, а также удаление снимков, прикрепленных к этимМАСС.Я начну с 7 дней, затем добавлю больше деталей.
Однако до сих пор мне удавалось только создать изображение с тегом имени и установить обновления.Я не нашел способ найти и отметить прикрепленные снимки.
Я знаю, что могу использовать модуль ec2_ami
для отмены регистрации AMI и одновременного включения удаления снимка.Однако я не могу понять, как заставить этот модуль искать строку имени (что-то вроде mydomain.com-*
), а также оценить возраст AMI.
Я очень новичок в использовании Ansible, поэтому знаю, что, возможно, мне не хватает некоторых очевидных решений.
Ниже приведена моя игровая книга - учитывая, что установка обновлений имеет дело с моей другой - но в ней не было попыток выполнить недостающие части, так как я не нашел ничего, что помогло бы мне разобратьсякак это сделать.
Возможно ли?
---
- hosts: all
remote_user: "{{ remote_user }}"
tasks:
- name: Create an AMI for backup
ec2_ami:
instance_id: "{{ instance_id }}"
name: "{{ inventory_hostname }}-{{ ansible_date_time.iso8601_basic_short }}"
tags:
Name: "{{ inventory_hostname }}-{{ ansible_date_time.iso8601_basic_short }}"
register: result
- name: Pause for 120 seconds to allow instance to become reachable again
pause: seconds=120
- include_tasks: update-RedHat.yml
when: (ansible_os_family == 'RedHat' and result.changed|default(false)|bool == true)
- include_tasks: update-Debian.yml
when: (ansible_os_family == 'Debian' and result.changed == true)