Skip to content

Latest commit

 

History

History
123 lines (96 loc) · 7.86 KB

File metadata and controls

123 lines (96 loc) · 7.86 KB

Создание базовой инфраструктуры (0-bootstrap)

Основня задача этого шага - создание базовой инфраструктуры для развертывания облачных окружений, разграничения доступа и реализации подхода Infrastructure-as-Code.

Пререквизиты

  • ID организации;

  • ID платежного акаунта;

  • установленная утилита командной строки YC CLI, сконфигурированный профиль;

  • учетная запись, от имени которой будет выполняться этот шаг, должна иметь роли:

    • organization-manager.organizations.owner - владелец организации

    или

    • resource-manager.admin на организацию (создавать, редактировать и удалять облака и каталоги, а также управлять доступом к ним);
    • billing.accounts.editor на платежный аккаунт (привязывать облака и сервисы к платежному аккаунту).

Пошаговая инструкция

Инициалиация Terraform и применение конфигурации

  • Инициализируйте Terraform в каталоге 0-bootstrap
terraform init
  • Создайте файл terraform.tfvars в каталоге 0-bootstrap и задайте в нем значения входных параметров
organization_id          = "ID_ВАШЕЙ_ОБЛАЧНОЙ_ОРГАНИЗАЦИИ"
billing_account_id       = "ID_ВАШЕГО_ПЛАТЕЖНОГО_АКАУНТА"
root_organization_admins = [ "YANDEX_ID_АДМИНИСТРАТОРА", "YANDEX_ID...", ... ]
  • Проверьте корректность конфигурации и предполагаемый план выполнения. Это помогает выявить возможные ошибки не дожидаясь фактического применения
terraform validate
terraform plan
  • Примените конфигурацию из каталога 0-bootstrap
terraform apply

Создание и настройка профиля YC

После успешного применения конфигурации в каталоге 0-bootstrap будет создано несколько файлов для настройки профиля утилиты YC.

  • Для создания профиля используйте скрипт .create-profile-ИМЯ_СЕРВИСНОГО_АККАУНТА.sh. При необходимости вы можете его редактировать и запускать вручную. Чтобы создать профиль в терминале выполните:
./.create-profile-ИМЯ_СЕРВИСНОГО_АККАУНТА.sh

Будет выведено сообщение:
Profile 'ИМЯ_СЕРВИСНОГО_АККАУНТА' created and activated.

  • Для активации профиля и настройки переменных окружения используйте .activate-profile-ИМЯ_СЕРВИСНОГО_АККАУНТА.sh. Его так же можно редактировать при необходимости. Чтобы активировать профиль в терминале выполните:
source ./.activate-profile-ИМЯ_СЕРВИСНОГО_АККАУНТА.sh

Будет выведено сообщение: Profile 'ИМЯ_СЕРВИСНОГО_АККАУНТА' activated.

Важно:

  1. Выполняйте команду команду source ..., приведенную выше, каждый раз, когда планируете применять конфигурацию с полномочиями уровня организации.
  2. Время жизни IAM-токена сервисного аккаунта составляет не более 12 часов, его необходимо периодически обновлять. Для этого также регулярно выполняйте команду source ....

Перенос состояния Terraform в бакет (опционально)

  • получите значение выходного параметра backend_tf, командой
terraform output backend_tf

Результат:

<<EOT
terraform {
  backend "s3" {
    region         = "ru-central1"
    bucket         = "bootstrap-****"   # вместо **** будут случайные символы
    key            = "bootstrap"

    dynamodb_table = "state-lock-table"

    endpoints = {
      s3       = "https://storage.yandexcloud.net",
      dynamodb = "https://docapi.serverless.yandexcloud.net/ru-central1/****/****"  # вместо **** будут параметры вашего подключения
    }

    skip_credentials_validation = true
    skip_region_validation      = true
    skip_requesting_account_id  = true
    skip_s3_checksum            = true
  }
}

EOT
  • создайте в каталоге 0-bootstrap файл backend.tf, вставьте в него текст между строками с тэгом EOT (строки с EOT не копировать!).
  • иницализируйте переменные окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY значениями из созданного файла .env:
source ./.env

Либо, если вы используете сервисный акаунт и выделенный профиль YC, то выполните:

source ./.activate-profile-ИМЯ_СЕРВИСНОГО_АККАУНТА.sh
  • Перенесите Terraform state
terraform init -migrate-state

На вопрос Do you want to copy existing state to the new backend? введите на клавиатуре yes (либо используйте в командной строке дополнительный флаг -auto-approve).

Результаты применения

После применения конфигурации в организации будут созданы:

  • Группа org-admin с ролью organization-manager.admin на всю организацию. В эту группу добавлены паспортные учетные записи, указанные в параметре root_organization_admins. Используйте эту группу для включения в нее паспортных или федеративных учетных записей глобальных администраторов.
  • Облако bootstrap и каталог iac, содержащий:
    • Бакет bootstrap-**** для сохранения состояния Terraform (вместо **** - 4 случайных символа для обеспечения уникальности имени бакета).

    • Сервисный аккаунт bootstrap-terraform-sa с правами organization-manager.admin на всю организацию и storage.admin на в каталоге iac.

      Вы можете использовать этот аккаунт для настройки инструментов CICD.

      Статический ключ этого аккаунта, необходимый для для инициализаии переменных окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, сохранен в локальный файл .env. При использовании внешнего CICD настройте инициализацию переменных окружения значениями из файла .env.