Всем привет! В декабре 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 и рассмотрим архитектурные шаблоны основных доменов.

Комментарии (2)


  1. r00mka
    09.12.2019 15:31

    Полез посмотреть код модуля на terraform, потому как Cloud Landing Zone — тема интересная и полезная для multi-account сетапа. Но Terraform кода я там и не нашел, модуль использует в основном абстракцию terrahub в формате yaml. Напоминает гибрид бульдога с носорогом.
    Модуль по сути делает только local-exec, который запускает node, который запускает terrahub, который генерирует чистый terraform код и запускает terraform, ну вы поняли…
    ИМХО то еще извращение. Yaml terrahub-а нагнетает тоску, т.к. очень напоминает Cloudformation.
    Почему не создать модуль на чистом terraform?


  1. Stas911
    09.12.2019 17:58

    Для небольших и не сильно кастомизированных сетапов имеет смысл сразу использовать сервис Control Tower. Это намного проще и быстрее.