Feature/pravki3
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
# Заключение договора с ЮЛ
|
||||
|
||||
Аккаунт beeline cloud создается для физического лица. Для добавления организации необходимо отправить заявку из личного кабинета beeline cloud физического лица:
|
||||
|
||||
1. Войдите в [личный кабинет beeline cloud](https://lk.cloud.beeline.ru/).
|
||||
2. В информационном окне о бесплатном тестировании нажмите на ссылку **Заключить договор**.
|
||||
3. Заполните заявку на заключение договора:
|
||||
- **ФИО**: укажите контактное лицо;
|
||||
- **ИНН**: укажите ИНН организации, с которой заключается договор.
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
## Создать виртуальный ВМ
|
||||
|
||||
1. Откройте [консоль управления](https://console.cloud.dfcloud.ru).
|
||||
1. Отк
|
||||
2. Выбрать проект.
|
||||
3. На странице **Обзор** убедитесь в наличии свободных ресурсов.
|
||||
4. Нажмите **Создать ВМ**.
|
||||
5. Выберите образ ОС UNIX.
|
||||
6. [Заполните свойства cервера](../compute/compute-instructions/compute-servers-create.md#создать-ВМ).
|
||||
6.
|
||||
7. Нажмите **Cоздать ВМ**.
|
||||
|
||||
Виртуальный ВМ отобразится на странице **Облачные вычисления → ВМы**. Выполняется сборка виртуального ВМа. После окончания сборки ВМ перейдет в статус `Включен`.
|
||||
@@ -36,6 +36,3 @@ $ ssh -l ivanov -i /home/user/.ssh/id_rsa 10.0.0.1
|
||||
```
|
||||
|
||||
## Далее
|
||||
|
||||
- [Подключение дополнительного диска к виртуальному ВМу](../compute/compute-instructions/compute-disks.md#добавить-диск).
|
||||
- [Удаление виртуального ВМа](../compute/compute-instructions/compute-servers-manage.md#удалить-ВМ).
|
||||
@@ -1,74 +0,0 @@
|
||||
# Ресурсные записи
|
||||
|
||||
Ресурсная запись — это запись о соответствии доменного имени и IP-адреса и другой информации в системе доменных имен. Ресурсные записи хранятся на DNS-ВМах. DNS-ВМы выполняют маршрутизацию запросов, поступающих на определенные доменные имена.
|
||||
|
||||
Сервис DNS поддерживает работу с типами записей:
|
||||
|
||||
`A` — сопоставление доменного имени и IPv4-адреса.
|
||||
|
||||
`CNAME` — синоним FQDN.
|
||||
|
||||
`PTR` — сопоставление IP-адреса и доменного имени.
|
||||
|
||||
У каждой ресурсной записи есть следующие параметры:
|
||||
|
||||
- зона DNS;
|
||||
- тип записи;
|
||||
- доменное имя;
|
||||
- значение записи;
|
||||
- время жизни записи (TTL).
|
||||
|
||||
**TTL (Time to live)** — время жизни записи. TTL определяет, сколько времени запись будет храниться в локальном кэше пользователя. Если вы изменили свойства записи в DNS, то пользователи не увидят этих изменений до тех пор, пока не истечет значение TTL.
|
||||
|
||||
## Создать запись
|
||||
|
||||
1. Перейдите в консоль управления.
|
||||
2. Откройте **DNS**.
|
||||
3. Нажмите **Добавить**.
|
||||
4. Выберите тип записи: `A`, `CNAME`, `PTR`.
|
||||
5. Заполните параметры записи:
|
||||
|
||||
::: details A
|
||||
- **Зона**: выберите из списка *<slug-проекта>.cloud.dfcloud.ru*.
|
||||
- **Параметр**: введите доменное имя записи. Максимальная длина имени — 63 символа и полного доменного имени (FQDN) — 255 символов.
|
||||
- **Значение**: введите IP-адрес виртуального ВМа. IP-адрес можно посмотреть на странице **Облачные вычисления → ВМы**.
|
||||
- **TTL**: введите время жизни записи в секундах.
|
||||
:::
|
||||
|
||||
::: details CNAME
|
||||
- **Зона**: выберите из списка *<slug-проекта>.cloud.dfcloud.ru*.
|
||||
- **Параметр**: введите доменное имя записи.
|
||||
- **Значение**: введите FQDN ВМа, точка не ставится в конце значения.
|
||||
- **TTL**: введите время жизни записи в секундах.
|
||||
:::
|
||||
|
||||
::: details PTR
|
||||
|
||||
Запись в обратной зоне добавляется автоматически при создании виртуального ВМа. Для одного IP-адреса предназначена одна PTR-запись. Если для нужного IP-адреса не создана PTR-запись, то создайте ее вручную.
|
||||
|
||||
- **Зона**: выберите из списка *<slug-проекта>.cloud.dfcloud.ru*.
|
||||
- **Параметр**: введите IP-адрес виртуального ВМа. IP-адрес можно посмотреть на странице **Облачные вычисления → ВМы**.
|
||||
- **Значение**: введите FQDN ВМа.
|
||||
- **TTL**: введите время жизни записи в секундах.
|
||||
:::
|
||||
|
||||
2. Нажмите **Добавить**.
|
||||
|
||||
## Редактировать запись
|
||||
|
||||
1. Перейдите в консоль управления.
|
||||
2. Откройте **DNS**.
|
||||
3. Откройте записи прямой или обратной зоны.
|
||||
4. В таблице записей напротив нужной записи нажмите **Редактировать**.
|
||||
5. Измените `Параметр`, `Значение` или `TTL` записи.
|
||||
6. Нажмите **Сохранить**.
|
||||
|
||||
## Удалить запись
|
||||
|
||||
1. Перейдите в консоль управления.
|
||||
2. Откройте **DNS**.
|
||||
3. Откройте записи прямой или обратной зоны.
|
||||
4. В таблице записей напротив нужной записи нажмите **Удалить**.
|
||||
5. В открывшемся окне подтвердите операцию:
|
||||
- Скопируйте предложенный текст.
|
||||
- Нажмите **Удалить**.
|
||||
@@ -1,3 +0,0 @@
|
||||
# Квоты и лимиты
|
||||
|
||||
Ограничений на количество создаваемых записей в зоне нет.
|
||||
@@ -1,11 +0,0 @@
|
||||
# Обзор сервиса
|
||||
|
||||
Сервис DNS предназначен для управления доменными именами ресурсов в проекте.
|
||||
|
||||
Сервис DNS предоставляет одну зону в `cloud.dfcloud.ru`.
|
||||
|
||||
Для каждого проекта автоматически создается зона: `<slug-проекта>.cloud.dfcloud.ru`. В этой зоне можно [управлять записями](../dns/dns-instructions/dns-create.md): создавать, редактировать, удалять.
|
||||
|
||||
При создании виртуального ВМа автоматически добавляются:
|
||||
- FQDN ВМа в прямой зоне;
|
||||
- PTR-запись в обратной зоне.
|
||||
@@ -1,86 +0,0 @@
|
||||
# S3cmd
|
||||
|
||||
S3cmd — это консольный клиент (Linux, Mac) для работы с Amazon S3-совместимыми хранилищами.
|
||||
|
||||
Подробности о работе c s3cmd см. [в документации s3cmd](https://s3tools.org/s3cmd-howto).
|
||||
|
||||
## Подготовительные шаги
|
||||
|
||||
- [Создайте аккаунт S3 и ключ доступа](../storage-s3.md#создать-аккаунт). Сохраните ключ **secret**.
|
||||
- Установите [S3cmd](https://s3tools.org/download).
|
||||
|
||||
## Настроить подключение
|
||||
|
||||
Перед настройкой подключения [создайте аккаунт и ключ доступа](../storage-s3.md#создать-аккаунт).
|
||||
|
||||
Настроить подключение к хранилищу можно одним из способов:
|
||||
- **1 способ**: установить значения переменных и подключиться к хранилищу;
|
||||
- **2 способ**: настроить подключение с помощью стандартной команды s3cmd `s3cmd --configure`.
|
||||
|
||||
::: tabs
|
||||
|
||||
== 1 способ
|
||||
1. Установите значения переменных:
|
||||
|
||||
```sh
|
||||
S3_ACCESS_KEY=...
|
||||
S3_SECRET_KEY=...
|
||||
S3_URL=...
|
||||
```
|
||||
где:
|
||||
- `S3_ACCESS_KEY`: введите *Access key*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
|
||||
- `S3_SECRET_KEY`: введите ключ *secret*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
|
||||
- `S3_URL`: имя хоста для подключения соответствует [региону](../../storage-overview.md#регионы-и-зоны-доступности).
|
||||
|
||||
2. Подключите хранилище:
|
||||
|
||||
```sh
|
||||
s3cmd --ssl --access_key="${S3_ACCESS_KEY}" --secret_key="${S3_SECRET_KEY}" --host="${S3_URL}" --region=US --no-progress --host-bucket="%(bucket)" --dump-config > ~/.s3cfg
|
||||
```
|
||||
|
||||
== 2 способ
|
||||
1. Выполните команду в терминале:
|
||||
|
||||
```sh
|
||||
s3cmd --configure
|
||||
```
|
||||
2. Укажите значения для следующих параметров:
|
||||
- `Access Key`: введите *Access key*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
|
||||
- `Secret Key`: введите ключ *secret*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт)
|
||||
- .
|
||||
- `S3 Endpoint`: имя хоста для подключения соответствует [региону](../../storage-overview.md#регионы-и-зоны-доступности).
|
||||
- `DNS-style bucket+hostname:port template for accessing a bucket`: введите `%(bucket)`.
|
||||
- `Use HTTPS protocol`: введите `Y`.
|
||||
3. Остальные настройки оставьте без изменений.
|
||||
4. Устанавливается соединение. В случае успеха, отобразится `Success. Your access key and secret key worked fine :-)`.
|
||||
5. Сохраните конфигурацию: `Save settings? [y/N]`: введите `Y`
|
||||
|
||||
:::
|
||||
|
||||
S3cmd сохранит настройки в файле `~/.s3cfg`, его можно изменить вручную.
|
||||
|
||||
::: warning Важно
|
||||
Если при установке соединения с хранилищем возникла ошибка валидности SSL-сертификатов, то выполните команду в терминале для добавления корневого сертификата:
|
||||
|
||||
```sh
|
||||
echo 'alias s3cmd="s3cmd --ca-certs /etc/ssl/certs/ca-certificates.crt"' >> ~/.profile
|
||||
```
|
||||
Выполните настройку подключения к хранилищу снова.
|
||||
:::
|
||||
|
||||
## Проверить подключение к хранилищу
|
||||
|
||||
Выполните команду в терминале:
|
||||
|
||||
```sh
|
||||
s3cmd ls
|
||||
```
|
||||
В выводе должен отобразиться список доступных бакетов. Список может быть пустым, если в хранилище не создано ни одного бакета.
|
||||
|
||||
## Примеры команд
|
||||
|
||||
- `s3cmd --help` - справка.
|
||||
- `s3cmd mb s3://<имя_бакета>` - создание бакета.
|
||||
- `s3cmd ls s3://<имя_бакета>` - получение списка бакетов.
|
||||
|
||||
Подробности о работе c s3cmd см. [в документации s3cmd](https://s3tools.org/usage).
|
||||
@@ -1,44 +0,0 @@
|
||||
# WinSCP
|
||||
|
||||
WinSCP — это графический клиент, поддерживающий работу с различными типами хранилищ, в том числе с [Amazon S3](https://aws.amazon.com/ru/s3/) совместимыми хранилищами. Доступен для Windows.
|
||||
|
||||
## Настроить подключение
|
||||
|
||||
1. [Создайте аккаунт и ключ доступа](../storage-s3.md#создать-аккаунт).
|
||||
2. Скачайте WinSCP с [официального сайта](https://winscp.net/eng/download.php).
|
||||
3. Откройте WinSCP.
|
||||
4. Cоздайте новое подключение:
|
||||
- **Протокол передачи**: выберите из списка *Amazon S3*.
|
||||
- **Имя хоста**: соответствует [региону](../../storage-overview.md#регионы-и-зоны-доступности).
|
||||
- **Порт**: введите *443*.
|
||||
- **Идентификатор ключа доступа**: введите *Access key*, полученный при создании аккаунта в консоли управления.
|
||||
- **Секретный ключ доступа**: введите ключ *Secret*, полученный при создании аккаунта в консоли управления.
|
||||
5. Нажмите **Еще**.
|
||||
6. В окне **Расширенные настройки соединения** выберите **Среда → S3 → Стиль по умолчанию URL** значение *Путь*.
|
||||
7. Нажмите **OK**.
|
||||
8. Нажмите **Войти**, потребуется еще раз ввести секретный ключ доступа.
|
||||
|
||||
В результате успешного подключения на вкладке справа отобразятся бакеты. Список может быть пустым, если в хранилище не создано ни одного объекта.
|
||||
|
||||
Подробности о работе WinSCP с S3-совместимыми хранилищами см. [в документации WinSCP](https://winscp.net/eng/docs/guide_amazon_s3#buckets).
|
||||
|
||||
## Проверить доступность хранилища
|
||||
|
||||
Для проверки доступности хранилища создайте файл в хранилище и попробуйте его скачать.
|
||||
|
||||
1. Войдите в S3 хранилище.
|
||||
2. В меню **Файлы** выберите **Новый → Каталог**;
|
||||
- введите название каталога по [правилам](../../storage-overview.md#правила-именования);
|
||||
3. Создайте файл в каталоге из п. 2:
|
||||
- в меню **Файлы** выберите **Новый → Файл**;
|
||||
- введите название файла по [правилам](../../storage-overview.md#правила-именования);
|
||||
- сохраните файл.
|
||||
4. Выдайте права на действия с файлом:
|
||||
- правой кнопкой мыши нажмите на имя файла и выберите **Свойства**;
|
||||
- в ACL установите права **R** для всех;
|
||||
- нажмите **OK**.
|
||||
5. Проверьте сетевую доступность файла, созданного на шаге 3:
|
||||
- правой кнопкой мыши нажмите на имя файла и выберите **Файловые пользовательские команды → Сгенерировать URL для протокола HTTP**;
|
||||
- в открывшемся окне нажмите **Копировать**;
|
||||
- вставьте скопированную ссылку в браузер, заменив `http://` на `https://`;
|
||||
- начнется скачивание файла.
|
||||
@@ -1,136 +0,0 @@
|
||||
# Управление хранилищем
|
||||
|
||||
## Создать аккаунт
|
||||
|
||||
При добавлении хранилища выполняется создание аккаунта S3 и ключей доступа.
|
||||
|
||||
::: tip Информация
|
||||
В момент создания нового хранилища сохраните ключи и секреты (токены) доступа. Данная информация не хранится на ВМах Vega. В случае утери ключей доступа все данные хранилища будут недоступны.
|
||||
:::
|
||||
|
||||
1. Перейдите в консоль управления.
|
||||
2. Откройте **Объектное хранилище**.
|
||||
3. Нажмите **Добавить хранилище**.
|
||||
4. Заполните параметры хранилища:
|
||||
- **Регион**: выбрать из списка.
|
||||
- **Название аккаунта**: введите название аккаунта. <!--Есть правила нейминга?-->
|
||||
- **Размер хранилища**: введите значение в Гбайтах, размер хранилища ограничен квотой.
|
||||
5. Нажмите **Создать**.
|
||||
6. В открывшемся окне скопируйте ключи и сохраните их в надежном месте.
|
||||
7. Нажмите **Закрыть**.
|
||||
|
||||
Аккаунт S3 будет добавлен в разделе **Объектное хранилище**. Далее необходимо [подключиться к хранилищу c помощью утилиты S3cmd](../storage-instructions/s3-connect/s3cmd.md) или [WinSCP](../storage-instructions/s3-connect/winscp.md).
|
||||
|
||||
## Удалить аккаунт
|
||||
|
||||
::: warning Важно
|
||||
Перед удалением аккаунта удалите бакеты вручную.
|
||||
:::
|
||||
|
||||
1. Перейдите в консоль управления.
|
||||
2. Откройте **Объектное хранилище**.
|
||||
3. Найдите нужное хранилище.
|
||||
5. Нажмите ⠇ и выберите **Удалить**.
|
||||
6. В открывшемся окне подтвердите операцию:
|
||||
- Скопируйте предложенный текст.
|
||||
- Нажмите **Удалить**.
|
||||
|
||||
## Управление жизненным циклом объектов в бакете
|
||||
|
||||
Управление жизненным циклом объектов позволяет настроить автоматическое удаление отдельных объектов или групп объектов по заданным условиям и расписанию.
|
||||
|
||||
Для управления жизненными циклами с помощью S3cmd используется [конфигурация в формате XML](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html).
|
||||
|
||||
::: tabs
|
||||
|
||||
== Загрузить политику
|
||||
|
||||
```sh
|
||||
s3cmd setlifecycle bucket-lifecycle.xml s3://bucket
|
||||
```
|
||||
|
||||
== Получить политику
|
||||
|
||||
```sh
|
||||
s3cmd getlifecycle s3://bucket
|
||||
```
|
||||
|
||||
== Удалить политику
|
||||
|
||||
```sh
|
||||
s3cmd dellifecycle s3://bucket
|
||||
```
|
||||
:::
|
||||
|
||||
## Управление доступом (ACL)
|
||||
|
||||
Access Control List (ACL) — список управления доступом, который определяет, список пользователей для доступа к файлам или бакету и список допустимых или запрещенных операции.
|
||||
|
||||
Для управления доступом в S3 хранилище можно использовать команды из [документации S3cmd](https://s3tools.org/s3cmd).
|
||||
|
||||
## Монтирование бакета
|
||||
|
||||
Монтирование бакета позволит управлять содержимым S3-хранилища через интерфейс файловой системы. Бакет объектного хранилища монтируется через [FUSE](https://ru.wikipedia.org/wiki/FUSE_(%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_%D1%8F%D0%B4%D1%80%D0%B0)).
|
||||
|
||||
В инструкции рассмотрено разовое монтирование контейнера. В этом случае при каждой перезагрузке системы контейнер будет размонтирован. Потребуется выполнить монтирование контейнера вручную после перезагрузки системы.
|
||||
|
||||
::: tabs
|
||||
== GeeseFS
|
||||
1. Установите клиент GeeseFS.
|
||||
2. Сделайте файл geesefs исполняемым и поместите его в директорию `/bin`:
|
||||
|
||||
```sh
|
||||
chmod 700 geesefs-linux-amd64
|
||||
mv geesefs-linux-amd64 /bin/geesefs
|
||||
```
|
||||
|
||||
3. [Используйте ключ доступа, полученный при создании аккаунта](#создать-аккаунт), и поместите его в директорию `~/.aws/credentials`:
|
||||
|
||||
```
|
||||
[default]
|
||||
aws_access_key_id = <Access key>
|
||||
aws_secret_access_key = <secret>
|
||||
```
|
||||
4. Создайте директорию, в которой будет отображаться содержимое бакета. Например, `/mnt/s3`.
|
||||
5. Для монтирования бакета выполните команду:
|
||||
|
||||
```sh
|
||||
/bin/geesefs --endpoint <endpoint s3> <имя бакета> /mnt/s3/
|
||||
```
|
||||
== S3fs
|
||||
1. Установите клиент S3fs:
|
||||
|
||||
```sh
|
||||
apt install s3fs
|
||||
```
|
||||
2. Cохраните [ключ доступа и секретный ключ, полученные при создании аккаунта](#создать-аккаунт) в файле `~/.passwd-s3fs`:
|
||||
|
||||
```sh
|
||||
echo <идентификатор_ключа>:<секретный_ключ> > ~/.passwd-s3fs
|
||||
```
|
||||
3. Ограничьте доступ к файлу `~/.passwd-s3fs`:
|
||||
|
||||
```sh
|
||||
chmod 600 ~/.passwd-s3fs
|
||||
```
|
||||
4. Для монтирования бакета выполните команду:
|
||||
|
||||
```sh
|
||||
s3fs <имя_бакета> <путь_к_директории> -o passwd_file=~/.passwd-s3fs -o url=<адрес_endpoint> -o use_path_request_style
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
Для проверки монтирования бакета выполните команду:
|
||||
|
||||
```sh
|
||||
df-h
|
||||
```
|
||||
|
||||
### Размонтировать бакет
|
||||
|
||||
Для размонтирования бакета выполните команду:
|
||||
|
||||
```sh
|
||||
umount <путь_к_директории>
|
||||
```
|
||||
@@ -1,3 +0,0 @@
|
||||
# Квоты и лимиты
|
||||
|
||||
Для сервиса действует квота по умолчанию, определяемая при инициализация проекта, в размере 100 Гбайт.
|
||||
@@ -1,17 +0,0 @@
|
||||
# Уровень обслуживания
|
||||
|
||||
Настоящий документ определяет уровень обслуживания (SLA) сервиса «Объектное хранилище».
|
||||
|
||||
|
||||
## Описание предоставляемых услуг
|
||||
|
||||
В таблице рассмотрены услуги, предоставляемые в рамках SLA сервиса «Объектное хранилище».
|
||||
|
||||
| Наименование услуги | Краткое описание | Ценность для потребителя | Целевая аудитория |
|
||||
|---|---|---|---|
|
||||
| Доступ к S3 хранилищу | Web-доступ к эластичному хранилищу данных | Возможность очень быстрого подключения дискового пространства в приложение, ВМ, ВРС и т. п. | DevOps<br> Администраторы |
|
||||
|
||||
|
||||
## Доступность услуги
|
||||
|
||||
Доступ к S3 хранилищу 99,5 %.
|
||||
@@ -1,26 +0,0 @@
|
||||
# Обзор сервиса
|
||||
|
||||
Сервис «Объектное хранилище» предназначен для хранения и извлечения данных. Доступ к объектам осуществляется из любых периметров по протоколу https.
|
||||
|
||||
## Регионы и зоны доступности
|
||||
|
||||
| Регион | Хранилище | Адрес |
|
||||
| -------------------------------- | --------- | ---------------------------------------- |
|
||||
| s3-cloud-dfcloud-ru | Ceph | https://s3.cloud.dfcloud.ru |
|
||||
|
||||
|
||||
## Модели адресации в S3
|
||||
|
||||
Сервис поддерживает модель адресации для доступа к объектному хранилищу S3:
|
||||
|
||||
- `Path-style` — модель, при которой название бакета указывается в части пути до объекта, например: https://s3.cloud.dfcloud.ru/bucket/file.txt
|
||||
|
||||
## Правила именования
|
||||
|
||||
Правила именования бакетов:
|
||||
- имя бакета в корневом каталоге должно быть уникальным для всего хранилища S3, на каталоги 2-го и последующих уровней это правило не распространяется;
|
||||
- может содержать строчные буквы латинского алфавита, цифры, дефис и подчеркивания;
|
||||
- подчеркивание недопустимо для имени бакета в корневом каталоге.
|
||||
|
||||
Правила именования файлов в бакете:
|
||||
- может содержать строчные буквы латинского алфавита, цифры, дефис и подчеркивания.
|
||||
@@ -1,84 +0,0 @@
|
||||
# Вопросы и ответы
|
||||
|
||||
## Не могу найти ресурс, созданный через Terraform?
|
||||
|
||||
Во время выполнения команды `terraform [apply | plan]` получаем ошибку `404` __ВМ по вашему запросу не найден__:
|
||||
|
||||
```
|
||||
lanning failed. Terraform encountered an error while generating this plan.
|
||||
╷
|
||||
│ Error: url=[https://console.cloud.dfcloud.ru/api/v1/projects/vega-dev-demo/vps/servers/cac9da7e-d3b1-488c-9bb0-277fd20140d1,body=]
|
||||
{"code":404,"error":"server-not-found","description":"ВМ по вашему запросу не найден"} // [!code focus]
|
||||
│
|
||||
│ with beecloud_server.router[1], // [!code focus]
|
||||
│ on main.tf line 23, in resource "beecloud_server" "router":
|
||||
│ 23: resource "beecloud_server" "router" {
|
||||
│
|
||||
```
|
||||
Решение:
|
||||
|
||||
1. Удалите поломанный ресурс из файла состояния:
|
||||
```sh
|
||||
terraform state rm "beecloud_server.router[1]"
|
||||
```
|
||||
Вывод:
|
||||
|
||||
```
|
||||
Removed beecloud_server.router[1]
|
||||
Successfully removed 1 resource instance(s).
|
||||
```
|
||||
2. Повторно примените конфигурацию Terraform:
|
||||
|
||||
```sh
|
||||
terraform apply
|
||||
```
|
||||
|
||||
Terraform создаст недостающий ресурс.
|
||||
|
||||
## Что делать, если при создании ресурса Terraform выдает ошибку: "context deadline exceeded"?
|
||||
|
||||
Во время выполнения команды `terraform apply` получаем ошибку: __context deadline exceeded__
|
||||
|
||||
```
|
||||
beecloud_server.my-server: Creating...
|
||||
...
|
||||
beecloud_server.my-server: Still creating... [10m elapsed]
|
||||
╷
|
||||
│ Error: Error waiting for server ae8c5364-16e4-4b9b-84e1-092a04647838 to come ready, error: context deadline exceeded // [!code focus]
|
||||
│
|
||||
│ with beecloud_server.my-server, // [!code focus]
|
||||
│ on main.tf line 31, in resource "beecloud_server" "my-server":
|
||||
│ 31: resource "beecloud_server" "my-server" {
|
||||
╵
|
||||
```
|
||||
|
||||
Решение:
|
||||
|
||||
Увеличьте тайм-аут ожидания ресурса при создании:
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "my-server" {
|
||||
...
|
||||
|
||||
timeouts {
|
||||
create = "30m"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Тайм-ауты по умолчанию для операций:
|
||||
|
||||
| CRUD Function | Default Timeout |
|
||||
|----------------------|-----------------|
|
||||
| Create | 20 minutes |
|
||||
| CreateContext | 20 minutes |
|
||||
| CreateWithoutTimeout | N/A |
|
||||
| Delete | 20 minutes |
|
||||
| DeleteContext | 20 minutes |
|
||||
| DeleteWithoutTimeout | N/A |
|
||||
| Read | 20 minutes |
|
||||
| ReadContext | 20 minutes |
|
||||
| ReadWithoutTimeout | N/A |
|
||||
| Update | 20 minutes |
|
||||
| UpdateContext | 20 minutes |
|
||||
| UpdateWithoutTimeout | N/A |
|
||||
@@ -1,31 +0,0 @@
|
||||
# Terraform
|
||||
|
||||
[Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Облаке Vega и управлять ей с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE).
|
||||
|
||||
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
|
||||
|
||||
## Установите Terraform
|
||||
|
||||
::: tabs
|
||||
== UNIX
|
||||
Выполните команду в терминале:
|
||||
|
||||
Ubuntu/Debian
|
||||
```sh
|
||||
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
|
||||
sudo apt update && sudo apt install terraform
|
||||
```
|
||||
|
||||
== MacOS
|
||||
Выполните команду в терминале:
|
||||
|
||||
```sh
|
||||
brew tap hashicorp/tap
|
||||
brew install hashicorp/tap/terraform
|
||||
```
|
||||
|
||||
== Windows
|
||||
Установить по ссылке [386 v1.9.6](https://releases.hashicorp.com/terraform/1.9.6/terraform_1.9.6_windows_386.zip) [AMD64 v1.9.6](https://releases.hashicorp.com/terraform/1.9.6/terraform_1.9.6_windows_amd64.zip)
|
||||
|
||||
:::
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_affinity_groups"
|
||||
description: "Get information about multiple beecloud affinity groups"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_affinity_groups
|
||||
|
||||
Получение информации обо всех аффинити-группах проекта.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
Получение всех аффинити-групп проекта
|
||||
|
||||
```hcl
|
||||
data "beecloud_affinity_groups" "all" {}
|
||||
|
||||
output "beecloud_affinity_groups_all" {
|
||||
value = data.beecloud_affinity_groups.all
|
||||
}
|
||||
```
|
||||
|
||||
Дополнительная фильтрация по ID региона
|
||||
|
||||
```hcl
|
||||
data "beecloud_affinity_groups" "by_region" {
|
||||
region = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
|
||||
output "beecloud_affinity_groups_by_region" {
|
||||
value = data.beecloud_affinity_groups.by_region
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
- `id` - Проект в beecloud, к которому относятся ВМа (ID/Slug).
|
||||
- `affinity_groups` - Список аффинити-групп.
|
||||
- `affinity_group_id` - ID в системе TF. Соответствует ID группы.
|
||||
- `project_id` - ID проекта.
|
||||
- `name` - Наименование ВМа.
|
||||
- `policy` - Политика группы (affinity/soft-affinity/anti-affinity/soft-anti-affinity).
|
||||
- `region` - Данные о регионе.
|
||||
- `id` - ID региона
|
||||
- `slug` - Слаг региона.
|
||||
- `name` - Наименование региона.
|
||||
- `condition` - Состояние группы (статус) (готовность к использованию).
|
||||
@@ -1,97 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_flavors"
|
||||
description: "Get information about multiple beecloud Flavors of project"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_flavors
|
||||
|
||||
Получение информации обо всех тарифах, доступных проекту.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_flavors" "all" {}
|
||||
|
||||
output "beecloud_flavors_all" {
|
||||
value = data.beecloud_flavors.all
|
||||
}
|
||||
```
|
||||
|
||||
## Список доступных тарифов
|
||||
|
||||
```hcl
|
||||
data "beecloud_flavors" "all_slug" {}
|
||||
|
||||
output "flavors_slug" {
|
||||
value = data.beecloud_flavors.all_slug.flavors[*].slug
|
||||
}
|
||||
```
|
||||
|
||||
## Варианты фильтрации
|
||||
|
||||
Поиск по CPU и RAM
|
||||
|
||||
> RAM указывается в Мегабайтах пример (2048 Мб = 2 Гб)
|
||||
|
||||
```hcl
|
||||
data "beecloud_flavors" "cpu2" {
|
||||
filters {
|
||||
vcpu = 2
|
||||
}
|
||||
}
|
||||
|
||||
output "flavors_cpu2" {
|
||||
value = data.beecloud_flavors.cpu2
|
||||
}
|
||||
|
||||
data "beecloud_flavors" "cpu2ram2" {
|
||||
filters {
|
||||
vcpu = 2
|
||||
ram = 2 * 1024
|
||||
}
|
||||
}
|
||||
|
||||
output "flavors_cpu2ram2" {
|
||||
value = data.beecloud_flavors.cpu2ram2
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - TF ID. Соответствует ID/Slug проекта.
|
||||
- `filters` - параметры фильтра
|
||||
- `ram` - значение заданного фильтра для ОЗУ
|
||||
- `vcpu` - значение заданного фильтра для ЦПУ
|
||||
- `flavors` - Список доступных тарифов.
|
||||
- `flavor_id` - ID тарифа.
|
||||
- `group` - Тарифная группа.
|
||||
- `name` - Наименование тарифа.
|
||||
- `ram` - Параметр ram тарифа.
|
||||
- `regions` - Доступен для регионов. Список.
|
||||
- `slug` - Slug тарифа.
|
||||
- `vcpu` - Параметр vcpu тарифа.
|
||||
|
||||
# beecloud_flavor
|
||||
|
||||
Получение информации о тарифе
|
||||
|
||||
```hcl
|
||||
data "beecloud_flavor" "cpu2_ram2" {
|
||||
slug = "cpu2ram2"
|
||||
}
|
||||
|
||||
output "flavor_id" {
|
||||
value = data.beecloud_flavor.cpu2_ram2.flavor_id
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `flavor_id` - ID тарифа.
|
||||
- `slug` - Slug тарифа.
|
||||
- `name` - Наименование тарифа.
|
||||
- `vcpu` - Параметр vcpu тарифа.
|
||||
- `ram` - Параметр ram тарифа.
|
||||
- `group` - Тарифная группа.
|
||||
- `regions` - Доступен для регионов. Список.
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_images"
|
||||
description: "Get information about multiple beecloud Images of project"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_images
|
||||
|
||||
Получение информации обо всех образах, доступных проекту.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_images" "all" {}
|
||||
|
||||
output "beecloud_images_all" {
|
||||
value = data.beecloud_images.all
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - TF ID. Соответствует ID/Slug проекта.
|
||||
- `images` - Список доступных образов.
|
||||
- `image_id` - ID образа.
|
||||
- `slug` - Slug образа.
|
||||
- `name` - Наименование образа.
|
||||
- `distribution` - Дистрибутив образа.
|
||||
- `version` - Версия образа.
|
||||
- `min_disk` - Минимальный размер диска.
|
||||
- `regions` - Доступен для регионов. Список.
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_regions"
|
||||
description: "Get information about multiple beecloud Regions of project"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_regions
|
||||
|
||||
Получение информации обо всех регионах, доступных проекту.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_regions" "all" {}
|
||||
|
||||
output "beecloud_regions_all" {
|
||||
value = data.beecloud_regions.all
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - TF ID. Соответствует ID/Slug проекта.
|
||||
- `regions` - Список доступных регионов.
|
||||
- `region_id` - ID региона.
|
||||
- `slug` - Slug региона.
|
||||
- `name` - Наименование региона.
|
||||
- `hypervisor` - Гипервизор.
|
||||
- `location` - Местонахождение.
|
||||
- `priority` - Приоритет.
|
||||
- `zone` - Зона региона.
|
||||
- `volumes_type` - Доступные типы дисков. Список.
|
||||
- `features` - Сетевой периметр (?)
|
||||
- `limits` - Лимиты региона.
|
||||
- `instance` - Количество инстансов.
|
||||
- `ram` - Ограничение по RAM.
|
||||
- `vcpu` - Ограничение по VCPU.
|
||||
- `volumes_size` - Объект типа "key:value". Размеры для каждого типа диска (hhd/ssd/nvme/..)
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_server"
|
||||
description: "Get information about beecloud Instance"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_server
|
||||
|
||||
Получение информации о ВМе.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_server" "server_by_id" {
|
||||
server_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
|
||||
output "server_beecloud" {
|
||||
value = data.beecloud_server.server_by_id
|
||||
}
|
||||
```
|
||||
|
||||
## Аргументы
|
||||
|
||||
- `server_id` - ID ВМа.
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - ID TF. Соответствует ID ВМа.
|
||||
- `name` - Наименование ВМа.
|
||||
- `image` - Параметры образа ВМа.
|
||||
- `id` - ID образа ВМа.
|
||||
- `slug` - Slug образа.
|
||||
- `name` - Наименование образа.
|
||||
- `region` - Регион, где создан ВМ.
|
||||
- `id` - ID региона.
|
||||
- `slug` - Slug региона.
|
||||
- `name` - Наименование региона.
|
||||
- `flavor` - Тариф.
|
||||
- `id` - ID тарифа.
|
||||
- `slug` - Slug тарифа.
|
||||
- `name` - Наименование тарифа.
|
||||
- `volumes` - Список дисков.
|
||||
- `id` - ID диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска (hhd/ssd/nvme).
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `name` - Наименование диска.
|
||||
- `addresses` - Список адресов.
|
||||
- `type` - Тип адреса.
|
||||
- `address` - IP адрес.
|
||||
- `version` - Версия IP адреса (4/6).
|
||||
- `status` - Статус ВМа (Создан/Создается/...)
|
||||
- `fqdn` - Полный домен.
|
||||
- `tags` - Список тэгов.
|
||||
- `wait_completed` - Ключ ожидания состояния ВМа (Создан/Создается...).
|
||||
@@ -1,55 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_servers"
|
||||
description: "Get information about multiple beecloud Instances of project"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_servers
|
||||
|
||||
Получение информации обо всех ВМах проекта.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_servers" "all" {}
|
||||
|
||||
output "beecloud_servers_all" {
|
||||
value = data.beecloud_servers.all
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - Проект в beecloud, к которому относятся ВМыы (ID/Slug).
|
||||
- `servers` - Список ВМов.
|
||||
- `server_id` - ID ВМа.
|
||||
- `name` - Наименование ВМа.
|
||||
- `image` - Параметры образа ВМа.
|
||||
- `id` - ID образа ВМа.
|
||||
- `slug` - Slug образа.
|
||||
- `name` - Наименование образа.
|
||||
- `region` - Регион, где создан ВМ.
|
||||
- `id` - ID региона.
|
||||
- `slug` - Slug региона.
|
||||
- `name` - Наименование региона.
|
||||
- `flavor` - Тариф.
|
||||
- `id` - ID тарифа.
|
||||
- `slug` - Slug тарифа.
|
||||
- `name` - Наименование тарифа.
|
||||
- `volumes` - Список дисков.
|
||||
- `id` - ID диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска (hhd/ssd/nvme).
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `name` - Наименование диска.
|
||||
- `addresses` - Список адресов.
|
||||
- `type` - Тип адреса.
|
||||
- `address` - IP адрес.
|
||||
- `version` - Версия IP адреса (4/6).
|
||||
- `status` - Статус ВМа (Создан/Создается/...)
|
||||
- `fqdn` - Полный домен.
|
||||
- `tags` - Список тэгов.
|
||||
- `wait_completed` - Ключ ожидания состояния ВМа (Создан/Создается...).
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_volume"
|
||||
description: "Get information about beecloud Volume"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_volume
|
||||
Получение информации о диске.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_volume" "vlm_by_id" {
|
||||
volume_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
|
||||
output "beecloud_volume_by_id" {
|
||||
value = data.beecloud_volume.vlm_by_id
|
||||
}
|
||||
```
|
||||
|
||||
## Аргументы
|
||||
- `volume_id` - ID диска.
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - ID TF. Соответствует ID диска.
|
||||
- `project_id` - ID проекта.
|
||||
- `region_id` - ID региона.
|
||||
- `name` - Наименование диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска.
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `attached_to` - ID ВМа, к которому примонтирован.
|
||||
- `last_updated` - Время последнего обновления ресурса.
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_volumes"
|
||||
description: "Get information about multiple beecloud Volumes of project"
|
||||
---
|
||||
|
||||
# Источник данных: beecloud_volumes
|
||||
Получение информации обо всех дисках проекта.
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```hcl
|
||||
data "beecloud_volumes" "all" {}
|
||||
|
||||
output "beecloud_volumes_all" {
|
||||
value = data.beecloud_volumes.all
|
||||
}
|
||||
```
|
||||
|
||||
## Возвращаемые поля
|
||||
|
||||
- `id` - ID TF. Соответствует ID/Slug проекта.
|
||||
- `volumes` - Список дисков.
|
||||
- `volume_id` - ID диска.
|
||||
- `project_id` - ID проекта.
|
||||
- `region_id` - ID региона.
|
||||
- `name` - Наименование диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска.
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `attached_to` - ID ВМа, к которому примонтирован.
|
||||
- `last_updated` - Время последнего обновления ресурса.
|
||||
@@ -1,35 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_address_ip"
|
||||
description: "Manages beecloud Address IPs"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_address_ip
|
||||
Получение информации об адресах.
|
||||
|
||||
Создание и управление адресами проекта в beecloud. Больше информации в [swagger](https://beecloud.vimpelcom.ru/api/v1/vps/swagger/index.html#/).
|
||||
|
||||
Ресурс может быть создан/прочитан/удален.
|
||||
|
||||
```hcl
|
||||
resource "beecloud_address_ip" "server_ip" {
|
||||
|
||||
region_id = "xxxx-xxxx-xxxx-xxxx"
|
||||
}
|
||||
```
|
||||
|
||||
## Аргументы
|
||||
|
||||
- `region` - (Обязательно) Данные о регионе.
|
||||
- `id` - (Обязательно) ID региона.
|
||||
|
||||
## В дополнение к приведенным выше аргументам, возвращаются следующие параметры:
|
||||
|
||||
- `id` - ID в системе TF. Соответствует ID адреса.
|
||||
- `project_id` - ID проекта.
|
||||
- `name` - наименование адреса.
|
||||
- `address` - значение IP адреса.
|
||||
- `version` - версия адреса (UNKNOWN/4/6).
|
||||
- `status` - статус адреса (UNKNOWN/FREE/USED/RESERVED).
|
||||
- `purpose` - назначение адреса.
|
||||
- `type` - тип адреса (UNKNOWN/EXTERNAL/INTERNAL).
|
||||
- `metadata` - дополнительные управляющие параметры.
|
||||
@@ -1,45 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_affinity_group"
|
||||
description: "Manages Affinity Groups of servers"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_affinity_group
|
||||
Управление Аффинити-группами (группами размещения) ВМов.
|
||||
Поддерживается создание/удаление/чтение/обновление (согласно API beecloud обновление поддерживается только для именования группы, остальные изменения повлекут пересоздание группы)
|
||||
|
||||
Политики (согласно API beecloud): **affinity/soft-affinity/anti-affinity/soft-anti-affinity**
|
||||
|
||||
## Примеры конфигураций
|
||||
### Основное
|
||||
|
||||
```hcl
|
||||
resource "beecloud_affinity_group" "affinity_policy" {
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-affinity-group"
|
||||
policy = "affinity"
|
||||
}
|
||||
|
||||
output "beecloud_affinity_group_policy" {
|
||||
value = beecloud_affinity_group.affinity_policy
|
||||
}
|
||||
```
|
||||
|
||||
## Аргументы
|
||||
|
||||
- `name` - (Обязательно) Наименование ВМа.
|
||||
- `policy` - (Обязательно) Политика группы (affinity/soft-affinity/anti-affinity/soft-anti-affinity).
|
||||
- `region` - (Обязательно) Данные о регионе.
|
||||
- `id` - (Обязательно) ID региона.
|
||||
|
||||
|
||||
## В дополнение к приведенным выше аргументам, возвращаются следующие параметры:
|
||||
- `id` - ID в системе TF. Соответствует ID группы.
|
||||
- `affinity_group_id` - ID в системе TF. Соответствует ID группы.
|
||||
- `project_id` - ID проекта.
|
||||
- `region` - Данные о регионе.
|
||||
- `id` - ID региона
|
||||
- `slug` - Слаг региона.
|
||||
- `name` - Наименование региона
|
||||
- `condition` - Состояние группы (статус) (готовность к использованию)
|
||||
@@ -1,245 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_server"
|
||||
description: "Manages beecloud Instances"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_server
|
||||
|
||||
Создание и управление ВМами проекта в beecloud. Больше информации в [swagger](https://beecloud.vimpelcom.ru/api/v1/vps/swagger/index.html).
|
||||
|
||||
Ресурс может быть создан/прочитан/обновлен/удален.
|
||||
Обновляется только при монтировании/демонтировании доп.дисков или изменении тэгов, в остальных случаях - пересоздание.
|
||||
Для защиты от случайного пересоздания можно использовать `lifecycle`:
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
|
||||
...
|
||||
|
||||
lifecycle {
|
||||
prevent_destroy = true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Посмотреть текущее состояние ресурса:
|
||||
|
||||
```bash
|
||||
$ terraform state show beecloud_server.test
|
||||
```
|
||||
|
||||
## Примеры конфигураций
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
flavor {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
image {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-create-server-test"
|
||||
|
||||
root_volume {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
}
|
||||
|
||||
output "beecloud_server_test" {
|
||||
value = beecloud_server.test
|
||||
}
|
||||
```
|
||||
|
||||
### С дополнительными дисками
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
flavor {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
image {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-create-server-test"
|
||||
|
||||
root_volumes {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
additional_volume_ids = ["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"]
|
||||
}
|
||||
```
|
||||
> Note: Поле с дисками может изменить состояние после использования ресурса `beecloud_volume`. Необходимо будет синхронизировать состояние.
|
||||
|
||||
### С тэгами
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
flavor {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
image {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-create-server-test"
|
||||
|
||||
root_volumes {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
additional_volume_ids = ["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"]
|
||||
|
||||
tags = ["dev", "test"]
|
||||
}
|
||||
```
|
||||
|
||||
### С управлением адресом
|
||||
Передается UUID адреса. Он может быть заранее создан ресурсом "beecloud_address_ip".
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
flavor {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
image {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-create-server-test"
|
||||
|
||||
root_volumes {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
address = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
```
|
||||
|
||||
### С аффинити-группой
|
||||
Передается UUID группы. Он может быть заранее создан ресурсом "beecloud_affinity_group".
|
||||
|
||||
```hcl
|
||||
resource "beecloud_server" "test" {
|
||||
flavor {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
image {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
region {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
name = "tf-create-server-test"
|
||||
|
||||
root_volumes {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
affinity {
|
||||
id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
>
|
||||
>~> **На заметку**: Для примонтирования/демонтирования есть два способа:
|
||||
>1. Использовать поле `additional_volume_ids`
|
||||
>2. Использовать ресурс `beecloud_volume_bind`
|
||||
>
|
||||
><span style="color:red">Не использовать вместе!</span>
|
||||
>
|
||||
|
||||
|
||||
## Аргументы
|
||||
|
||||
- `name` - (Обязательно) Наименование ВМа (должно быть уникальным).
|
||||
- `image` - (Обязательно) Данные об образе.
|
||||
- `id` - (Обязательно) ID образа.
|
||||
- `region` - (Обязательно) Данные о регионе.
|
||||
- `id` - (Обязательно) ID региона.
|
||||
- `flavor` - (Обязательно) Данные о тарифе.
|
||||
- `id` - (Обязательно) ID тарифа.
|
||||
- `root_volume` - (Обязательно) Диски. Минимум один экземпляр для загрузочного диска.
|
||||
- `size` - (Обязательно) Размер диска.
|
||||
- `type` - (Обязательно) Тип диска.
|
||||
- `additional_volume_ids` - (Опционально) Список дополнительных (примонтированных) дисков.
|
||||
- `address` - (Опционально) Данные об адресе (Если нужно управлять адресом - лучше его отдельно выделить как ресурс и прописать его ID в ВМе)
|
||||
- `id` - ID адреса, с которым будет создан ВМ
|
||||
- `tags` - (Опционально) Список тэгов.
|
||||
- `wait_completed` - (Опционально) По умолчанию: `true`. Этот ключ отвечает за ожидание полного создания ВМа. Если переключить его в `false`, то ресурс не будет дожидаться полного создания ВМа, ВМ будет в статусе "Создается".
|
||||
- `affinity` - (Опционально) Данные об аффинити-группе
|
||||
- `id` - ID аффинити-группы, с учетом правила которой будет создан ВМ. Изменение ID повлечет пересоздание ВМа.
|
||||
|
||||
## В дополнение к приведенным выше аргументам, возвращаются следующие параметры:
|
||||
|
||||
- `id` - ID в системе TF. Соответствует ID ВМа.
|
||||
- `server_id` - ID созданного ВМа.
|
||||
- `image` - Данные об образе.
|
||||
- `slug` - Слаг образа.
|
||||
- `name` - Имя образа.
|
||||
- `region` - Данные о регионе.
|
||||
- `slug` - Слаг региона.
|
||||
- `name` - Имя региона.
|
||||
- `flavor` - Данные о тарифе.
|
||||
- `slug`- Слаг тарифа.
|
||||
- `name` - Имя тарифа.
|
||||
- `root_volume` - (Обязательно) Диски. Минимум один экземпляр для загрузочного диска.
|
||||
- `id` - ID загрузочного ВМа.
|
||||
- `is_boot` - Определение типа: загрузочный диск (`true`) или дополнительный (`false`). Загрузочный может быть только один.
|
||||
- `name` - Имя диска (для загрузочных - наименование диска будет **`server_name`**`-boot`).
|
||||
- `addresses` - Адрес ВМа.
|
||||
- `id` - ID в системе TF. Соответствует ID адреса.
|
||||
- `project_id` - ID проекта.
|
||||
- `name` - наименование адреса.
|
||||
- `address` - значение IP адреса.
|
||||
- `version` - версия адреса (UNKNOWN/4/6).
|
||||
- `status` - статус адреса (UNKNOWN/USED/RESERVED).
|
||||
<!-- - `purpose` - назначение адреса. -->
|
||||
<!-- - `type` - тип адреса (UNKNOWN/EXTERNAL/INTERNAL). -->
|
||||
- `metadata` - дополнительные управляющие параметры.
|
||||
- `status` - Статус ВМа (ACTIVE/BUILD/ERROR..).
|
||||
- `fqdn` - Имя домена.
|
||||
- `tags` - Список тэгов.
|
||||
- `affinity` - Данные об аффинити-группе
|
||||
- `id` - ID аффинити-группы.
|
||||
- `name` - Наименование группы
|
||||
- `project_id` - ID проекта
|
||||
- `policy` - политика группы (affinity/soft-affinity/anti-affinity/soft-anti-affinity)
|
||||
- `condition` - Текущее состояние группы(статус)
|
||||
|
||||
|
||||
## Импорт
|
||||
|
||||
Задаем конфигурацию, которая будет управлять импортом
|
||||
```
|
||||
resource "beecloud_server" "import_server" {}
|
||||
|
||||
```
|
||||
Передаем ID существующего ВМа, состояние которого хотим импортировать "75429417-2a18-435c-92fa-dae26dac4e3e":
|
||||
|
||||
```bash
|
||||
$ terraform import beecloud_server.import_server 75429417-2a18-435c-92fa-dae26dac4e3e
|
||||
```
|
||||
|
||||
Затем все параметры состояния записываем в конфигурацию и синхронизируем.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_volume"
|
||||
description: "Manages beecloud Volumes"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_volume
|
||||
|
||||
Создание и управление дисками проекта в beecloud. Больше информации в [swagger](https://beecloud.vimpelcom.ru/api/v1/core/swagger/index.html).
|
||||
|
||||
Ресурс может быть создан/прочитан/обновлен/удален.
|
||||
|
||||
## Примеры конфигураций
|
||||
|
||||
```hcl
|
||||
resource "beecloud_volume" "vlm" {
|
||||
name = "vlm-added"
|
||||
region_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
size = 34
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
output "beecloud_vlm" {
|
||||
value = beecloud_volume.vlm
|
||||
}
|
||||
```
|
||||
|
||||
## Параметры
|
||||
|
||||
- `region_id` - (Обязательно) Данные о регионе.
|
||||
- `name` - Наименование диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска.
|
||||
|
||||
## В дополнение к приведенным выше параметрам, возвращаются следующие поля:
|
||||
|
||||
- `id` - ID TF. Соответствует ID диска.
|
||||
- `volume_id` - ID диска.
|
||||
- `project_id` - ID проекта.
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `attached_to` - ID ВМа, к которому примонтирован.
|
||||
- `last_updated` - Время последнего обновления ресурса.
|
||||
|
||||
|
||||
## Импорт
|
||||
|
||||
Задаем конфигурацию, которая будет управлять импортом
|
||||
|
||||
```
|
||||
resource "beecloud_volume" "import_volume" {}
|
||||
```
|
||||
|
||||
Передаем ID существующего ВМа, состояние которого хотим импортировать "75429417-2a18-435c-92fa-dae26dac4e3e":
|
||||
|
||||
```bash
|
||||
$ terraform import beecloud_volume.import_volume 75429417-2a18-435c-92fa-dae26dac4e3e
|
||||
```
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_volume_bind"
|
||||
description: "Manages beecloud Volumes (Attach/Detach to server)"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_volume_bind
|
||||
|
||||
Управление дисками проекта в beecloud. Больше информации в [swagger](https://beecloud.vimpelcom.ru/api/v1/core/swagger/index.html).
|
||||
|
||||
Примонтировать/отмонтировать диск к/от ВМа.
|
||||
|
||||
Примонтировать диск к ВМу:
|
||||
|
||||
```bash
|
||||
$ terraform apply
|
||||
```
|
||||
|
||||
Отмонтировать диск:
|
||||
|
||||
```bash
|
||||
$ terraform destroy
|
||||
```
|
||||
|
||||
## Примеры конфигураций
|
||||
|
||||
```hcl
|
||||
resource "beecloud_volume_bind" "attach" {
|
||||
volume_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
|
||||
server_id = "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"
|
||||
}
|
||||
|
||||
output "attach_beecloud_volume" {
|
||||
value = beecloud_volume_bind.attach
|
||||
}
|
||||
```
|
||||
|
||||
## Параметры
|
||||
|
||||
- `volume_id` - ID диска.
|
||||
- `server_id` - ID ВМа.
|
||||
|
||||
## В дополнение к приведенным выше параметрам, возвращаются следующие поля:
|
||||
|
||||
- `id` - ID TF. Соответствует ID диска.
|
||||
- `region_id` - ID региона.
|
||||
- `project_id` - ID проекта.
|
||||
- `name` - Наименование диска.
|
||||
- `size` - Размер диска.
|
||||
- `type` - Тип диска.
|
||||
- `is_boot` - Загрузочный/дополнительный (`true`, `false`).
|
||||
- `attached_to` - ID ВМа, к которому примонтирован.
|
||||
- `last_updated` - Время последнего обновления ресурса.
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
# Источник данных: vega_dns_records
|
||||
@@ -1,30 +0,0 @@
|
||||
|
||||
# Источник данных: vega_dns_zones
|
||||
Получение информации обо всех доступных зонах проекта
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
Получение всех зон
|
||||
|
||||
```hcl
|
||||
data "vega_dns_zones" "all" {}
|
||||
|
||||
output "vega_affinity_groups_all" {
|
||||
value = data.vega_dns_zones.all
|
||||
}
|
||||
```
|
||||
|
||||
<!--
|
||||
## Возвращаемые поля
|
||||
- `id` - Проект в Vega, к которому относятся ВМа (ID/Slug).
|
||||
- `affinity_groups` - Список аффинити-групп.
|
||||
- `affinity_group_id` - ID в системе TF. Соответствует ID группы.
|
||||
- `project_id` - ID проекта.
|
||||
- `name` - Наименование ВМа.
|
||||
- `policy` - Политика группы (affinity/soft-affinity/anti-affinity/soft-anti-affinity).
|
||||
- `region` - Данные о регионе.
|
||||
- `id` - ID региона
|
||||
- `slug` - Слаг региона.
|
||||
- `name` - Наименование региона.
|
||||
- `condition` - Состояние группы (статус) (готовность к использованию).
|
||||
-->
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
page_title: "beecloud: beecloud_dns_record"
|
||||
description: "Manages beecloud DNS records"
|
||||
---
|
||||
|
||||
# Ресурс: beecloud_dns_record
|
||||
Управление dns записями.
|
||||
|
||||
Создание и управление DNS записями проекта в beecloud. Больше информации в [swagger](https://beecloud.vimpelcom.ru/api/v1/dns/swagger/index.html#/).
|
||||
|
||||
Ресурс может быть создан/прочитан/обновлен/удален.
|
||||
|
||||
```hcl
|
||||
// Получение списка доступных зон
|
||||
data "beecloud_dns_zones" "local" {}
|
||||
|
||||
locals {
|
||||
// uuid первой зоны из списка
|
||||
dns_zone_id = data.beecloud_dns_zones.local.dns_zones.0.zone_id
|
||||
}
|
||||
|
||||
resource "beecloud_dns_record" "my-name" {
|
||||
name = "service1"
|
||||
ttl = 600
|
||||
type = "CNAME"
|
||||
zone_id = local.dns_zone_id
|
||||
data = ["10.0.0.2"]
|
||||
tags = ["tag1", "tag2"]
|
||||
}
|
||||
```
|
||||
|
||||
## Аргументы
|
||||
|
||||
- `zone_id` - (Обязательно) ID DNS зоны.
|
||||
- `name` - (Обязательно) Наименование.
|
||||
- `type` - (Обязательно) Тип записи `A`, `AAAA`, `CNAME`,`PTR`.
|
||||
- `data` - (Обязательно)
|
||||
- `ttl` - (Опционально) По умолчанию: 600.
|
||||
- `tags` - (Опционально) Набор тегов.
|
||||
|
||||
## В дополнение к приведенным выше аргументам, возвращаются следующие параметры:
|
||||
|
||||
- `id` - ID в системе TF. Соответствует ID адреса.
|
||||
- `project_id` - ID проекта.
|
||||
- `server_id` - ID ВМа, к которому относится запись.
|
||||
<!-- - `is_disabled` - -->
|
||||
<!-- - `is_system` - -->
|
||||
@@ -1,80 +0,0 @@
|
||||
---
|
||||
page_title: "Provider: BeeCloud"
|
||||
description: |-
|
||||
The BeeCloud provider is used to manage BeeCloud resources. The provider needs to be configured with the proper credentials before it can be used.
|
||||
---
|
||||
|
||||
# BeeCloud Provider
|
||||
|
||||
BeeCloud провайдер используется для управления ресурсами облака.
|
||||
Перед использованием провайдер должен быть настроен.
|
||||
|
||||
## Terraform v.1.3.7 and later
|
||||
```
|
||||
terraform {
|
||||
required_providers {
|
||||
beecloud = {
|
||||
source = "console.cloud.dfcloud.ru/beeline/beecloud"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```
|
||||
terraform {
|
||||
required_providers {
|
||||
beecloud = {
|
||||
source = "console.cloud.dfcloud.ru/beeline/beecloud"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "beecloud" {
|
||||
project = "my-project"
|
||||
token = "eafJKHnldkfbs.....sLbldfblhb"
|
||||
}
|
||||
```
|
||||
|
||||
## Аутентификация и Конфигурация
|
||||
|
||||
Конфигурация провайдера BeeCloud может быть получена из нескольких источников, которые применяются в следующем порядке:
|
||||
|
||||
* Параметры из конфигурации провайдера
|
||||
* Из переменных среды
|
||||
* Файлы общей конфигурации
|
||||
|
||||
### Конфигурация провайдера
|
||||
|
||||
Используя сервисный токен проекта:
|
||||
|
||||
> Получить JWT токен(роль DevOps-инженер) https://console.cloud.dfcloud.ru/projects/{PROJECT}/service-token
|
||||
|
||||
```hcl
|
||||
provider "beecloud" {
|
||||
token = "eafJKHnldkfbs.....sLbldfblhb"
|
||||
project = "my-project"
|
||||
}
|
||||
```
|
||||
|
||||
### Переменные окружения
|
||||
|
||||
```hcl
|
||||
provider "beecloud" {}
|
||||
```
|
||||
|
||||
Используя сервисный токен проекта:
|
||||
```sh
|
||||
$ export BEECLOUD_TOKEN="eafJKHnldkfbs.....sLbldfblhb"
|
||||
$ export BEECLOUD_PROJECT="my-project"
|
||||
```
|
||||
|
||||
|
||||
## Параметры конфигурации
|
||||
|
||||
| Настройка | В провайдере | Переменная окружения |
|
||||
|------------------------------------------------------------------------|--------------|----------------------|
|
||||
| Идентификатор проекта | project | BEECLOUD_PROJECT |
|
||||
| Сервисный токен проекта | token | BEECLOUD_TOKEN |
|
||||
| URL платформы значение по умолчанию "https://console.cloud.dfcloud.ru" | url | BEECLOUD_API |
|
||||
@@ -1,25 +0,0 @@
|
||||
# Null Provider
|
||||
|
||||
Null provider - довольно необычный поставщик, у которого есть конструкции, которые намеренно ничего не делают. Это может показаться странным, и действительно, в большинстве случаев эти конструкции не обязательно использовать, но они могут быть полезны в различных ситуациях, чтобы помочь организовать сложное поведение или обойти ограничения.
|
||||
|
||||
Документация по каждой функции этого поставщика, доступная через навигацию, содержит примеры ситуаций, в которых эти конструкции могут оказаться полезными.
|
||||
|
||||
Использование нулевого поставщика может усложнить понимание конфигурации Terraform. Хотя в некоторых случаях это может быть полезно, применять его следует с осторожностью, а при наличии других решений отдавать предпочтение.
|
||||
|
||||
Полная копия провайдера [hashicorp/null](https://github.com/hashicorp/terraform-provider-null)
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```
|
||||
terraform {
|
||||
required_providers {
|
||||
null = {
|
||||
source = "console.cloud.dfcloud.ru/beeline/null"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "null" {
|
||||
# Параметры конфигурации
|
||||
}
|
||||
```
|
||||
@@ -1,236 +0,0 @@
|
||||
# Terraform
|
||||
|
||||
[SDK](https://git.vimpelcom.ru/common/vega)
|
||||
|
||||
[Пример разворачивания веб-приложения в Docker с помощью Terraform](https://bwiki.beeline.ru/x/j9bNFQ)
|
||||
|
||||
[FAQ](faq.md)
|
||||
|
||||
<!--Основной рабочий процесс Terraform состоит из трех основных шагов после написания конфигурации Terraform:
|
||||
|
||||
* **Initialize** подготавливает рабочий каталог, чтобы Terraform мог запустить конфигурацию.
|
||||
* **Plan** позволяет просматривать любые изменения перед их применением.
|
||||
* **Apply** выполняет изменения, определенные вашей конфигурацией Terraform, для создания, обновления или уничтожения ресурсов.
|
||||
|
||||
Чтобы определить, какие изменения будут внесены в вашу инфраструктуру, Terraform создает план выполнения. Для этого Terraform согласовывает вашу конфигурацию Terraform с реальной инфраструктурой, отслеживаемой в файле состояния этой рабочей области, и создает список ресурсов для создания, изменения или уничтожения. Команда `plan` поддерживает несколько флагов, которые позволяют вам изменять ее поведение, что позволяет вам быть гибкими в своих операциях. Например, вы можете ориентироваться на определенные ресурсы, а не на всю конфигурацию, или запускать планы только для обновления, которые согласовывают ваш файл состояния с фактической конфигурацией ресурсов, которые он отслеживает.
|
||||
|
||||
В этом руководстве вы узнаете, как Terraform создает план выполнения, что он содержит и какова функция команды `plan` в рабочем процессе Terraform. Для этого вы создадите и примените сохраненный план Terraform, просмотрите его содержимое и проанализируете, как план отражает изменения в вашей конфигурации. Сохраненный файл плана поддерживает рабочие процессы автоматизации Terraform в конвейерах CI/CD, гарантируя, что изменения инфраструктуры, применяемые Terraform, соответствуют изменениям, утвержденным вами или вашей командой, даже если процесс развертывания завершается на разных машинах или в разное время.
|
||||
|
||||
## Предпосылки
|
||||
В руководстве предполагается, что вы знакомы с Terraform. Если вы новичок в самом Terraform, сначала обратитесь к руководствам [официальной документации Get Started](https://developer.hashicorp.com/terraform/tutorials).
|
||||
|
||||
Для этого урока вам понадобятся:
|
||||
* CLI Terraform 0.14+, установленный локально.
|
||||
* Проект в облаке Vega
|
||||
|
||||
## Клонирование репозитория с уроком
|
||||
|
||||
В вашем терминале выполните
|
||||
|
||||
```sh
|
||||
$ git clone https://git.vimpelcom.ru/common/vega/learn-terraform-plan
|
||||
```
|
||||
|
||||
Перейдите к клонированному репозиторию.
|
||||
|
||||
```sh
|
||||
$ cd learn-terraform-plan
|
||||
```
|
||||
|
||||
## Проверить конфигурацию
|
||||
|
||||
Пример конфигурации в этом репозитории создает два ВМа в вашем облаке Vega.
|
||||
|
||||
```bash
|
||||
$ tree
|
||||
.
|
||||
├── README.md
|
||||
├── main.tf
|
||||
├── nginx
|
||||
│ ├── main.tf
|
||||
│ ├── variables.tf
|
||||
│ └── versions.tf
|
||||
└── versions.tf
|
||||
```
|
||||
|
||||
Terraform использует версии провайдеров, указанные в `terraform.tf` файле.
|
||||
|
||||
```terraform
|
||||
terraform {
|
||||
required_providers {
|
||||
vega = {
|
||||
version = "~> 2.0.0"
|
||||
source = "registry.vega.com/terraform-provider-vega/vega"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
main.tf
|
||||
```terraform
|
||||
# Flavors data
|
||||
data "vega_flavors" "all" {}
|
||||
output "vega_flavors_stage" {
|
||||
value = data.vega_flavors.all
|
||||
}
|
||||
|
||||
# Regions data
|
||||
data "vega_regions" "all" {}
|
||||
output "vega_regions_stage" {
|
||||
value = data.vega_regions.all
|
||||
}
|
||||
|
||||
# Images data
|
||||
data "vega_images" "all" {}
|
||||
output "vega_images_stage" {
|
||||
value = data.vega_images.all
|
||||
}
|
||||
|
||||
locals {
|
||||
flavor_standart = [for i in data.vega_flavors.all.flavors: i.flavor_id if i.slug == "cpu2ram2"]
|
||||
region_stage = [for i in data.vega_regions.all.regions: i.region_id if i.slug == "yd-ost1"]
|
||||
image_ubuntu_20_04 = [for i in data.vega_images.all.images: i.image_id if i.slug == "ubuntu-20-04"]
|
||||
image_docker = [for i in data.vega_images.all.images: i.image_id if i.slug == "docker-ubuntu-20-04"]
|
||||
}
|
||||
|
||||
# Запуск создания ВМа
|
||||
resource "vega_server" "vega_app" {
|
||||
flavor {
|
||||
id = local.flavor_standart.0
|
||||
}
|
||||
image {
|
||||
id = local.image_docker.0
|
||||
}
|
||||
region {
|
||||
id = local.region_stage.0
|
||||
}
|
||||
name = var.server_name_app
|
||||
|
||||
root_volume {
|
||||
size = 100
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
tags = ["app", "docker"]
|
||||
}
|
||||
|
||||
# Запуск создания ВМа
|
||||
resource "vega_server" "vega_db_m" {
|
||||
flavor {
|
||||
id = local.flavor_standart.0
|
||||
}
|
||||
image {
|
||||
id = local.image_ubuntu_20_04.0
|
||||
}
|
||||
region {
|
||||
id = local.region_stage.0
|
||||
}
|
||||
name = var.server_name_dbm
|
||||
|
||||
root_volume {
|
||||
size = 40
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
tags = ["db", "postgres"]
|
||||
|
||||
additional_volume_ids = [vega_volume.database_m.volume_id]
|
||||
|
||||
}
|
||||
|
||||
output "vega_server_vega_app" {
|
||||
value = vega_server.vega_app
|
||||
}
|
||||
|
||||
output "vega_server_vega_dbm" {
|
||||
value = vega_server.vega_db_m
|
||||
}
|
||||
|
||||
# Создание дополнительного диска
|
||||
resource "vega_volume" "database_m" {
|
||||
name = format("%s-%s", var.server_name_dbm, "attached")
|
||||
region_id = local.region_stage.0
|
||||
size = 100
|
||||
type = "hdd"
|
||||
}
|
||||
|
||||
output "vega_database_m" {
|
||||
value = vega_volume.database_m
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Инициализируйте свою конфигурацию
|
||||
Чтобы сгенерировать план выполнения, Terraform необходимо установить поставщиков и модули, на которые ссылается ваша конфигурация. Затем он будет ссылаться на локально кэшированные провайдеры и модули для создания плана изменений ресурсов.
|
||||
|
||||
Инициализируйте конфигурацию Terraform, чтобы установить необходимые провайдеры и модули.
|
||||
|
||||
```sh
|
||||
$ terraform init
|
||||
|
||||
Initializing the backend...
|
||||
|
||||
Initializing provider plugins...
|
||||
- Finding registry.vega.com/terraform-provider-vega/vega versions matching "~> 2.0.0"...
|
||||
- Installing registry.vega.com/terraform-provider-vega/vega v2.0.0...
|
||||
- Installed registry.vega.com/terraform-provider-vega/vega v2.0.0 (unauthenticated)
|
||||
|
||||
Terraform has created a lock file .terraform.lock.hcl to record the provider
|
||||
selections it made above. Include this file in your version control repository
|
||||
so that Terraform can guarantee to make the same selections by default when
|
||||
you run "terraform init" in the future.
|
||||
|
||||
Terraform has been successfully initialized!
|
||||
|
||||
You may now begin working with Terraform. Try running "terraform plan" to see
|
||||
any changes that are required for your infrastructure. All Terraform commands
|
||||
should now work.
|
||||
|
||||
If you ever set or change modules or backend configuration for Terraform,
|
||||
rerun this command to reinitialize your working directory. If you forget, other
|
||||
commands will detect it and remind you to do so if necessary.
|
||||
```
|
||||
|
||||
## Создать план
|
||||
|
||||
---
|
||||
::: tip Информация
|
||||
Это руководство было протестировано с Terraform 1.1.3.
|
||||
:::
|
||||
|
||||
## Первая конфигурация
|
||||
|
||||
Для Terraform v.1.3.7 и моложе
|
||||
|
||||
```
|
||||
terraform {
|
||||
required_providers {
|
||||
vega = {
|
||||
version = "~> 0.0.1"
|
||||
source = "registry.vega.com/terraform-provider-vega/vega"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Пример конфигурации
|
||||
|
||||
```
|
||||
terraform {
|
||||
required_providers {
|
||||
vega = {
|
||||
version = "~> 0.0.1"
|
||||
source = "registry.vega.com/terraform-provider-vega/vega"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "vega" {
|
||||
username = "username"
|
||||
password = "password"
|
||||
url = "https://vega.cloud.vimpelcom.ru"
|
||||
project = "vega-project"
|
||||
}
|
||||
```
|
||||
|
||||
Для работы с провайдером передаются параметры пользователя для авторизации и проект, в рамках которого будет происходить управление ресурсами.-->
|
||||
Reference in New Issue
Block a user