Можно ли добавить собственный обработчик части CloudInit непосредственно в AMI, чтобы он был доступен для всех новых экземпляров без необходимости каждый раз добавлять его к пользовательским данным?
У меня есть несколько настраиваемых типов MIME, которые мы используем для определения данных конфигурации для наших облачных экземпляров EC2 и скриптов python для обработки # частей, необходимых для их обработки. Я хотел бы упростить процесс создания экземпляра, исключив необходимость включать эти обработчики частей в пользовательские данные каждый раз, когда я создаю новый экземпляр. Есть ли какой-нибудь крючок в сценариях CloudInit, где я мог бы добавить свои обработчики деталей непосредственно в AMI, чтобы единственное, что мне нужно было передать через пользовательские данные, - это сами файлы конфигурации?
Кажется, что нет механизма плагинов, но могли бы вы разместить конфигурацию на HTTP-сервере и просто включить это при запуске экземпляра вместо его повторения:
начинается с "#include" или "Content-Type: text / x-include-url"
Это содержимое является «включаемым» файлом. Файл содержит список URL-адресов, по одному в каждой строке. Будет прочитан каждый из URL-адресов, и их содержимое будет передано через тот же набор правил. То есть, контент, прочитанный из URL-адреса, может быть сжатым с помощью gzip, mime-multi-part или обычным текстом.
Только что потратили несколько часов на этот вопрос и выяснили, что вы действительно можете сохранить обработчик части в / var / lib / cloud / handlers, но есть несколько предостережений.
Я не уверен, должен ли быть определенный шаблон для имени файла, но в моем случае я сохранил его как /var/lib/cloud/handlers/part-handler-000.py и создал из него AMI.
При запуске нового экземпляра на основе этого AMI кажется, что пользовательские данные для этого mime должны быть предоставлены внутри многостраничного mime (да, даже если этот multipart просто содержит вашу собственную часть).
Я попытался отправить в первой строке следующее
Content-Type: text/XXXXX;
или
#XXXXX
но никто не работал