CloudFormation part 2 Flashcards

1
Q

Что нужно сделать с bootstrap скриптом перед тем, как передать его в свойство User-Data в объявление EC2 instance’а?
Как с этим связаны CloudFormation Helper-Scripts?
Какие примеры helper-scripts?
Как установить эти helper-scripts?

A

Пропустить через функцию Fn::Base64

CloudFormation Helper Scripts - это скрипты на Python, которые решают некоторые проблемы UserData скриптов:
- читабельность
- мониторинг успешности выполнения
- расширяемость

Примеры
- cfn-init
- cfn-signal
- cfn-get-metadata
- cfn-hub

CloudFormation Helper Scripts доступны по-умолчанию на Amazon Linux AMI.
А на других AMI их можно установить через yum или dnf

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

В какой файл пишет логи user-data?
В какой файл пишет логи cfn-init?
cfn-signal?

A
  • UserData script пишет логи в /var/log/cloud-init-output.log
  • cfn-init пишет логи в /var/log/cfn-init.log и в /var/log/cfn-init-cmd.log
  • cfn-signal пишет логи в `/var/log/cloud-init.log
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

cfn-init helper script
Где он объявлен?
Что он содержит?
В чём его польза?

A

Resources => EC2Instance => Metadata => AWS::CloudFormation::Init

Содержит объявление пакетов для предустановки, user’ов и групп на ОС, файлов для скачивания и создания, CLI команд для выполнения, сервисов ОС для запуска

Смысл этого блока в том,
чтобы читабельно указать список всех пакетов/файлов/команд,
которые нужно установить/выполнить во время EC2 bootstrap фазы

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

cfn-signal helper script
Где он объявлен?
Что он содержит?
В чём его польза?

A

Resources => ASG/EC2Instance => CreationPolicy => ResourceSignal => Timeout
Или отдельный ресурс AWS::CloudFormation::WaitCondition

Содержит время timeout, которое дано EC2 instance’у для инициализации и отчёта о своём здоровье

Смысл этого скрипта в том,
чтобы EC2 отчитался о своём здоровье после инициализации
(после выполнения скрипта cfn-signal)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какая последовательность взаимодействий EC2 с CloudFormation API в рамках cfn-init и cfn-signal

A
  • CloudFormation запускает новый EC2 instance
  • Начинается ожидание WaitCondition
  • EC2 instance запрашивает init данные из CloudFormation API
  • EC2 instance выполняет инициализацию cfn-init
  • EC2 instance шлёт сигнал в CloudFormation API cfn-signal
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Проблема
CloudFormation WaitCondition НЕ получил сигнал подтверждения от EC2 instance’а
Как troubleshoot’ить?

A
  • убедиться, что AMI нашего EC2 instance’а имеет CloudFormation Helper scripts
  • прочитать output команд cfn-init и cfn-signal
  • убедиться, что EC2 имеет выход в интернет (потому что EC2 должен слать запрос в CloudFormation)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Проблема
Произошла ошибка инициализации EC2 instance’а
Но логов нет
Что делать?

A

disable rollback
По-умолчанию CloudFormation совершит rollback, если EC2 instance НЕ удачно инициализирован. Тогда логи выполнения helper scripts пропадут.
Чтобы это предотвратить, нужно отключить rollback

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

cfn-hup helper script
Где он объявлен?
Что он содержит?
В чём его польза?

A

/etc/cfn/cfn-hup.conf

cfn-hup - это скрипт, который заставляет EC2 instance
отслеживать изменения в коде yaml-блока Metadata
каждые 15 минут (интервал задаётся)
- и применять их, если они появились.
Изменения применяются через повторный запуск cfn-init скрипта.
Этот скрипт даёт возможность динамически подтягивать изменения в конфигурации EC2 instance’а (которые задаются в UserData скрипте) БЕЗ пересоздания EC2 instance’а.

Metadata - это yaml блок в объявлении EC2 instance’а, в котором указан AWS::CloudFormation::Init блок
(инструкции по предустановке программ, начальной конфигурации и прочему bootstrap’ингу)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что может вызвать проблемы при попытке выполнить Rollback?

A

Drift Detection

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

CloudFormation Update Policy
Что это такое?
Для каких ресурсов это можно объявить?
Какие настройки оно имеет?
Как выглядит в CloudFormation Template’е?
Какую проблему решает?
Какую технологию напоминает?

A

Проблема
В CloudFormation можно объявить ресурс ASG.
У ASG есть её Launch Template/Configuration.
Частая задача - изменить (обновить) этот Launch Template.
При этом, если сделать это просто так (без указания Update Policy), то будет downtime у всей ASG.

ASG Update Policy Rolling Update очень напоминает идею ASG Instance Refresh
Но я НЕ уверен, что это одно и то же.

Update Policy - это атрибут CloudFormation ресурса ASG.
В нём можно указать Rolling Update и его настройки.
Главная настройка - это минимальное количество EC2 instance’ов, которые будут в состоянии Running во время поочерёдного обновления ASG Launch Template.

Таким образом
Наличие атрибута UpdatePolicyRollingUpdate у ресурса ASG спасает нас от полного downtime’а всей ASG во время обновления EC2 Launch Template’а

How well did you know this?
1
Not at all
2
3
4
5
Perfectly