Документация "Инферит Облако"

помогает клиентам создать и настроить группы безопасности в OpenStack с помощью Terraform: от подготовки провайдера до автоматического развертывания правил, портов и интеграции в инфраструктуру

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

Создание групп безопасности

Подготовка

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

Добавить описание ресурсов

После блока авторизации provider “openstack” {} необходимо добавить следующее:

resource "openstack_networking_secgroup_v2" "secgroup" {
name        = "my_secgroup"
description = "My neutron security group"
}

openstack_networking_secgroup_v2 – описываем название новой security group. Это является обязательным параметром.
delete_default_rules = "true", – настойки по умолчанию (не обязательно).

Далее, указать настройки, ограничения и разрешения по портам.
Для этого используется ресурс – openstack_networking_secgroup_rule_v2
Пример:

resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_1" {
direction         = "ingress"
ethertype         = "IPv4"
protocol          = "tcp"
port_range_min    = 22
port_range_max    = 22
remote_ip_prefix  = "0.0.0.0/0"
security_group_id = openstack_networking_secgroup_v2.secgroup.id
}

resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_2" {
direction         = "egress"
ethertype         = "IPv4"
protocol          = "tcp"
port_range_min    = 80
port_range_max    = 80
remote_ip_prefix  = "0.0.0.0/0"
security_group_id = openstack_networking_secgroup_v2.secgroup.id
}
  • В примере создаются правила для входящего (ingress) и исходящего (egress) трафика.
  • Обязательным условием является обращение к ID группы.
  • Его можно получить, используя следующую конструкцию – openstack_networking_secgroup_v2.secgroup.id.
  • Помимо создания самой группы, правила необходимо применить к порту.

Как создавать порт, сеть и присвоение IP-адреса к инстансу описано в статье – Создание сетей.

resource "openstack_networking_port_v2" "port" {
  name               = "my_port"
  network_id         = openstack_networking_network_v2.network.id
  admin_state_up     = "true"
  security_group_ids = [openstack_networking_secgroup_v2.secgroup.id]

  fixed_ip {
    subnet_id  = openstack_networking_subnet_v2.subnet.id
    ip_address = "10.0.0.10"
  }
}
  • В примере добавляется созданная группа безопасности в порт инстанса, который создавали ранее.
  • Указывается параметр – security_group_ids.
  • Данный параметр принимает массив значений, в связи с этим, возможно указать несколько групп через запятую.

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

Запуск развертывания

После добавления нового ресурса, стоит проверить корректность выполнения команды – terraform plan:

terraform plan

# openstack_networking_secgroup_rule_v2.secgroup_rule_1 will be created
+ resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_1" {
  + direction         = "ingress"
  + ethertype         = "IPv4"
  + id                = (known after apply)
  + port_range_max    = 22
  + port_range_min    = 22
  + protocol          = "tcp"
  + region            = (known after apply)
  + remote_group_id   = (known after apply)
  + remote_ip_prefix  = "0.0.0.0/0"
  + security_group_id = (known after apply)
  + tenant_id         = (known after apply)
}

# openstack_networking_secgroup_rule_v2.secgroup_rule_2 will be created
+ resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_2" {
  + direction         = "egress"
  + ethertype         = "IPv4"
  + id                = (known after apply)
  + port_range_max    = 80
  + port_range_min    = 80
  + protocol          = "tcp"
  + region            = (known after apply)
  + remote_group_id   = (known after apply)
  + remote_ip_prefix  = "0.0.0.0/0"
  + security_group_id = (known after apply)
  + tenant_id         = (known after apply)
}

# openstack_networking_secgroup_v2.secgroup will be created
+ resource "openstack_networking_secgroup_v2" "secgroup" {
  + all_tags    = (known after apply)
  + description = "My neutron security group"
  + id          = (known after apply)
  + name        = "my_secgroup"
  + region      = (known after apply)
  + tenant_id   = (known after apply)
}

Удостоверившись, что ресурсы планируются создаться или удалиться, в зависимости от файла состояний, можно перейти к развертыванию:
terraform apply

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value:

Подтвердите выполнение командой yes.
Ресурсы создадутся, и информация будет добавлена в новый файл состояний.

Если какие-то ресурсы удалены из кода, но они присутствуют в файле состояния, то они будут удалены!
Применяйте команду terraform plan осторожно, во избежание непредвиденных последствий!

Получить доступ в личный кабинет клиента
Публикации в СМИ
Подключить сервис
Получить демо-доступ
Получить консультацию