Представляем программируемую AWS Landing Zone в модуле Terraform

от автора

Всем привет! В декабре OTUS запускает новый курс — Cloud Solution Architecture. В преддверии старта данного курса делимся с вами переводом интересного материала по теме.


AWS Landing Zone – это решение, которое помогает клиентам быстро настроить безопасную среду AWS с несколькими учетными записями, основываясь на лучших практиках.

В течение более чем пяти лет существования наша команда в Mitoc Group неустанно работала над тем, чтобы помогать крупным организациям успешно проводить цифровую трансформацию и строить или переносить свой цифровой след в облако AWS. Другими словами, цитируя наших друзей из AWS: «Наши клиенты заново открывают себя с AWS». Это бесконечные усилия по переизобретению и упрощению механик от имени самих клиентов, и AWS отлично справляется с решением сложных проблем с помощью простых в усвоении решений.


AWS Landing Zone (источник)

Что такое AWS Landing Zone?

Как гласит информация из официального источника:

AWS Landing Zone – это решение, которое помогает клиентам быстрее настраивать безопасную среду AWS с несколькими учетными записями, основываясь на лучших практиках AWS. При большом количестве вариантов, настройка среды с несколькими учетными записями может занять значительное время, а также включать в себя настройку множества аккаунтов и сервисов, и требовать глубокого понимания работы сервисов AWS.

Решение AWS Landing Zone значительно снизило сложность и согласованность аналогичных друг другу шаблонов проектирования, которые предоставляются различным клиентам. С другой стороны, нашей команде пришлось перенастроить некоторые компоненты CloudFormation в качестве компонентов Terraform, чтобы использовать их дальше для автоматизации.

Поэтому мы задались вопросом, почему бы не построить всё решение AWS Landing Zone в Terraform? Можем ли мы это сделать и решит ли это проблемы наших клиентов? Спойлер: решит и уже решает! 🙂

Когда не стоит использовать AWS Landing Zone?

Если вы имеете дело с обычными облачными сервисами и облачными ресурсами в рамках одной или двух учетных записей AWS, эти меры могут оказаться излишними. Все, кто к этому пункту не относятся, могут продолжать чтение 🙂

Что нужно учесть перед началом работы?

У многих крупных организаций, с которыми мы работали, уже есть какая-то стратегия использования облачных технологий. Компании борются за успешное внедрение облачных сервисов, не имея четкого видения и сформулированных ожиданий. Пожалуйста, потратьте время на то, чтобы определиться со своей стратегией и понять как AWS в нее вписывается.

Определяясь со стратегией, успешные клиенты AWS Landing Zone активно акцентируют внимание на следующем:

  • Просто автоматизация – это не вариант. Предпочтительна нативная облачная автоматизация.
  • Команды последовательно используют одни и те же механики с тем же набором инструментов для подготовки облачных ресурсов. Лучше использовать Terraform.
  • Самые продуктивные пользователи облачных сервисов имеют возможность создавать переиспользуемые процессы и предоставлять их в качестве переиспользуемых сервисов вместо переиспользуемого кода. Предпочтительно использование бессерверной архитектуры.

Представляем модуль Terraform для AWS Landing Zone

После нескольких месяцев напряженной работы я с удовольствием представляю вам модуль Terraform для AWS Landing Zone. Исходный код хранится на GitHub, а стабильные версии релизов публикуются на Terraform Module Registry.

Чтобы начать работу, просто включите main.tf в ваш код:

module "landing_zone" {   source     = "TerraHubCorp/landing-zone/aws"   version    = "0.0.6"   root_path  = "${path.module}"   account_id = "${var.account_id}"   region     = "${var.region}"   landing_zone_components = "${var.landing_zone_components}" }

Примечание: обязательно включите variables.tf и все, что вам может пригодиться из outputs.tf.

Чтобы облегчить понимание, мы добавили значения по умолчанию в terraform.tfvars:

account_id = "123456789012" region = "us-east-1" landing_zone_components = {   landing_zone_pipeline_s3_bucket = "s3://terraform-aws-landing-zone/mycompany/landing_zone_pipeline_s3_bucket/default.tfvars"   [...] }

Это означает, что при использовании этого модуля terraform вам потребуется:

  1. Изменить значения account_id и region на ваши собственные, которые соответствуют данным в AWS Organization;
  2. Изменить значения landing_zone_components на те, которые соответствуют вашему варианту использования AWS Landing Zone;
  3. Изменить s3://terraform-aws-landing-zone/mycompany на ваш блок S3 и префикс ключа S3, где вы будете хранить файлы .tfvars (или абсолютный путь к файлам .tfvars в вашем локальном хранилище).

Этот модуль может иметь десятки, сотни или тысячи развертываемых компонентов, но не все из них должны быть и будут развернуты. Во время выполнения, компоненты, которые не являются частью карты переменных landing_zone_components будут проигнорированы.

Заключение

Мы очень рады и горды тем, что делимся плодами наших усилий, которые помогают клиентам создавать нативную облачную автоматизацию. Модуль Terraform для AWS Landing Zone – это еще одно решение, которое помогает организациям быстрее настроить безопасную среду AWS с несколькими учетными записями, основываясь на лучших практиках AWS. Мы хорошо знаем, что AWS развивается безумно быстро, и мы стремимся также быстро развивать решение terraform, которое охватывает все основы, а также интегрируется с другими рабочими решениями AWS.

На этом все. Ждем ваши комментарии и приглашаем на бесплатный вебинар в рамках которого мы изучим проектирование архитектуры домена Cloud Landing Zone и рассмотрим архитектурные шаблоны основных доменов.


ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/479344/