VK Cloud logo

Управление сетями и группами безопасности

Прежде всего убедитесь, что вы установили Terraform и создали файл main.tf с необходимыми провайдерами.

Чтобы создать сеть или группу безопасности, создайте файл network.tf, где будет описана конфигурация создаваемых сущностей. Добавьте текст из примеров ниже, и исправьте значения настроек для ваших сетей и групп безопасности.

  1. Для создания сети и групп безопасности вам потребуются следующие объекты:

    • Ресурсы (resource):

      • vkcs_networking_network — сеть, в которую будут вноситься изменения.
      • vkcs_networking_subnet — подсеть из сети. В примере: subnetwork.
      • vkcs_networking_router — роутер для внешней сети и взаимодействия с внешним миром. В примере: router.
      • vkcs_networking_router_interface — подключить роутер к внутренней сети.
      • vkcs_networking_secgroup — группа безопасности, в которую будут включены правила доступа.
      • vkcs_networking_secgroup_rule — правило для группы безопасности. В примере, открываем доступ к сети с любого IP по портам 22 и 3389.
      • vkcs_networking_port — создать ресурс сетевого порта внутри VK Cloud.
      • vkcs_networking_port_secgroup_associate — привязать порт к группе безопасности.
    • Источники данных (data source):

      • vkcs_networking_network – внешняя сеть для получения публичного IP (Floating IP).
    1data "vkcs_networking_network" "extnet" {
    2   name = "ext-net"
    3}
    4
    5resource "vkcs_networking_network" "network" {
    6   name = "net"
    7}
    8
    9resource "vkcs_networking_subnet" "subnetwork" {
    10   name       = "subnet_1"
    11   network_id = vkcs_networking_network.network.id
    12   cidr       = "192.168.199.0/24"
    13   ip_version = 4
    14}
    15
    16resource "vkcs_networking_router" "router" {
    17   name                = "router"
    18   admin_state_up      = true
    19   external_network_id = data.vkcs_networking_network.extnet.id
    20}
    21
    22resource "vkcs_networking_router_interface" "db" {
    23   router_id = vkcs_networking_router.router.id
    24   subnet_id = vkcs_networking_subnet.subnetwork.id
    25}
    26
    27
    28resource "vkcs_networking_secgroup" "secgroup" {
    29   name = "security_group"
    30   description = "terraform security group"
    31}
    32
    33resource "vkcs_networking_secgroup_rule" "secgroup_rule_1" {
    34   direction = "ingress"
    35   ethertype = "IPv4"
    36   port_range_max = 22
    37   port_range_min = 22
    38   protocol = "tcp"
    39   remote_ip_prefix = "0.0.0.0/0"
    40   security_group_id = vkcs_networking_secgroup.secgroup.id
    41   description = "secgroup_rule_1"
    42}
    43
    44resource "vkcs_networking_secgroup_rule" "secgroup_rule_2" {
    45   direction = "ingress"
    46   ethertype = "IPv4"
    47   port_range_max = 3389
    48   port_range_min = 3389
    49   remote_ip_prefix = "0.0.0.0/0"
    50   protocol = "tcp"
    51   security_group_id = vkcs_networking_secgroup.secgroup.id
    52}
    53
    54resource "vkcs_networking_port" "port" {
    55   name = "port_1"
    56   admin_state_up = "true"
    57   network_id = vkcs_networking_network.network.id
    58
    59   fixed_ip {
    60   subnet_id =  vkcs_networking_subnet.subnetwork.id
    61   ip_address = "192.168.199.23"
    62   }
    63}
    64
    65resource "vkcs_networking_port_secgroup_associate" "port" {
    66   port_id = vkcs_networking_port.port.id
    67   enforce = "false"
    68   security_group_ids = [
    69   vkcs_networking_secgroup.secgroup.id,
    70   ]
    71}
  2. Добавьте пример в файл network.tf и выполните следующие команды:

terraform init
terraform apply