Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Управление внутренними IP-адресами через Terraform

Илья Ушаков
Илья Ушаков
Технический писатель
02 мая 2023 г.
211
7 минут чтения
Средний рейтинг статьи: 5

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

Image2

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

В настоящей инструкции мы расскажем как с помощью Terraform можно организовать внутренние IP-адреса, а также в последствии управлять ими. Эта инструкция подойдет для провайдеров, у которых пользователь может самостоятельно выбирать IP-адреса. Отметим, что в Timeweb Cloud такой возможности пока нет.

Преимущества использования Terraform

Данную главу мы посвятим основным преимуществам использования Terraform для управления внутренними IP-адресами. Ниже будут перечислены главные из них:

  • Автоматизированность.

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

  • Управление версиями.

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

  • Повторное использование.

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

Управление внутренними IP-адресами через Terraform

Чтобы использовать Terraform для управления внутренними IP-адресами, вам нужно выполнить следующие шаги:

  1. В первую очередь необходимо составить список требований к будущим внутренним IP-адресам:
    • Определите сетевые зоны и подсети, в которых будут размещены будущие IP-адреса;
    • Определите объекты, для которых они будут использоваться (Виртуальная машина, контейнер и т.д);
    • Выберите провайдер, который будет отвечать за создание ресурсов;
    • Определите диапазон будущих IP-адресов.
  1. По завершению предыдущего шага можно переходить к редактированию своей конфигурации. Для этого напишем код, отвечающий за создание внутренних IP-адресов.

Создание новых ресурсов в Terraform приходится на провайдера. Провайдеры — это плагины, которые позволяют Terraform управлять ресурсами в конкретной среде.

Синтаксис кода:

provider "Имя_провайдера" {
  project = "Имя_проекта>"
  region  = "<Регион>"
}

resource "Название_ресурса" "Имя_подсети" {
  name          = "Имя_подсети"
  ip_cidr_range = "Диапазон_IP_адресов"
  network       = "Имя_сети"
}

resource "Название_ресурса_для_внутреннего_IP" "Имя_внутреннего_IP_адреса" {
  name         = "Имя_внутреннего_IP_адреса"
  subnetwork   = Название_ресурса.Имя_подсети.self_link
}

Теперь рассмотрим код выше по порядку:

  • Фрагмент №1.

Здесь мы указываем имя провайдера, имя проекта и регион. Все это необходимо для создания будущих ресурсов. 

  • Фрагмент №2.

Следующий фрагмент отвечает за создание подсети, которая впоследствии будет использоваться для назначения ресурсов. Здесь пользователь указывает имя этой подсети, диапазон IP-адресов и имя сети, в которой будет создана подсеть.

  • Фрагмент №3.

Последний фрагмент – это и есть создание внутреннего IP-адреса. Он будет назначен в той подсети, которую вы организовали в прошлом фрагменте. 

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

Также, мы используем ссылку на атрибуты self_link (URI созданного ресурса) для ранее созданной подсети.

  1. После написания кода можно переходить к созданию ресурсов. Для этого необходимо запустить Terraform.

Вы можете запустить инструментарий с помощью следующих команд:

terraform (init/plan/apply)

Ниже приведем обозначения, для каждой команды

  • terraform init – инициализирует инструментарий и загружает все необходимые плагины; 
  • terraform plan – показывает, какие ресурсы будут созданы;
  • terraform apply – создает ресурсы.

На этом шаге создание ресурсов закончено. Дальше мы опишем дополнительные шаги для управления ресурсами.

  1. После создания внутренних IP-адресов вы можете редактировать, обновлять или удалять их. Для этого используйте команды, описанные в предыдущем шаге.

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

  1. На данном шаге мы поговорим о модулях в Terraform и расскажем чем они могут быть полезны для разработчиков.

Первый модуль с которым вы столкнулись – это главная конфигурация. По другому его называют «корневым» модулем.

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

Главный модуль может вызывать другие дочерние модули. 

Image1

Если вы планируете создавать большое количество внутренних IP-адресов, вы можете использовать модули для повторного использования вашего кода.

  1. На этом шаге мы поговорим про использование переменных в своей конфигурации.  

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

Главный модуль будет содержать только ссылки на переменные. А все содержимое переменных будет находиться в другом модуле, который вы можете отредактировать при необходимости. Рекомендуется создавать модуль с названием variables.tf для удобства.

Ниже приведем пример использования переменных при создании внутренних IP-адресов:

provider "имя_провайдера" {
  project = var.project_id
  region  = var.region
}

module "internal_ip_address" {
  source          = "./modules/internal-ip-address"
  subnetwork_name = var.subnetwork_name
  ip_cidr_range   = var.ip_cidr_range
  network_name    = var.network_name
  ip_address_name = var.ip_address_name
}

variable "project_id" {
  type        = string
  description = "Идентификатор проекта."
}

variable "region" {
  type        = string
  description = "Регион сервера"
}

variable "subnetwork_name" {
  type        = string
  description = "Имя подсети"
}

variable "ip_cidr_range" {
  type        = string
  description = "Диапазон IP-адресов для подсети"
}

variable "network_name" {
  type        = string
  description = "Имя сети."
}

variable "ip_address_name" {
  type        = string
  description = "Имя внутреннего IP-адреса"
}

Также необходимо создать файл, содержащий объявление переменных.

  1. Перед тем, как внести в конфигурацию изменения, обязательно проверяйте их с помощью terraform plan. Как мы уже говорили раньше, данная команда выводит полный список всех будущих изменений для их проверки и корректировки. Только после этого вносите изменения командой terraform apply.
  2. При создании новых ресурсов, обязательно проверяйте, каким людям и сервисам предоставляется доступ. Это касается не только процесса создания внутренних IP-адресов.

Кроме того, вы можете использовать инструменты для проверки безопасности вашего кода, такие как tfsec и Checkov. Они могут помочь обнаружить потенциальные уязвимости в вашей конфигурации.

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

Заключение

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону