Рубрики
Uncategorized

Как управлять многоогибной, многоэкранной инфраструктурой на AWS с использованием террафора

В одном из моих недавних обязательств мне пришлось потрогать подход к управлению инфраструктурой AWS по … Помечено с AWS, Terraform, DevOps, распределениями.

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

Поскольку любой разрабатыватель Sane Copy-Tweak, я сделал «Google» для вдохновение Но завершил поиск контента, который решается частично, либо только для сценариев многорековых, либо многорегулируемых, либо не просмотрел (например, без изоляции состояния между регионами). Для всех в подобных потребностях здесь что-то построить.

Предварительные условия

Понимание Террафом и концепции Модули , Бэкэнды , Рабочие пространства , Удаленный штат & AWS Provider потребуется иметь смысл контента в этом посте:

Следующие инструменты потребуются для эксперимента с приведенным примерным кодом:

С чем мы должны играть?

Модуль

Терраформ модуль Система помогает нам создавать настраиваемые шаблоны инфраструктуры, которые могут быть использованы по повторному использованию в различных средах ( Producty-A Развернуто для Разработка/производство ) Или через различные продукты (стандартные S3/Dynamodb/sns/etc шаблоны Несомненно

Отдохнуть

Терраформ Backend Конфигурация для AWS S3 Удаленный штат использует следующие переменные конфигурации для организации состояния инфраструктуры:

  • Ведро : Имя S3 Ведро, где государство будет храниться
  • workspace_key_prefix : Пользовательский префикс на пути к файлу состояния
  • Рабочая область : имя рабочего пространства
  • ключ : Имя файла состояния

В S3 Затем государственный файл может быть расположен в <Ведро>/// Отказ Если мы заменим Рабочая область с AP-Southeast-1 или AP-Southeast-2 , если мы заменим переменные workspace_key_prefix с Продукт-а и ключ с Terraform.tfstate Мы в конечном итоге с файлами состояний хранятся как:

bucket
    └──product-a
        ├──ap-southeast-1
        │   └── terraform.tfstate
        └──ap-southeast-2
            └── terraform.tfstate

Это устанавливает группирующие государства инфраструктуры на уровне продукта/проекта при установлении изоляции между развертываниями в разные регионы, сохраняя удобное хранение всех этих состояний в одном месте.

Подход

Использование модуля Terraform и Backend Systems, инфраструктура — асфальтированная линейка инфраструктуры — в качестве исходного кода, фрагмент конфигурации конфигурации конфигурации кода и террафора, описанная в разделе, описанная в разделе, дает нам способ:

  • Установить структуру, в которой общий или инфраструктура продукта/проекта является шаблон для повторного использования в различных средах
  • Тонкая настройка продукта/инфраструктура проекта на уровне окружающей среды, даже добавление инфраструктуры для окружающей среды для этих неидеальных случаев
  • поддерживать состояние на уровне региона, чтобы мы могли иметь лучшую изоляцию, канареечное развертывание и т. Д.,

Источник

├── environments
│   ├── development
│   |   ├── ap-southeast-1.tfvars
│   |   ├── ap-southeast-2.tfvars
│   |   ├── variables.tf
│   |   ├── main.tf
│   |   ├── provider.tf
│   |   ├── terraform.tf
│   |   └── terraform.tfvars
│   ├── test
│   |   ├── ap-southeast-1.tfvars
│   |   ├── ap-southeast-2.tfvars
│   |   └── ...
│   ├── stage
│   |   ├── ap-southeast-1.tfvars
│   |   └── ...
│   └── production
│   |   └── ...
└── modules
    ├── aws-s3
    │   ├── main.tf
    │   ├── provider.tf
    │   └── variables.tf
    ├── product-a
    │   ├── main.tf
    │   ├── provider.tf
    │   └── variables.tf
    └── sub-system-x
        ├── main.tf
        ├── provider.tf
        └── variables.tf
  • среды : Папка для изоляции различной среды ( Разработка / Тест / Этап / Производство ) Конкретная конфигурация. Это также помогает с гибкостью поддержания удельных инфраструктуры окружающей среды для тех, общих, неидеальных сценариев.
  • модули : Папка для хост-многоразовых ресурсов, сгруппированных при продукте/проекте или на уровне подсистемы или общих компонентов инфраструктуры. Эта папка не должна существовать в том же репозитории — она здесь делает здесь в качестве примера и может очень хорошо служить целю более чем горстки уши.

Конфигурации области региона управляются через их соответствующую <Рабочая область> .tfvars файл. Например, Среда/Разработка/AP-Southeast-2.tfvars Файл для AP-Southeast-2 регион в Развитие окружающая обстановка.

Также Terraform.tfvars Файл нашел внутри Развитие / Тест / Этап / Производство папка под среды может быть использован для установки общей конфигурации для данной среды во всех регионах.

Конфигурация Backend

terraform {
  required_version = "~> 0.12.6"

  backend "s3" {
    bucket               = "terraform-state-bucket"
    dynamodb_table       = "terraform-state-lock-table"
    encrypt              = true
    key                  = "terraform.tfstate"
    region               = "ap-southeast-2"
    workspace_key_prefix = "product-a"
  }
}

Примечание : Конфигурация, описанная в этом посте и включенном образца предполагает состояние состояния на окружающую среду. Но, если необходимость хранить состояние из всех сред в общем ведре, мы могли бы обновить workspace_key_prefix Значение, чтобы включить в нее среда. Например, с Продукт-а/Развитие или Продукт-а/производство мы в конечном итоге с состоянием при следующем пути в S3 :

bucket
    └──product-a
        ├──development
        │   ├──ap-southeast-1
        │   │   └── terraform.tfstate
        │   └──ap-southeast-2
        │       └── terraform.tfstate
        └──production
            ├──ap-southeast-1
            │   └── terraform.tfstate
            └──ap-southeast-2
                └── terraform.tfstate

Репозиторий

Источник для настройки образца можно найти в здесь Отказ

Работа с настройкой

Перейдите к папке окружающей среды, Развитие Например, на терминале. Примечание: Предполагается, что рабочая конфигурация для доступа к окружающей среде AWS

Инициализировать террафору

Чтобы начать, сначала инициализируйте свою местную информацию о состоянии террафора

terraform init

Перечислите доступные рабочие пространства

terraform workspace list

Создайте новое рабочее пространство (если оно уже не существует)

#terraform workspace new 
terraform workspace new ap-southeast-2

Выберите рабочее пространство

#terraform workspace select 
terraform workspace select ap-southeast-2

Планировать и применять изменения

#terraform plan -var-file=.tfvars
#terraform apply -var-file=.tfvars

terraform plan -var-file=ap-southeast-2.tfvars
terraform apply -var-file=ap-southeast-2.tfvars

Повторите для других регионов

Для AP-Southeast-1 область, край:

terraform workspace new ap-southeast-1
terraform workspace select ap-southeast-1 
terraform plan -var-file=ap-southeast-1.tfvars
terraform apply -var-file=ap-southeast-1.tfvars

Надеюсь, эта записка помогает излучить!

Оригинал: «https://dev.to/sdileep/manage-a-multi-environment-multi-region-infrastructure-on-aws-using-terraform-1p2p»