Облачная платформаEvolution

Развертывание виртуальной машины с помощью Terraform в Cloud.ru Evolution


С помощью этого руководства вы научитесь автоматически развертывать инфраструктуру в Cloud.ru Evolution при помощи Terraform.

Вы создадите виртуальную машину с плавающим публичным IP-адресом и сможете подключиться к ней по SSH со своего устройства.

Вы будете использовать следующие сервисы:

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа.

  • «Подсети» — сервис, позволяющий создавать подсети для размещения в них облачных ресурсов.

  • «Группы безопасности» — сервис для контроля трафика виртуальных машин.

  • Terraform — инструмент для управления инфраструктурой как кодом (Infrastructure as Code).

Шаги:

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Создайте сервисный аккаунт для управления облачными ресурсами.

  3. Создайте ключ доступа для аутентификации сервисного аккаунта в API Cloud.ru. Сохраните Key ID (логин) и Key Secret (пароль).

  4. Скопируйте идентификатор проекта, в котором будете разворачивать ресурсы.

  5. В этом практическом руководстве доступ к ВМ по SSH будет ограничен IP-адресом вашего компьютера. Узнайте его, например, при помощи сервиса https://2ip.ru/.

1. Установите и настройте Terraform

На этом шаге вы установите Terraform и провайдер.

  1. Если не удается скачать Terraform с сайта Hashicorp, скачайте дистрибутив Terraform с зеркала Cloud.ru.

  2. Если вы загрузили дистрибутив Terraform с зеркала, добавьте в переменную PATH путь к папке с исполняемым файлом:

    export PATH=$PATH:<path>

    Где <path> — путь к исполняемому файлу Terraform.

  3. Не выполняйте команду  terraform init — вы выполните ее далее.

2. Подготовьте файлы конфигурации

На этом шаге вы опишете конфигурацию инфраструктуры, которую будет создавать Terraform.

  1. Создайте директорию для конфигурационных файлов и перейдите в нее:

    mkdir terraform && cd terraform
  2. Сгенерируйте ключевую пару для подключения к серверу по SSH:

    ssh-keygen -t ed25519 -f id_ed25519 -N ""
  3. Создайте файл main.tf с конфигурацией провайдера.

  4. Создайте файл variables.tf, содержащий все настраиваемые параметры инфраструктуры для удобства управления и повторного использования.

  5. Подготовьте шаблон cloud-init для первоначальной настройки ВМ:

    1. Сгенерируйте хеш пароля пользователя командой:


      mkpasswd -m sha-512 "<your_password>"

      Где <your_password> — пароль пользователя виртуальной машины.

    2. Создайте файл cloud-init.yaml.tpl с шаблоном cloud-init для первоначальной настройки ВМ:

      #cloud-config
      users:
      - name: ubuntu
      ssh-authorized-keys:
      - ${ssh_public_key}
      groups: sudo
      shell: /bin/bash
      sudo: ['ALL=(ALL) NOPASSWD:ALL']
      passwd: "<password_hash>"
      lock_passwd: false
      hostname: ${vm_name}
      manage_etc_hosts: true

      Где <password_hash> — хеш пароля пользователя виртуальной машины.

  6. Создайте файл vm.tf с конфигурацией создаваемых ресурсов.

    Подробнее о доступных ресурсах и источниках данных читайте в справочнике Terraform.

3. Разверните инфраструктуру

  1. Инициализируйте конфигурацию Terraform:

    terraform init

    Если все прошло успешно, появится сообщение:

    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.
  2. Проверьте корректность конфигурационных файлов с помощью команды:

    terraform validate

    Если файлы корректные, появится сообщение:

    Success! The configuration is valid.
  3. Для предварительного просмотра изменений инфраструктуры выполните команду:

    terraform plan

    В терминале появится список ресурсов с параметрами. На этом этапе изменения не будут внесены.

  4. Примените изменения инфраструктуры, описанные в конфигурации Terraform:

    terraform apply
  5. Подтвердите изменения: введите yes и нажмите Enter.

  6. Проверьте создание ресурсов:

    1. Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина tf-evo-vm в статусе «Запущена».

    2. Чтобы проверить доступность и корректность развертывания ВМ, подключитесь к ней по SSH.

      При подключении используйте имя пользователя ubuntu.

4. Удалите созданные ресурсы

Виртуальная машина и публичный IP-адрес тарифицируются.

Если созданные ресурсы вам больше не нужны, удалите их:

terraform destroy

Результат

Вы познакомились с механизмом развертывания облачных ресурсов с помощью Terraform и научились работать с инструментами в рамках концепции IaC (Infrastructure as Code).