---
title: "Создать облачный файрвол через Terraform"
sidebar_label: "Создать облачный файрвол"
sidebar_position: 1
description: "Как создать облачный файрвол с правилами для входящего и исходящего трафика"
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import ConfigureProviders from '@site/terraform/_partials/common/configure-providers.mdx'
import ConfigureProvidersConfig from '@site/terraform/_partials/common/configure-providers-config.mdx'
import CreateRouter from '@site/terraform/_partials/cloud-networks/create-router.mdx'
import CreateNetworks from '@site/terraform/_partials/cloud-networks/create-networks.mdx'
import CreateEgressPolicy from '@site/terraform/_partials/cloud-firewalls/create-egress-policy.mdx'
import CreateIngressPolicy from '@site/terraform/_partials/cloud-firewalls/create-ingress-policy.mdx'
import CreateRules from '@site/terraform/_partials/cloud-firewalls/create-rules.mdx'
import CreateFirewall from '@site/terraform/_partials/cloud-firewalls/create-firewall.mdx'
import CreateResourcesAlert from '@site/terraform/_partials/common/create-resources-alert.mdx'

# Создать облачный файрвол через Terraform

<CreateResourcesAlert />

<br />

1. Опционально: [настройте провайдеры](#configure-providers).
2. [Создайте приватную сеть и подсеть](#create-networks).
3. [Создайте облачный роутер, подключенный к интернету](#create-router).
4. [Создайте правила](#create-rules).
5. [Создайте политику для входящего трафика](#create-ingress-policy).
6. [Создайте политику для исходящего трафика](#create-egress-policy).
7. [Создайте облачный файрвол](#create-firewall).

## Конфигурационные файлы \{#config}

<details>
  <summary>Пример файла для настройки провайдеров</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Пример файла для создания облачного файрвола</summary>

  ```hcl
  resource "openstack_networking_network_v2" "network_1" {
    name           = "private-network"
    admin_state_up = "true"
  }

  resource "openstack_networking_subnet_v2" "subnet_1" {
    name       = "private-subnet"
    network_id = openstack_networking_network_v2.network_1.id
    cidr       = "192.168.199.0/24"
  }

  data "openstack_networking_network_v2" "external_network_1" {
    external = true
  }

  resource "openstack_networking_router_v2" "router_1" {
    name                = "router"
    external_network_id = data.openstack_networking_network_v2.external_network_1.id
  }

  resource "openstack_networking_router_interface_v2" "router_interface_1" {
    router_id = openstack_networking_router_v2.router_1.id
    subnet_id = openstack_networking_subnet_v2.subnet_1.id
  }

  resource "openstack_fw_rule_v2" "rule_1" {
    name     = "allow-protected-network-traffic-rule"
    action   = "allow"
    protocol = "icmp"
  }

  resource "openstack_fw_rule_v2" "rule_2" {
    name                   = "allow-protected-network-traffic-rule"
    action                 = "allow"
    protocol               = "tcp"
    source_ip_address      = "192.168.199.0/24"
    destination_ip_address = "10.20.30.0/24"
  }

  resource "openstack_fw_policy_v2" "firewall_policy_1" {
    name    = "ingress-firewall-policy"
    audited = true
    rules   = [
      openstack_fw_rule_v2.rule_1.id,
    ]
  }

  resource "openstack_fw_policy_v2" "firewall_policy_2" {
    name    = "egress-firewall-policy"
    audited = true
    rules   = [
      openstack_fw_rule_v2.rule_2.id,
    ]
  }

  resource "openstack_fw_group_v2" "group_1" {
    name                       = "group"
    admin_state_up             = true
    ingress_firewall_policy_id = openstack_fw_policy_v2.firewall_policy_1.id
    egress_firewall_policy_id  = openstack_fw_policy_v2.firewall_policy_2.id
    ports                      = [
      openstack_networking_router_interface_v2.router_interface_1.port_id,
    ]
  }
  ```
</details>

## 1. Опционально: настроить провайдеры \{#configure-providers}

Если вы [настроили провайдеры](/terraform/configure-terraform-environment/#configure-providers) Selectel и OpenStack, пропустите этот шаг.

<ConfigureProviders />

## 2. Создать приватную сеть и подсеть \{#create-networks}

<CreateNetworks />

## 3. Создать облачный роутер, подключенный к интернету \{#create-router}

<CreateRouter />

## 4. Создать правила \{#create-rules}

<CreateRules />

## 5. Создать политику для входящего трафика \{#create-ingress-policy}

<CreateIngressPolicy />

## 6. Создать политику для исходящего трафика \{#create-egress-policy}

<CreateEgressPolicy />

## 7. Создать облачный файрвол \{#create-firewall}

<CreateFirewall />

<Formbricks />
