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