VK Cloud logo
Обновлена12 июля 2023 г. в 13:52

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

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

terraform init
terraform apply