Автоматическая привязка политики резервного копирования Yandex Cloud Backup к ВМ с помощью Terraform
Чтобы создать виртуальную машину с автоматической привязкой к политике резервного копирования Cloud Backup:
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит:
- плата за вычислительные ресурсы ВМ (см. тарифы Yandex Compute Cloud);
- плата за диски ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование динамического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за подключенные к сервису Cloud Backup ВМ и объем резервных копий (см. тарифы Yandex Cloud Backup).
Активируйте сервис
Примечание
Минимальная роль в каталоге, необходимая для активации сервиса, — backup.editor
(см. описание роли).
-
В консоли управления
выберите каталог, в котором вы хотите создать ВМ с подключением к Cloud Backup. -
В списке сервисов выберите Cloud Backup.
-
Если сервис Cloud Backup еще не активирован, нажмите Активировать.
Если кнопки Активировать нет, и вам доступно создание ВМ с подключением к Cloud Backup, значит, сервис уже активирован. Переходите к следующему шагу.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для активации сервиса:
yc backup provider activate --help
-
Активируйте сервис в каталоге по умолчанию:
yc backup provider activate --async
Где
--async
— отображение информации о прогрессе операции. Необязательный параметр.Результат:
id: cdgmnefxiatx******** description: activate provider created_at: "2024-10-14T09:03:47.960564Z" created_by: ajec1gaqcmtr******** modified_at: "2024-10-14T09:03:47.960564Z" done: true metadata: '@type': type.googleapis.com/yandex.cloud.backup.v1.ActivateProviderMetadata folder_id: b1go3el0d8fs******** response: '@type': type.googleapis.com/google.protobuf.Empty value: {}
После активации автоматически создаются следующие политики резервного копирования:
Default daily
— ежедневное создание инкрементальной копии ВМ с сохранением последних 15 копий.Default weekly
— еженедельное создание инкрементальной копии ВМ с сохранением последних 15 копий.Default monthly
— ежемесячное создание инкрементальной копии ВМ с сохранением последних 15 копий.
Если вы не хотите их создавать, используйте параметр --skip-default-policy
.
Создайте инфраструктуру
Примечание
Привязка политики резервного копирования Yandex Cloud Backup к ВМ доступна для Terraform-провайдера0.127.0
и более поздних версий.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Для создания инфраструктуры c помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файлы с описанием инфраструктуры:
Готовая конфигурацияВручную-
Клонируйте репозиторий с конфигурационными файлами.
git clone https://github.com/yandex-cloud-examples/yc-baas-backup-policy-auto-binding
-
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
backup-policy-auto-binding-config.tf
— конфигурация создаваемой инфраструктуры.cloud-init.yaml
— файл метаданных ВМ.
-
Создайте папку для конфигурационных файлов.
-
Создайте в папке:
- Конфигурационный файл
backup-policy-auto-binding-config.tf
:
backup-policy-auto-binding-config.tf
# Настройка провайдера terraform { required_providers { yandex = { source = "yandex-cloud/yandex" } } required_version = ">= 0.13" } provider "yandex" { zone = "ru-central1-a" } # Создание сервисного аккаунта resource "yandex_iam_service_account" "my_sa" { name = "backup-sa" } # Назначение роли сервисному аккаунту resource "yandex_resourcemanager_folder_iam_member" "my_binding" { folder_id = yandex_iam_service_account.my_sa.folder_id role = "backup.editor" member = "serviceAccount:${yandex_iam_service_account.my_sa.id}" } # Создание облачной сети resource "yandex_vpc_network" "my_backup_network" { name = "cloud-network" } # Создание облачной подсети resource "yandex_vpc_subnet" "my_backup_subnet" { zone = "ru-central1-a" network_id = yandex_vpc_network.my_backup_network.id v4_cidr_blocks = ["192.168.0.0/24"] } # Создание группы безопасности # https://yandex.cloud/ru/docs/backup/concepts/vm-connection#vm-network-access resource "yandex_vpc_security_group" "my_backup_security_group" { name = "backup-sg" network_id = yandex_vpc_network.my_backup_network.id egress { protocol = "TCP" from_port = 7770 to_port = 7800 v4_cidr_blocks = ["84.47.172.0/24"] } egress { protocol = "TCP" port = 443 v4_cidr_blocks = ["213.180.204.0/24", "213.180.193.0/24", "178.176.128.0/24", "84.201.181.0/24", "84.47.172.0/24"] } egress { protocol = "TCP" port = 80 v4_cidr_blocks = ["213.180.204.0/24", "213.180.193.0/24"] } egress { protocol = "TCP" port = 8443 v4_cidr_blocks = ["84.47.172.0/24"] } egress { protocol = "TCP" port = 44445 v4_cidr_blocks = ["51.250.1.0/24"] } ingress { protocol = "TCP" description = "ssh" v4_cidr_blocks = ["0.0.0.0/0"] port = 22 } } # Получение информации об образе для загрузочного диска виртуальной машины data "yandex_compute_image" "ubuntu" { family = "ubuntu-2204-lts" } # Создание загрузочного диска для виртуальной машины resource "yandex_compute_disk" "boot-disk" { type = "network-ssd" zone = "ru-central1-a" size = "20" image_id = data.yandex_compute_image.ubuntu.id } # Создание виртуальной машины resource "yandex_compute_instance" "my_backup_compute" { name = "backup-instance" platform_id = "standard-v3" zone = "ru-central1-a" service_account_id = yandex_iam_service_account.my_sa.id network_interface { subnet_id = yandex_vpc_subnet.my_backup_subnet.id security_group_ids = [yandex_vpc_security_group.my_backup_security_group.id] nat = true } boot_disk { disk_id = yandex_compute_disk.boot-disk.id } resources { cores = 2 memory = 4 } metadata = { user-data = "${file("cloud-init.yaml")}" } } # Создание политики резервного копирования resource "yandex_backup_policy" "my_policy" { name = "weekly-backup" fast_backup_enabled = true retention { after_backup = false } reattempts { enabled = true interval = "1m" max_attempts = 10 } scheduling { scheme = "ALWAYS_INCREMENTAL" weekly_backup_day = "FRIDAY" backup_sets { execute_by_time { repeat_at = ["03:00"] type = "WEEKLY" weekdays = ["FRIDAY"] } } } vm_snapshot_reattempts { enabled = true interval = "1m" max_attempts = 10 } } # Привязка политики резервного копирования к ВМ resource "yandex_backup_policy_bindings" "my_backup_binding" { instance_id = yandex_compute_instance.my_backup_compute.id policy_id = yandex_backup_policy.my_policy.id }
- Файл метаданных ВМ
cloud-init.yaml
:
cloud-init.yaml
#cloud-config datasource: Ec2: strict_id: false ssh_pwauth: no users: - name: <имя_пользователя> sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash ssh_authorized_keys: - <публичный_ssh_ключ> packages: - curl - perl - jq runcmd: - curl https://storage.yandexcloud.net/backup-distributions/agent_installer.sh | sudo bash
- Конфигурационный файл
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
- Сервисный аккаунт — yandex_iam_service_account
. - Назначение роли сервисному аккаунту — yandex_resourcemanager_folder_iam_member
. - Сеть — yandex_vpc_network
. - Подсеть — yandex_vpc_subnet
. - Группа безопасности — yandex_vpc_security_group
. - Данные образа ВМ — yandex_compute_image
. - Загрузочный диск виртуальной машины — yandex_compute_disk
. - Виртуальная машина — yandex_compute_instance
. - Политика резервного копирования — yandex_backup_policy
. Вы можете создать новую или использовать одну из политик, автоматически созданных при активации сервиса. - Привязка политики резервного копирования к ВМ — yandex_backup_policy_bindings
. Чтобы привязать к ВМ одну из политик, автоматически созданных при активации сервиса, получите ее идентификатор.
-
-
В файле
cloud-init.yaml
задайте пользовательские параметры:name
— имя пользователя ВМ, напримерvm-user
.ssh_authorized_keys
— содержимое файла открытого ключа. Пару ключей для подключения по SSH необходимо создать самостоятельно.
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Примечание
Когда ВМ перейдет в статус Running
, на нее начнет устанавливаться агент Cloud Backup. Установка займет от 5 до 10 минут.
Привязка политики выполняется асинхронно после создания и инициализации ВМ, а также установки и настройки агента резервного копирования. Это может занимать до 10–15 минут. В итоге виртуальная машина появится в списке ВМ сервиса Cloud Backup и в списке ВМ, привязанных к политике weekly-backup
.
За процессом установки можно следить с помощью последовательного порта ВМ в консоли управления.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Откройте конфигурационный файл
backup-policy-auto-binding.tf
и удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-