[Yandex Cloud documentation](../../index.md) > [Yandex Virtual Private Cloud](../index.md) > [Step-by-step guides](index.md) > Subnet > Updating a subnet

# Updating a subnet

After creating a [subnet](../concepts/network.md#subnet), you can change its name, description, and DHCP settings.

{% list tabs group=instructions %}

- Management console {#console}

  1. In the [management console](https://console.yandex.cloud), select the folder containing the subnet you want to update.
  1. Navigate to **Virtual Private Cloud**.
  1. In the left-hand panel, select ![subnets](../../_assets/console-icons/nodes-right.svg) **Subnets**.
  1. Click ![image](../../_assets/console-icons/ellipsis.svg) in the row of the subnet you need and select **Edit**.
  1. Edit as appropriate.
  1. Click **Save changes**.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  1. See the description of the CLI command for updating subnet settings:

      ```
      yc vpc subnet update --help
      ```

  1. Get a list of all subnets in the default folder:

      ```
      yc vpc subnet list
      ```
	    
      Result:

      ```
      +----------------------+-----------------------+----------------------+
      |          ID          |         NAME          |         ...          |
      +----------------------+-----------------------+----------------------+
      ...
      | e2l2prrbkbim******** |     test-subnet-1     |         ...          |
      ...
      +----------------------+-----------------------+----------------------+
      ```

  1. Select the `ID` or `NAME` of the subnet you need.
  1. Change the subnet parameters, e.g.:

      ```
      yc vpc subnet update e2l2prrbkbim******** \
        --new-name test-subnet-renamed \
        --labels new_label=test_label
      ```

      Result:

      ```
      id: e2l2prrbkbim********
      folder_id: b1g6ci08ma55********
      created_at: "2018-10-24T13:54:10Z"
      name: test-subnet-renamed
      description: My test subnet
      labels:
        new_label: test_label
      network_id: enplom7a98s1********
      zone_id: ru-central1-a
      v4_cidr_blocks:
      - 192.168.0.0/24
      ```

- Terraform {#tf}

  If you do not have Terraform yet, [install it and configure the Yandex Cloud provider](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), [authenticate](../../terraform/authentication.md) using the appropriate method.

  With [Terraform](https://www.terraform.io/), you can quickly create a cloud infrastructure in Yandex Cloud and manage it using configuration files. These files store the infrastructure description written in HashiCorp Configuration Language (HCL). If you change the configuration files, Terraform automatically detects which part of your configuration is already deployed, and what should be added or removed.
  
  Terraform is distributed under the [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE). The [Yandex Cloud provider for Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) is distributed under the [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) license.
  
  For more information about the provider resources, see the guides on the [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) website or [its mirror](../../terraform/index.md).

  1. Open the Terraform configuration file and edit the fragment with the subnet description:

     ```hcl
     ...
     resource "yandex_vpc_subnet" "lab-subnet-a" {
       name           = "subnet-1"
	   description    = "My first subnet"
       v4_cidr_blocks = ["10.2.0.0/16"]
       zone           = "ru-central1-a"
       network_id     = "${yandex_vpc_network.lab-net.id}"
     }
     ...
     ```

     For more on the properties of the `yandex_vpc_subnet` resource in Terraform, see [this provider guide](../../terraform/resources/vpc_subnet.md).

  1. Validate your configuration using this command:

     ```
     terraform validate
     ```
     
     If the configuration is valid, you will get this message:
     
     ```
     Success! The configuration is valid.
     ```

  1. Run this command:

     ```
     terraform plan
     ```
  
     You will see a list of resources and their properties. No changes will be made at this step. Terraform will show any errors in the configuration.

  1. Apply the configuration changes:

     ```
     terraform apply
     ```
     
  1. Confirm the changes: type `yes` into the terminal and press **Enter**.

     You can check the subnet update using the [management console](https://console.yandex.cloud) or this [CLI](../../cli/quickstart.md) command:

     ```
     yc vpc subnet get <subnet_name>
     ```

- API {#api}

  To change the [subnet](../concepts/network.md#subnet), use the [update](../api-ref/Subnet/update.md) REST API method for the [Subnet](../api-ref/Subnet/index.md) resource or the [SubnetService/Update](../api-ref/grpc/Subnet/update.md) gRPC API call, and provide the following in the request:

  * ID of the subnet you want to update in the `subnetId` request parameter.

    To get the subnet ID, use the [list](../api-ref/Subnet/list.md) REST API method for the [Subnet](../api-ref/Subnet/index.md) resource or the [SubnetService/List](../api-ref/grpc/Subnet/list.md) gRPC API call and provide the folder ID in the `folderId` request parameter.

    To learn how to find out the folder ID, see [Getting the folder ID](../../resource-manager/operations/folder/get-id.md).

  * New subnet settings if needed:

    * Name in the `name` parameter.
    * Description in the `description` parameter.
    * Network labels in the `labels` parameter.
    * Route table ID in the `routeTableId` parameter.
    * DHCP settings in the `dhcpOptions` parameter.

  * List of settings to update in the `updateMask` parameter.

  {% note warning %}
  
  The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the `updateMask` parameter as a single comma-separated string.
  
  {% endnote %}

{% endlist %}

## Examples {#examples}

### Changing a subnet using the name flag {#using-name-flag}

{% list tabs group=instructions %}

- CLI {#cli}

  You can change a subnet by using its name instead of its ID:

  ```
  yc vpc subnet update test-subnet-1 \
    --new-name test-subnet-renamed \
    --labels new_label=test_label
  ```

  Result:

  ```
  id: e2l2prrbkbim********
  folder_id: b1g6ci08ma55********
  created_at: "2018-10-24T13:54:10Z"
  name: test-subnet-renamed
  description: My test subnet
  labels:
    new_label: test_label
  network_id: enplom7a98s1********
  zone_id: ru-central1-a
  v4_cidr_blocks:
  - 192.168.0.0/24
  ```

  You can provide the subnet ID and name not only as positional arguments, but also using the `--id` and `--name` parameters:

  ```
  yc vpc network update \
    --id enpavfmgapum******** \
    --new-name test-network-renamed \
    --labels new_label=test_label
  ```

  ```
  yc vpc network update \
    --name test-network-1 \
    --new-name test-network-renamed \
    --labels new_label=test_label
  ```

{% endlist %}