Получение данных для аутентификации
Чтобы аутентифицироваться в Yandex Cloud и управлять базами данных YDB с помощью Terraform, можно использовать сервисный аккаунт, аккаунт на Яндексе, локальный или федеративный аккаунт. Также для аутентификации и работы Terraform с YDB понадобится интерфейс командной строки Yandex Cloud. Если у вас еще нет CLI — установите его, следуя инструкции.
Сервисный аккаунт можно создать и настроить, следуя следующей инструкции:
-
В консоли управления
выберите каталог, в котором хотите создать сервисный аккаунт. -
В списке сервисов выберите Identity and Access Management.
-
Нажмите кнопку Создать сервисный аккаунт.
-
Введите имя сервисного аккаунта:
- Длина имени — от 3 до 63 символов;
- Имя может содержать строчные буквы латинского алфавита, цифры и дефисы;
- Первым символом имени должна быть буква, а последним символом не должен быть дефис.
-
Назначьте сервисному аккаунту роли, необходимые для управления ресурсами YDB:
admin,ydb.admin.

-
Нажмите кнопку Создать.
Перейдите в Сервисный аккаунт и создайте авторизованный ключ для аутентификации Terraform в Yandex Cloud:
-
Нажмите на кнопку
Создать новый ключи выберете пунктСоздать авторизованный ключ.

-
Введите Описание ключа (опционально) и нажмите кнопку Создать.

-
Нажмите кнопку Скачать файл с ключом к себе на локальную машину.

Теперь, последний шаг по настройке аутентификации — создание специального профиля для подключения к Yandex Cloud на локальной машине с помощью Yandex Cloud CLI.
Выполните следующие команды:
- Создайте профиль
ycдля выполнения операций от имени сервисного аккаунта. Укажите имя профиля:yc config profile create <имя_профиля>. В терминал будет выведено следующие сообщение:Profile '<имя_профиля>' created and activated. - Задайте конфигурацию профиля следующими командами:
yc config set service-account-key <загруженный_ключ> yc config set cloud-id <идентификатор_облака> yc config set folder-id <идентификатор_каталога>
Описание значения параметров команд:
service-account-key— файл с авторизованным ключом сервисного аккаунта в формате JSON.cloud-id— идентификатор облака.folder-id— идентификатор каталога.
Добавьте аутентификационные данные в переменные окружения:
export YC_TOKEN=$(yc iam create-token)
export YC_CLOUD_ID=$(yc config get cloud-id)
export YC_FOLDER_ID=$(yc config get folder-id)
$Env:YC_TOKEN=$(yc iam create-token)
$Env:YC_CLOUD_ID=$(yc config get cloud-id)
$Env:YC_FOLDER_ID=$(yc config get folder-id)
Terraform будет использовать заданные переменные окружения для аутентификации, поэтому нужно обратить внимание на то, что время жизни IAM-токена не более 12 часов. После истечения времени жизни токена, Terraform будет выдавать ошибку аутентификации. В таком случае нужно обновить переменную окружения — выполнить повторно команду export YC_TOKEN=$(yc iam create-token).
Процесс получения нового токена можно автоматизировать с помощью crontab: введите crontab -e и введите 0 * * * * export YC_TOKEN=$(yc iam create-token). Теперь crontab будет самостоятельно каждый час обновлять токен в рамках текущей сессии, а чтобы токен обновлялся при открытии новой сессии нужно выполнить одну из команд:
echo "export YC_TOKEN=$(yc iam create-token)" >> ~/.bashrc # Команда для bash оболочки
echo "export YC_TOKEN=$(yc iam create-token)" >> ~/.zshrc # Команда для zsh оболочки
На этом настройка аутентификации закончена. Можно устанавливать и настраивать Terraform.