CloudFormation (CFN) — это отличная структура шаблонов или DSL, которую можно использовать для определения инфраструктуры в YAML или JSON.
На протяжении многих лет я наблюдал, как она развивалась от относительно сложной в реализации до широко признанной и более простой, но все еще с некоторыми оговорками. Когда я начал заниматься миграцией корпоративного облака (~2012 год) на AWS, я использовал такие инструменты, как Ansible, для решения проблемы автоматизации IAM, EC2, RDS и VPC. В дополнение к этому у нас не было нескольких инструментов, которые сейчас доступны для миграции на AWS.
Я начал использовать шаблоны CFN для создания политик IAM, шаблонов EC2 и ролей, а также VPC. В то время некоторые трудности были связаны с форматированием JSON и внедрением значений параметров в развертывание. Поэтому я использовал такие инструменты, как Ansible и AWS CLI, чтобы обойти шаблоны CFN. Это давало мне контроль над тем, какие AMI я мог использовать для EC2, например, или какой AccountID я мог использовать в параметре для Cross Account IAM Role.
** Условия
Еще одна проблема, которую я обнаружил, заключается в том, что при запуске CFN-шаблона всегда возникает вопрос об условиях, основанных на значениях параметров. Например, для шаблона EC2, если вы запускаете его в публичной подсети, вы можете захотеть иметь публичный IP, но если вы запускаете его в частной подсети, вам нужен только частный IP.
** Пользовательские данные
Пользовательские данные при запуске EC2 могут быть еще одной проблемой, которая не решается только шаблонами. Например, вы можете предоставить данные пользователя для выполнения команды или сценария при первом запуске.
В целом, самой большой проблемой для новичков в использовании CloudFormation является изучение синтаксиса и типов ресурсов, которые вам нужны, а также доступных параметров. Документация предоставляет эти сведения, но чтение строк и строк документации может оказаться сложной задачей.
Одной из моих идей была возможность помочь людям узнать о AWS CloudFormation и поддержать их в создании собственных шаблонов.
Вы можете попробовать https://app.teemops.com/, чтобы понять, о чем я говорю — он позволяет вам использовать базовый пользовательский интерфейс для создания шаблона и запуска его в вашем собственном аккаунте AWS, избавляя вас от многочасового разочарования в процессе обучения. Исходный код доступен на https://github.com/teemops/tui, если вы хотите запустить его локально и поиграть с ним.
На данный момент я поддерживаю только EC2 и группы автомасштабирования, но идея состоит в том, чтобы поддерживать как можно больше ресурсов AWS. Попробуйте, и я с нетерпением жду отзывов.