---
title: "Create a Private Network and Subnet via Terraform"
sidebar_label: "Create a private network and subnet"
description: "How to create a private network and subnet"
sidebar_position: 1
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import ConfigureProviders from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/configure-providers.mdx'
import ConfigureProvidersConfig from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/configure-providers-config.mdx'
import CreateResourcesAlert from '@site/i18n/en/docusaurus-plugin-content-docs-terraform/current/_partials/common/create-resources-alert.mdx'
import {TabItemLabel} from '@selectel/docux/components'

# Create a private network and subnet via Terraform

<CreateResourcesAlert />

<br />

1. Optional: [configure providers](#configure-providers).
2. [Create a private network and subnet](#create-networks).

## Configuration files \{#config}

<details>
  <summary>Example file for configuring providers</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Example file for creating a private network and subnet with DHCP</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"
  }
  ```
</details>

<details>
  <summary>Example file for creating a private network and subnet without DHCP</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"
    enable_dhcp = false
  }
  ```
</details>

## 1. Optional: configure providers \{#configure-providers}

If you have [configured the Selectel and OpenStack providers](/terraform/configure-terraform-environment/#configure-providers), skip this step.

<ConfigureProviders />

## 2. Create a private network and subnet \{#create-networks}

<Tabs>
  <TabItem value="dhcpon" default>
    <TabItemLabel>
      DHCP enabled
    </TabItemLabel>

    When DHCP is enabled in a subnet, two ports are automatically created for the primary and secondary DHCP servers, and two IP addresses are reserved for them.

    ```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"
    }
    ```

    Here `cidr` is the CIDR of the private subnet (e.g., `192.168.199.0/24`).

    See the detailed resource description:

    * [openstack\_networking\_network\_v2](/terraform/openstack-provider-reference/networking-neutron/resources/openstack_networking_network_v2/);
    * [openstack\_networking\_subnet\_v2](/terraform/openstack-provider-reference/networking-neutron/resources/openstack_networking_subnet_v2/).
  </TabItem>

  <TabItem value="dhcpoff">
    <TabItemLabel>
      DHCP disabled
    </TabItemLabel>

    ```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"
      enable_dhcp = false
    }
    ```

    Here `cidr` is the CIDR of the private subnet (e.g., `192.168.199.0/24`).

    See the detailed resource description:

    * [openstack\_networking\_network\_v2](/terraform/openstack-provider-reference/networking-neutron/resources/openstack_networking_network_v2/);
    * [openstack\_networking\_subnet\_v2](/terraform/openstack-provider-reference/networking-neutron/resources/openstack_networking_subnet_v2/).
  </TabItem>
</Tabs>

<Formbricks />
