Поиск по сайту:

Как создать дроплет DigitalOcean с помощью Terraform


DigitalOcean — один из самых простых в использовании поставщиков облачных виртуальных машин. Если вам нужна быстро подготовленная вычислительная среда, виртуальные машины DigitalOcean обычно становятся доступными менее чем за 60 секунд. Вместо использования пользовательского интерфейса (UI) часто лучше автоматизировать.

Terraform — это инфраструктура как язык кода, который позволяет вам использовать поставщиков, таких как DigitalOcean, для предоставления ресурсов без использования пользовательского интерфейса DigitalOcen. В этой статье мы рассмотрим, как использовать Terraform для предоставления дроплета DigitalOcean (виртуальной машины).

Установка Терраформ

Terraform доступен для множества платформ, как для Windows, так и для Linux. Самый простой способ — загрузить исполняемый файл по ссылке ниже и поместить исполняемый файл в системный путь, чтобы можно было ссылаться на него из любого места.

Создайте ключи API от DigitalOcean

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

  1. Войдите в панель управления DigitalOcean.
  2. Перейдите в раздел API.
  3. Нажмите «Создать новый токен».
  4. Введите имя токена и разрешите ему права чтения и записи.
  5. Скопируйте ключ API, так как он больше не будет отображаться. Мы будем использовать его для Terraform.

Начиная

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

mkdir digitalocean-terraform
cd digitalocean-terraform

Затем нам нужно создать файл digitalocean.tfvars, который мы будем использовать для хранения нашего ранее сгенерированного ключа API. Это лучшая практика, чтобы не жестко кодировать учетные данные. При использовании контроля версий, что рекомендуется, вы можете игнорировать любые файлы .tfvars или определенные файлы, чтобы эти учетные данные не сохранялись в истории контроля версий.

touch digitalocean.tfvars

В digitalocean.tfvars мы создадим простую переменную с именем api_token. Это будет использоваться позже в наших скриптах Terraform.

api_token = 12345123213412425

Создание файла ресурсов дроплета

Теперь, когда мы настроили конфигурацию Terraform и DigitalOcean, давайте создадим наш файл конфигурации Terraform. Создайте файл digitalocean.tf и используйте шаблонный код ниже, чтобы начать работу. Чтобы разрешить нашей конфигурации использовать провайдера и учетные данные, нам нужно указать, где взять эти данные.

variable "api_token" {
  default = ""
}

provider "digitalocean" {
  token = var.api_token
}

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

Заполнение команд капли

В этом случае мы хотим предоставить простой ресурс капли. Есть пара параметров, которые мы собираемся использовать. Мы хотим использовать их самый дешевый тарифный план в центре обработки данных NYC1 и добавить несколько опций, которые сделают Droplet более гибким в будущем.

  • Образ капли: ubuntu-18.04-x64
  • Регион: NYC1
  • Размер: s1-vcpu1-1gb

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

resource "digitalocean_droplet" "web" {
  image              = "ubuntu-18-04-x64"
  name               = "test-web-vm"
  region             = "nyc1"
  size               = "s-1vcpu-1gb"
  monitoring         = true
  ipv6               = true
  private_networking = true
}

Дополнительные команды, которые мы здесь добавляем, предназначены для мониторинга, ipv6 и частных сетей. Мониторинг означает, что у вас будут такие показатели, как ЦП и память, из облачной консоли DigitalOcean. Затем вы можете установить оповещения по этим показателям, так что это очень полезно в будущем. IPv6 означает, что ваш дроплет будет доступен по IPv6, что поможет защитить ваши дроплеты в будущем. Наконец, частная сеть означает, что ваша капля получит адрес 10.x.x.x, доступный другим каплям, но не общедоступному Интернету.

Есть еще одна очень полезная возможность — пользовательские данные. Для Linux это позволяет запускать определенные команды для подготовки виртуальной машины, например для обновления пакетов. Мы можем включить это право в конфигурацию Terraform, добавив этот атрибут.

resource "digitalocean_droplet" "web" {
  image              = "ubuntu-18-04-x64"
  name               = "test-web-vm"
  region             = "nyc1"
  size               = "s-1vcpu-1gb"
  monitoring         = true
  ipv6               = true
  private_networking = true
    user_data          = "#cloud-confignpackage_update: truenpackage_upgrade: true"
}

Если вы начинаете много работать с user_data, вы можете хранить данные в файле YAML, а затем включать их в объявление ресурса.

файл(\user-data.yml\)

Развертывание капли

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

terraform apply -var-file="digitalocean.tfvars

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

Подведение итогов

Как вы можете понять из этой статьи, создать ресурс в DigitalOcean через Terraform можно быстро и просто. Есть много других ресурсов, которые вы можете предоставить с помощью провайдера DigitalOcean.

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

Объединение Terraform и DigitalOcean обеспечивает мощную комбинацию, которая не только защищает вашу инфраструктуру, позволяет контролировать версии, но и обеспечивает согласованность и безопасность.