Узел / клиент Cleanup Chef при удалении стека Cloudformation

У меня есть стек облачной информации, который состоит из VPC, двух подсетей (общедоступной и частной), нескольких экземпляров EC2 ubuntu и всех маршрутов, адресов EIP и т. Д. Один из экземпляров EC2 находится в общедоступной подсети. Он загружается как узел Chef при запуске.

Я хотел бы найти способ удалить узел chef при удалении стека облачной информации. До сих пор я пытался перенести сценарий очистки в экземпляр EC2 /etc/rc0.d.

Этот сценарий делает то, что должен при запуске вручную, однако, когда я просто удаляю стек, он не запускается. На самом деле - он вполне может работать, но я предполагаю, что к тому времени, когда экземпляр EC2 завершит работу, все адреса маршрутизации и EIP могут уже исчезнуть, поэтому сервер Chef может быть недоступен для экземпляра EC2.

Я также пробовал заблокировать порядок создания / удаления с помощью атрибутов DependsOn, но это тоже не сработало - я не думаю, что IP-адрес и маршруты могут зависеть от экземпляра, который использует указанный EIP и маршруты

Есть ли способ настроить какой-то мониторинг, чтобы убедиться, что Chef cleanup запускается раньше всего?

Гист с шаблоном и скриптом настройки / очистки от шеф-повара


person Marat Garafutdinov    schedule 13.03.2014    source источник
comment
Я добавил на него ссылку, спасибо.   -  person Marat Garafutdinov    schedule 13.03.2014


Ответы (1)


Да, скорее всего, ваши IP-адреса отключаются / удаляются до выключения экземпляра, поэтому любые попытки доступа к серверу Chef из экземпляра бесполезны. Вы всегда можете проверить свои журналы действий с облачной информацией, но отсоединение IP-адреса перед выключением - вот что имеет наибольший смысл.

Я думаю, что некоторые из обходных путей:

  1. Создайте приложение поверх созданной вами облачной информации, чтобы каждый раз, когда вы удаляете стек, он также удалял нужные вам узлы с вашего сервера-повара. Это будет полноценное приложение с базой данных для отслеживания запущенных серверов / стеков. Это потребует от вашего приложения вызова API сервера шеф-повара или просто вызова системной команды knife.

  2. Запустите ваш скрипт очистки из другого экземпляра с Knife / Chef-client. У вас может быть своего рода cron / периодическая проверка заданий для стеков / серверов, которые удалялись на AWS, а затем выполнить соответствующую команду ножа для удаления сервера. По сути, это очень похоже на 1. с той разницей, что вам не обязательно создавать полноценное приложение.

Надеюсь, это поможет.

person Rico    schedule 18.03.2014
comment
Спасибо. Я закончил тем, что реализовал повторное использование клиентского ключа для каждого уникального имени узла / клиента, вместо того, чтобы удалять узел / клиент каждый раз при уничтожении стека. - person Marat Garafutdinov; 19.03.2014