После ручной пошаговой настройки вашего сервера настало время автоматизировать весь процесс.
Идея проста: описать вашу инфраструктуру в файлах конфигурации и позволить Terraform управлять заказом ресурсов у OVHcloud.
Вот вводное руководство по Terraform с множеством полезной информации: https://support.us.ovhcloud.com/hc/en-us/articles/22648864003219-Using-Terraform-with-OVHcloud.
А также ссылка на официального провайдера Terraform от OVHcloud: https://registry.terraform.io/providers/ovh/ovh/latest
Автоматизация развертывания состоит из двух этапов:
- развертывание экземпляра Public Cloud;
- развертывание прикладной части (vscode-server) и её настройка.
1. Основа автоматизации: скрипт Cloud-init
Прежде чем говорить о Terraform, необходимо понять, как сервер самонастраивается при инициализации.
Для этого используется cloud-init — стандарт, позволяющий выполнять скрипты при первом запуске экземпляра.
Что вы автоматизируете в этом скрипте:
- обновление системы (
apt update/upgrade); - установку
code-serverчерез официальный скрипт; - установку и настройку Caddy (для автоматического SSL);
- настройку брандмауэра UFW.
Этот тип файла имеет особый синтаксис; cloud-config.yaml будет представлен ниже.
Однако важно запомнить: зачем использовать этот формат?
- Идемпотентность:
cloud-initгарантирует, что всё готово с первого запуска. - Безопасность с рождения: брандмауэр
ufwактивируется немедленно, сокращая окно уязвимости. - Интеграция с Terraform: достаточно одной строки для включения:
user_data = file("cloud-config.yaml")
2. Использование Terraform для развертывания
Terraform позволяет запускать экземпляр гораздо проще и быстрее.
Его конфигурация, в свою очередь, имеет несколько преимуществ:
- сохранность данных. Команда
terraform destroyдля экземпляра может сохранить том данных (цель, поставленная в главе 2); - масштабируемость. При росте проекта размер тома и/или flavor можно изменять;
- переносимость. Том данных можно отмонтировать и подключить к другой машине.
Чтобы не перегружать статью, здесь не будет копирования кода, а будет ссылка на репозиторий GitHub со всем необходимым для развертывания за несколько минут:
https://github.com/RemyAtOVH/blogpost-dev-server
Его использование:
| ubuntu@vscode-server:~$ source openrc.production.sh ubuntu@vscode-server:~$ terraform init ubuntu@vscode-server:~$ terraform plan ubuntu@vscode-server:~$ terraform apply […] Apply complete! Resources: 4 added, 0 changed, 0 destroyed. Outputs:instance_ip = “XXX.XXX.XXX.XXX” |
До применения cloud-init (или без него) виден вторичный том /dev/sdb, размер которого соответствует спецификациям Terraform:
| ubuntu@vscode-server-automated:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS […] sda 8:0 0 25G 0 disk […] sdb 8:16 0 10G 0 disk |
Именно он обеспечит сохранность данных.
Вы можете вручную удалить экземпляр и другие компоненты, не удаляя его.
Чтобы избежать удаления в случае «terraform destroy», был добавлен параметр:
| lifecycle { prevent_destroy = true } |
При первом запуске различные скрипты установки могут занять время; вы можете проверить их выполнение простым tail:
| ubuntu@vscode-server-automated:~$ tail -f /var/log/cloud-init-output.log |
После автоматического выполнения cloud-init всё, что было настроено вручную в предыдущих главах, готово. И это — автоматически и воспроизводимо!
Таким образом, при необходимости можно развернуть эту персонализированную удалённую среду разработки за несколько минут, а затем удалить через несколько часов или дней использования.
В этой серии глав мы превратили простую идею — иметь VS Code везде — в профессиональную, автоматизированную и отказоустойчивую инфраструктуру.
Ниже приведены этапы и пройденный путь.
- Глава 1: первые шаги ручной установки для понимания механизма
code-server. - Глава 2: обеспечение безопасности с помощью обратного прокси (Caddy) и брандмауэра (UFW) для безопасного использования HTTPS.
- Глава 3: эта статья, использующая Terraform и OpenStack для лучшей воспроизводимости.
Автоматизация, реализованная при развертывании у OVHcloud с использованием Public Cloud на базе OpenStack, представляет собой надёжную основу.
Отсюда можно пойти ещё дальше: добавить автоматическое резервное копирование томов (снапшоты), объединить это с CI/CD-пайплайном или даже изучить развертывание этой среды через docker-compose или Kubernetes.
Комментарии
Категории
Случайное

Создайте свой сайт с нуля за выходные:

Блокирует ли Cloudflare ботов ваш

Изменение цен на WHMCS, cPanel и VPS:

Сделка о технологическом партнерстве
