Обновление Terraform-провайдера 2.8.0: новые возможности для управления инфраструктурой

Выпустили новую версию Terraform-провайдера CLO, которая значительно расширяет возможности автоматизации облачной инфраструктуры и делает работу с вычислительными ресурсами ещё удобнее.

Обновление затронуло работу с виртуальными машинами, кластерами DBaaS, балансировщиками нагрузки и механизмами управления состоянием ресурсов. Помимо новых возможностей, в релиз вошли исправления, повышающие стабильность и предсказуемость работы Terraform.

Новые возможности

Управление кластерами DBaaS и базами данных

В обновлённой версии появилась возможность полностью управлять кластерами баз данных через Terraform. Добавлен ресурс clo_dbaas_cluster, а также источники данных:

  • clo_dbaas_clusters — получение информации о кластерах;
  • clo_dbaas_nodes — сведения об узлах кластера;
  • clo_dbaas_datastores — информация о поддерживаемых типах СУБД.
  • clo_dbaas_cluster_config — параметры конфигурации кластеров DBaaS.

Это позволяет автоматизировать создание кластеров DBaaS и использовать сведения о существующей инфраструктуре при построении Terraform-конфигураций.

В провайдер добавлен ресурс clo_dbaas_database, позволяющий создавать и управлять базами данных внутри существующих кластеров. Для получения информации о созданных базах данных реализован источник данных clo_dbaas_databases.

Резервное копирование DBaaS

Добавлен новый ресурс clo_dbaas_backup, который позволяет создавать резервные копии баз данных средствами Terraform.

Для работы с уже существующими резервными копиями появились источники данных:

  • clo_dbaas_backups — получение списка резервных копий;
  • clo_dbaas_backup_download — получение информации для скачивания резервной копии.

Кроме того, провайдер получил поддержку управления периодическим (запланированным) резервным копированием DBaaS, благодаря чему можно автоматизировать не только создание инфраструктуры, но и настройку регулярной защиты данных.

Независимое управление питанием виртуальных машин

Появился новый ресурс clo_compute_instance_power, который отвечает исключительно за управление состоянием питания виртуальных серверов.

Теперь включение и выключение виртуальной машины происходит только в том случае, если этот ресурс явно описан в Terraform-конфигурации. Такой подход позволяет разделить управление конфигурацией сервера и его состоянием питания, исключая случайные остановки или запуск инстансов во время выполнения terraform apply.

Кроме того, Terraform отслеживает изменения состояния питания, выполненные вручную или через другие инструменты, корректно определяет drift и отображает расхождения между фактическим и ожидаемым состоянием инфраструктуры.

Новый атрибут состояния сервера

Для ресурса clo_compute_instance добавлен атрибут switch_status.

Атрибут хранит последнее состояние питания сервера, заданное пользователем — включен или выключен. Значение проставляется автоматически при управлении сервером через личный кабинет, API и Terraform. Атрибут доступен только для чтения и позволяет определить расхождение между фактическим (status) и «желаемым» (switch_status) состоянием питания сервера.

Управление снапшотами сервера

Добавлена полноценная поддержка работы со снапшотами виртуальных машин. Появились новые ресурсы:

  • clo_compute_snapshot — создание снапшотов виртуальных серверов;
  • clo_compute_snapshot_restore — восстановление виртуальной машины из снапшота.

Также добавлен источник данных clo_compute_snapshots, который позволяет получать список существующих снапшотов.

Провайдер автоматически отслеживает жизненный цикл операций создания и удаления снапшотов, ожидая перехода ресурсов в корректные состояния. Если во время выполнения операция завершается ошибкой или получает неизвестный статус, Terraform прерывает выполнение и сообщает о возникшей проблеме.

Новые сетевые ресурсы

В новой версии Terraform-провайдер получил поддержку сразу нескольких сетевых сервисов.

Добавлена работа с SSH-ключами через ресурс clo_compute_keypair и источники данных clo_compute_keypair и clo_compute_keypairs, что позволяет централизовано управлять ключами доступа к виртуальным машинам.

Появилась поддержка виртуальных роутеров благодаря ресурсу clo_network_vrouter и источнику данных clo_network_vrouters.

Также реализовано управление балансировщиками нагрузки. Для этого добавлены ресурсы:

  • clo_network_loadbalancer;
  • clo_network_loadbalancer_rule.

Получать сведения о существующих балансировщиках и их правилах позволяют источники данных clo_network_loadbalancers и clo_network_loadbalancer_rules.

В релиз также вошли улучшения механизмов работы с балансировщиком нагрузки. Проведены доработки существующего функционала и исправлены ошибки, повышающие стабильность управления соответствующими ресурсами через Terraform.

Улучшения существующего функционала

Переименование виртуальных серверов без пересоздания

Изменение параметра name больше не приводит к удалению существующей виртуальной машины и её повторному созданию.

Теперь Terraform выполняет обновление имени существующего ресурса, что позволяет безопасно переименовывать серверы без простоя сервисов, изменения идентификаторов и повторного развёртывания инфраструктуры.

Повышение стабильности работы

В новой версии исправлен ряд сценариев, которые ранее могли приводить к некорректной работе провайдера. В частности:

  • После изменения размера виртуальной машины (resize) Terraform корректно обновляет вычисляемые параметры ресурса;
  • Аналогично обновляются вычисляемые атрибуты после смены пароля администратора;
  • Если виртуальный сервер был удалён вне Terraform, провайдер корректно определяет отсутствие ресурса при следующем запуске, удаляет его из состояния и позволяет создать новый без завершения работы с ошибкой.

Где получить новую версию

Обновлённый Terraform-провайдер CLO уже доступен в GitHub и официальном репозитории HashiCorp.

Для начала работы необходимо установить Terraform согласно официальной документации, после чего подключить актуальную версию провайдера CLO и выполнить его настройку в соответствии с рекомендациями Базы знаний.