i wanted to update my exsiting subnet in Terraform, firstly i did this command
terraform import 'azurerm_subnet.example' /subscriptions/id-id-id-id/resourceGroups/tfeastus/providers/Microsoft.Network/virtualNetworks/myVnetTF/subnets/SUBNET-0
the import was successfull, so i made my terraform template
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
}
variable "vnetName" {
type = string
}
variable "location" {
type = string
}
variable "resource_group_name" {
type = string
}
variable "subnetName" {
type = string
}
data "azurerm_virtual_network" "vnet" {
name = var.vnetName
location = var.location
resource_group_name = var.resource_group_name
}
resource "azurerm_subnet" "example" {
name = var.subnetName
resource_group_name = var.resource_group_name
virtual_network_name = var.vnetName
delegation {
name = "delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
}
}
}
Although, after terraform apply i get an error saying that │ "address_prefix": one of
address_prefix,address_prefixes must be specified
. If i already imported the subnet, and it is in the terraform.tfstate
why do i have to provide an already existing address_prefix?
address_prefixes is a required attribute. You have to specify it.
You successfully imported the code from azure portal to local system by using **terraform import command**
Present in your local system you have **terraform tfstate file** right.
Now you wrote infrastructure code like this in your local system
provider "azurerm" {
features {}
version = "=3.0.0"
}
variable "vnetName" {
}
variable "location" {
}
variable "resource_group_name" {
}
variable "subnetName" {
}
data "azurerm_virtual_network" "vnet" {
name = var.vnetName
location = var.location
resource_group_name = var.resource_group_name
}
resource "azurerm_subnet" "example" {
name = var.subnetName
resource_group_name = var.resource_group_name
virtual_network_name = var.vnetName
delegation {
name = "delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
}
}
}
now need to use terraform commands, there are six commands in terraform
1.**terraform init** - When you use init command it will download the azurerm module and terraform plugins
2.**terrafrom fmt** - when you use fmt command it will do allign the text or code in proper way or proper format
3.**terraform validate** - when you use **validate command** it will do check all parameters or argument available or not in resource block
Here it will give error for you why because
In tfstate file we have already **address_prefix** for subnet but when you come to infra code we didn't mention any **address_prefix** parameter or argument
when you **terraform validate** command it will check all parameters are available or not in infra code and also it will refresh tfstate file as well as .
Now, in **tfstatefile** we have all parameters and now it will check infra code, in infa code **address_prefix** parameter or argument missing so it will give error for you
If you won't or don't use **terraform validate** commands means, when you use terraform plan/apply it will give error for you.
So, definitely you need to mention address_prefix parameter or argument in infra code also .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.