Let's say that you have created any resources in Azure Cloud by some other means(manually or using azure CLI) before you started using Terraform. You can import them under Terraform management instead of destroying and re-creating them from scratch. The terraform import command can be used to import existing resources.
This command currently can import only one resource at a time. This means you can't yet point Terraform import to an entire collection of resources such as azure resource group and import all the resources under that group.
To achieve this import exercise, we will do the following:
1. Create resource group, app service manually in Azure cloud (yes, by not using terraform)
2. Create terraform file and write code to create the resource.
3. Run terraform apply to see the error complaining resource exists
4. run terraform import
5. Verify in the state file that resource is imported into Terraform state.
6. Perform terraform destroy to clean up the imported resources
Watch the steps in YouTube channel:
Pre-requistes:
1. Install Terraform on your machine
2. Azure account setup
3. VS Code or any IDE
Let's create the resource manually in Azure Cloud first
Login to Azure portal - https://portal.azure.com/#home
Create App service manually in portal
Create terraform file
To import any resource, create a tf file first write a resource block for it in your configuration, establishing the name by which it will be known to Terraform:
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">=2.99.0"
}
}
}
# Configure the Microsoft Azure Provider
provider "azurerm" {
features {}
}
# Add this block code if you want to import existing Resource group
resource "azurerm_resource_group" "rg" {
name = "myManualRG"
location = "southcentralus"
tags = {
owner = "ak"
orgnization = "MyOrg"
}
}
resource "azurerm_service_plan" "service-plan" {
name = "myServicePlan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Linux"
sku_name = "S1"
tags = {
environment = "dev"
}
}
# Create JAVA app service
resource "azurerm_linux_web_app" "app-service" {
name = "MyAwesomeSuperWebApp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.service-plan.id
site_config {
minimum_tls_version = "1.0"
application_stack {
java_server = "TOMCAT"
java_version = "java11"
java_server_version = 9.5
}
}
tags = {
environment = "dev"
}
}