티스토리 뷰
<참조>
https://docs.microsoft.com/ko-kr/azure/terraform/terraform-create-vm-cluster-module
https://docs.microsoft.com/en-us/azure/terraform/terraform-create-vm-cluster-module
이 문서에서는 Terraform Azure 컴퓨팅 모듈로 소형 VM 클러스터를 만드는 과정을 안내한다.
- Azure로 인증 설정
- Terraform 템플릿 만들기
- plan으로 변경 내용 시각화
- 구성을 적용하여 VM 클러스터 만들기
Terraform에 대한 자세한 내용은 Terraform 설명서를 참조한다.
Azure로 인증 설정
먼저 실습을 위한 디렉토리를 생성하고 VS Code로 연다.
도움말 실습환경 구성에 대한 정보를 보려면 01 Azure 실습을 위한 Visual Studio Code 환경 구성을 참조한다. |
Azure 서비스 주체를 생성한다. Azure 서비스 주체는 애플리케이션, 호스팅된 서비스 및 자동화된 도구에서 사용하여 Azure 리소스에 액세스하기 위해 만든 ID이다. 서비스 주체에 생성에 대한 자세한 내용은 Terraform을 설치하고 Azure에 대한 액세스 구성을 검토한다.
다음 명령을 수행하여 자신의 구독 ID를 확인한다.
az account show |
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ az account show
{
"environmentName": "AzureCloud",
"id": "f8764f39-xxxx-xxxx-xxxx-77b286ed971b",
"isDefault": true,
"name": "Visual Studio Enterprise 201907",
"state": "Enabled",
"tenantId": "917bfe84-0ca6-488d-ad3a-236e41ceafe9",
"user": {
"name": "zerobig.kim@gmail.com",
"type": "user"
}
}
다음과 같이 az ad sp create-for-rbac명령을 사용 하여 범위를 구독으로 설정하고 Terraform에 사용할 서비스 사용자를 만든다.
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<SUBSCRIPTION_ID>" |
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b"
Creating a role assignment under the scope of "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b"
Retrying role assignment creation: 1/36
{
"appId": "57d227bf-6140-4972-9a4f-c7e7aea47a7d",
"displayName": "azure-cli-2020-02-02-01-13-17",
"name": "http://azure-cli-2020-02-02-01-13-17",
"password": "ca731ee6-xxxx-xxxx-xxxx-bdaa8d0d670b",
"tenant": "917bfe84-0ca6-488d-ad3a-236e41ceafe9"
}
azureProviderAndCreds.tf 라는 파일을 만들고 위에서 생성했던 서비스 주체 값을 사용하여 다음 코드를 채운다.
참고로 client_id는 appid를 의미하고, client_secret에는 password 값을 넣어주면 된다.
provider "azurerm" {
subscription_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
tenant_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client_secret = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
템플릿 만들기
다음 코드로 main.tf라는 새 Terraform 템플릿을 만든다.
module mycompute {
source = "Azure/compute/azurerm"
resource_group_name = "zeroResourceGroup"
location = "Korea Central"
admin_password = "ComplxP@assw0rd!"
vm_os_simple = "WindowsServer"
is_windows_image = "true"
remote_port = "3389"
nb_instances = 2
public_ip_dns = ["zero-terraform-demo"]
vnet_subnet_id = module.network.vnet_subnets[0]
}
module "network" {
source = "Azure/network/azurerm"
location = "Korea Central"
resource_group_name = "zeroResourceGroup"
}
output "vm_public_name" {
value = module.mycompute.public_ip_dns_name
}
output "vm_public_ip" {
value = module.mycompute.public_ip_address
}
output "vm_private_ips" {
value = module.mycompute.network_interface_private_ip
}
구성 디렉터리에서 terraform init을 실행합니다. 0.10.6이상의 Terraform 버전을 사용하면 다음과 같은 출력이 표시된다.
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ terraform init
Initializing modules...
Downloading Azure/compute/azurerm 2.0.0 for mycompute...
- mycompute in .terraform/modules/mycompute
- mycompute.os in .terraform/modules/mycompute/os
Downloading Azure/network/azurerm 2.0.0 for network...
- network in .terraform/modules/network
Initializing the backend...
Initializing provider plugins...
- Checking for available provider plugins...
- Downloading plugin for provider "azurerm" (hashicorp/azurerm) 1.42.0...
- Downloading plugin for provider "random" (hashicorp/random) 2.2.1...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
plan으로 변경 내용 시각화
terraform plan을 실행하여 템플릿으로 만든 가상 머신 인프라를 미리 본다.
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# module.mycompute.azurerm_availability_set.vm will be created
+ resource "azurerm_availability_set" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ managed = true
+ name = "myvm-avset"
+ platform_fault_domain_count = 2
+ platform_update_domain_count = 2
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_network_interface.vm[0] will be created
+ resource "azurerm_network_interface" "vm" {
+ applied_dns_servers = (known after apply)
+ dns_servers = (known after apply)
+ enable_accelerated_networking = false
+ enable_ip_forwarding = false
+ id = (known after apply)
+ internal_dns_name_label = (known after apply)
+ internal_fqdn = (known after apply)
+ location = "koreacentral"
+ mac_address = (known after apply)
+ name = "nic-myvm-0"
+ network_security_group_id = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_addresses = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ virtual_machine_id = (known after apply)
+ ip_configuration {
+ application_gateway_backend_address_pools_ids = (known after apply)
+ application_security_group_ids = (known after apply)
+ load_balancer_backend_address_pools_ids = (known after apply)
+ load_balancer_inbound_nat_rules_ids = (known after apply)
+ name = "ipconfig0"
+ primary = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_address_allocation = "dynamic"
+ private_ip_address_version = "IPv4"
+ public_ip_address_id = (known after apply)
+ subnet_id = (known after apply)
}
}
# module.mycompute.azurerm_network_interface.vm[1] will be created
+ resource "azurerm_network_interface" "vm" {
+ applied_dns_servers = (known after apply)
+ dns_servers = (known after apply)
+ enable_accelerated_networking = false
+ enable_ip_forwarding = false
+ id = (known after apply)
+ internal_dns_name_label = (known after apply)
+ internal_fqdn = (known after apply)
+ location = "koreacentral"
+ mac_address = (known after apply)
+ name = "nic-myvm-1"
+ network_security_group_id = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_addresses = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ virtual_machine_id = (known after apply)
+ ip_configuration {
+ application_gateway_backend_address_pools_ids = (known after apply)
+ application_security_group_ids = (known after apply)
+ load_balancer_backend_address_pools_ids = (known after apply)
+ load_balancer_inbound_nat_rules_ids = (known after apply)
+ name = "ipconfig1"
+ primary = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_address_allocation = "dynamic"
+ private_ip_address_version = "IPv4"
+ subnet_id = (known after apply)
}
}
# module.mycompute.azurerm_network_security_group.vm will be created
+ resource "azurerm_network_security_group" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "myvm-3389-nsg"
+ resource_group_name = "zeroResourceGroup"
+ security_rule = (known after apply)
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_network_security_rule.vm will be created
+ resource "azurerm_network_security_rule" "vm" {
+ access = "Allow"
+ description = "Allow remote protocol in from all locations"
+ destination_address_prefix = "*"
+ destination_port_range = "3389"
+ direction = "Inbound"
+ id = (known after apply)
+ name = "allow_remote_3389_in_all"
+ network_security_group_name = "myvm-3389-nsg"
+ priority = 100
+ protocol = "Tcp"
+ resource_group_name = "zeroResourceGroup"
+ source_address_prefix = "*"
+ source_port_range = "*"
}
# module.mycompute.azurerm_public_ip.vm[0] will be created
+ resource "azurerm_public_ip" "vm" {
+ allocation_method = "Dynamic"
+ domain_name_label = "zero-terraform-demo"
+ fqdn = (known after apply)
+ id = (known after apply)
+ idle_timeout_in_minutes = 4
+ ip_address = (known after apply)
+ ip_version = "IPv4"
+ location = "koreacentral"
+ name = "myvm-0-publicIP"
+ public_ip_address_allocation = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ sku = "Basic"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_resource_group.vm will be created
+ resource "azurerm_resource_group" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_virtual_machine.vm-windows[0] will be created
+ resource "azurerm_virtual_machine" "vm-windows" {
+ availability_set_id = (known after apply)
+ delete_data_disks_on_termination = false
+ delete_os_disk_on_termination = false
+ id = (known after apply)
+ license_type = (known after apply)
+ location = "koreacentral"
+ name = "myvm0"
+ network_interface_ids = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ vm_size = "Standard_DS1_V2"
+ boot_diagnostics {
+ enabled = false
}
+ identity {
+ identity_ids = (known after apply)
+ principal_id = (known after apply)
+ type = (known after apply)
}
+ os_profile {
+ admin_password = (sensitive value)
+ admin_username = "azureuser"
+ computer_name = "myvm0"
+ custom_data = (known after apply)
}
+ os_profile_windows_config {
+ enable_automatic_upgrades = false
+ provision_vm_agent = true
}
+ storage_data_disk {
+ caching = (known after apply)
+ create_option = (known after apply)
+ disk_size_gb = (known after apply)
+ lun = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = (known after apply)
+ name = (known after apply)
+ vhd_uri = (known after apply)
+ write_accelerator_enabled = (known after apply)
}
+ storage_image_reference {
+ offer = "WindowsServer"
+ publisher = "MicrosoftWindowsServer"
+ sku = "2016-Datacenter"
+ version = "latest"
}
+ storage_os_disk {
+ caching = "ReadWrite"
+ create_option = "FromImage"
+ disk_size_gb = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = "Premium_LRS"
+ name = "osdisk-myvm-0"
+ os_type = (known after apply)
+ write_accelerator_enabled = false
}
}
# module.mycompute.azurerm_virtual_machine.vm-windows[1] will be created
+ resource "azurerm_virtual_machine" "vm-windows" {
+ availability_set_id = (known after apply)
+ delete_data_disks_on_termination = false
+ delete_os_disk_on_termination = false
+ id = (known after apply)
+ license_type = (known after apply)
+ location = "koreacentral"
+ name = "myvm1"
+ network_interface_ids = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ vm_size = "Standard_DS1_V2"
+ boot_diagnostics {
+ enabled = false
}
+ identity {
+ identity_ids = (known after apply)
+ principal_id = (known after apply)
+ type = (known after apply)
}
+ os_profile {
+ admin_password = (sensitive value)
+ admin_username = "azureuser"
+ computer_name = "myvm1"
+ custom_data = (known after apply)
}
+ os_profile_windows_config {
+ enable_automatic_upgrades = false
+ provision_vm_agent = true
}
+ storage_data_disk {
+ caching = (known after apply)
+ create_option = (known after apply)
+ disk_size_gb = (known after apply)
+ lun = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = (known after apply)
+ name = (known after apply)
+ vhd_uri = (known after apply)
+ write_accelerator_enabled = (known after apply)
}
+ storage_image_reference {
+ offer = "WindowsServer"
+ publisher = "MicrosoftWindowsServer"
+ sku = "2016-Datacenter"
+ version = "latest"
}
+ storage_os_disk {
+ caching = "ReadWrite"
+ create_option = "FromImage"
+ disk_size_gb = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = "Premium_LRS"
+ name = "osdisk-myvm-1"
+ os_type = (known after apply)
+ write_accelerator_enabled = false
}
}
# module.mycompute.random_id.vm-sa will be created
+ resource "random_id" "vm-sa" {
+ b64 = (known after apply)
+ b64_std = (known after apply)
+ b64_url = (known after apply)
+ byte_length = 6
+ dec = (known after apply)
+ hex = (known after apply)
+ id = (known after apply)
+ keepers = {
+ "vm_hostname" = "myvm"
}
}
# module.network.azurerm_resource_group.network will be created
+ resource "azurerm_resource_group" "network" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "zeroResourceGroup"
+ tags = (known after apply)
}
# module.network.azurerm_subnet.subnet[0] will be created
+ resource "azurerm_subnet" "subnet" {
+ address_prefix = "10.0.1.0/24"
+ enforce_private_link_endpoint_network_policies = false
+ enforce_private_link_service_network_policies = false
+ id = (known after apply)
+ ip_configurations = (known after apply)
+ name = "subnet1"
+ resource_group_name = "zeroResourceGroup"
+ virtual_network_name = "acctvnet"
}
# module.network.azurerm_virtual_network.vnet will be created
+ resource "azurerm_virtual_network" "vnet" {
+ address_space = [
+ "10.0.0.0/16",
]
+ dns_servers = []
+ id = (known after apply)
+ location = "koreacentral"
+ name = "acctvnet"
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "tag1" = ""
+ "tag2" = ""
}
+ subnet {
+ address_prefix = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ security_group = (known after apply)
}
}
Plan: 13 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
apply로 가상 머신 만들기
terraform apply를 실행하여 Azure에서 VM을 프로비전 한다.
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ terraform apply
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# module.mycompute.azurerm_availability_set.vm will be created
+ resource "azurerm_availability_set" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ managed = true
+ name = "myvm-avset"
+ platform_fault_domain_count = 2
+ platform_update_domain_count = 2
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_network_interface.vm[0] will be created
+ resource "azurerm_network_interface" "vm" {
+ applied_dns_servers = (known after apply)
+ dns_servers = (known after apply)
+ enable_accelerated_networking = false
+ enable_ip_forwarding = false
+ id = (known after apply)
+ internal_dns_name_label = (known after apply)
+ internal_fqdn = (known after apply)
+ location = "koreacentral"
+ mac_address = (known after apply)
+ name = "nic-myvm-0"
+ network_security_group_id = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_addresses = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ virtual_machine_id = (known after apply)
+ ip_configuration {
+ application_gateway_backend_address_pools_ids = (known after apply)
+ application_security_group_ids = (known after apply)
+ load_balancer_backend_address_pools_ids = (known after apply)
+ load_balancer_inbound_nat_rules_ids = (known after apply)
+ name = "ipconfig0"
+ primary = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_address_allocation = "dynamic"
+ private_ip_address_version = "IPv4"
+ public_ip_address_id = (known after apply)
+ subnet_id = (known after apply)
}
}
# module.mycompute.azurerm_network_interface.vm[1] will be created
+ resource "azurerm_network_interface" "vm" {
+ applied_dns_servers = (known after apply)
+ dns_servers = (known after apply)
+ enable_accelerated_networking = false
+ enable_ip_forwarding = false
+ id = (known after apply)
+ internal_dns_name_label = (known after apply)
+ internal_fqdn = (known after apply)
+ location = "koreacentral"
+ mac_address = (known after apply)
+ name = "nic-myvm-1"
+ network_security_group_id = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_addresses = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ virtual_machine_id = (known after apply)
+ ip_configuration {
+ application_gateway_backend_address_pools_ids = (known after apply)
+ application_security_group_ids = (known after apply)
+ load_balancer_backend_address_pools_ids = (known after apply)
+ load_balancer_inbound_nat_rules_ids = (known after apply)
+ name = "ipconfig1"
+ primary = (known after apply)
+ private_ip_address = (known after apply)
+ private_ip_address_allocation = "dynamic"
+ private_ip_address_version = "IPv4"
+ subnet_id = (known after apply)
}
}
# module.mycompute.azurerm_network_security_group.vm will be created
+ resource "azurerm_network_security_group" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "myvm-3389-nsg"
+ resource_group_name = "zeroResourceGroup"
+ security_rule = (known after apply)
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_network_security_rule.vm will be created
+ resource "azurerm_network_security_rule" "vm" {
+ access = "Allow"
+ description = "Allow remote protocol in from all locations"
+ destination_address_prefix = "*"
+ destination_port_range = "3389"
+ direction = "Inbound"
+ id = (known after apply)
+ name = "allow_remote_3389_in_all"
+ network_security_group_name = "myvm-3389-nsg"
+ priority = 100
+ protocol = "Tcp"
+ resource_group_name = "zeroResourceGroup"
+ source_address_prefix = "*"
+ source_port_range = "*"
}
# module.mycompute.azurerm_public_ip.vm[0] will be created
+ resource "azurerm_public_ip" "vm" {
+ allocation_method = "Dynamic"
+ domain_name_label = "zero-terraform-demo"
+ fqdn = (known after apply)
+ id = (known after apply)
+ idle_timeout_in_minutes = 4
+ ip_address = (known after apply)
+ ip_version = "IPv4"
+ location = "koreacentral"
+ name = "myvm-0-publicIP"
+ public_ip_address_allocation = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ sku = "Basic"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_resource_group.vm will be created
+ resource "azurerm_resource_group" "vm" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
}
# module.mycompute.azurerm_virtual_machine.vm-windows[0] will be created
+ resource "azurerm_virtual_machine" "vm-windows" {
+ availability_set_id = (known after apply)
+ delete_data_disks_on_termination = false
+ delete_os_disk_on_termination = false
+ id = (known after apply)
+ license_type = (known after apply)
+ location = "koreacentral"
+ name = "myvm0"
+ network_interface_ids = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ vm_size = "Standard_DS1_V2"
+ boot_diagnostics {
+ enabled = false
}
+ identity {
+ identity_ids = (known after apply)
+ principal_id = (known after apply)
+ type = (known after apply)
}
+ os_profile {
+ admin_password = (sensitive value)
+ admin_username = "azureuser"
+ computer_name = "myvm0"
+ custom_data = (known after apply)
}
+ os_profile_windows_config {
+ enable_automatic_upgrades = false
+ provision_vm_agent = true
}
+ storage_data_disk {
+ caching = (known after apply)
+ create_option = (known after apply)
+ disk_size_gb = (known after apply)
+ lun = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = (known after apply)
+ name = (known after apply)
+ vhd_uri = (known after apply)
+ write_accelerator_enabled = (known after apply)
}
+ storage_image_reference {
+ offer = "WindowsServer"
+ publisher = "MicrosoftWindowsServer"
+ sku = "2016-Datacenter"
+ version = "latest"
}
+ storage_os_disk {
+ caching = "ReadWrite"
+ create_option = "FromImage"
+ disk_size_gb = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = "Premium_LRS"
+ name = "osdisk-myvm-0"
+ os_type = (known after apply)
+ write_accelerator_enabled = false
}
}
# module.mycompute.azurerm_virtual_machine.vm-windows[1] will be created
+ resource "azurerm_virtual_machine" "vm-windows" {
+ availability_set_id = (known after apply)
+ delete_data_disks_on_termination = false
+ delete_os_disk_on_termination = false
+ id = (known after apply)
+ license_type = (known after apply)
+ location = "koreacentral"
+ name = "myvm1"
+ network_interface_ids = (known after apply)
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "source" = "terraform"
}
+ vm_size = "Standard_DS1_V2"
+ boot_diagnostics {
+ enabled = false
}
+ identity {
+ identity_ids = (known after apply)
+ principal_id = (known after apply)
+ type = (known after apply)
}
+ os_profile {
+ admin_password = (sensitive value)
+ admin_username = "azureuser"
+ computer_name = "myvm1"
+ custom_data = (known after apply)
}
+ os_profile_windows_config {
+ enable_automatic_upgrades = false
+ provision_vm_agent = true
}
+ storage_data_disk {
+ caching = (known after apply)
+ create_option = (known after apply)
+ disk_size_gb = (known after apply)
+ lun = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = (known after apply)
+ name = (known after apply)
+ vhd_uri = (known after apply)
+ write_accelerator_enabled = (known after apply)
}
+ storage_image_reference {
+ offer = "WindowsServer"
+ publisher = "MicrosoftWindowsServer"
+ sku = "2016-Datacenter"
+ version = "latest"
}
+ storage_os_disk {
+ caching = "ReadWrite"
+ create_option = "FromImage"
+ disk_size_gb = (known after apply)
+ managed_disk_id = (known after apply)
+ managed_disk_type = "Premium_LRS"
+ name = "osdisk-myvm-1"
+ os_type = (known after apply)
+ write_accelerator_enabled = false
}
}
# module.mycompute.random_id.vm-sa will be created
+ resource "random_id" "vm-sa" {
+ b64 = (known after apply)
+ b64_std = (known after apply)
+ b64_url = (known after apply)
+ byte_length = 6
+ dec = (known after apply)
+ hex = (known after apply)
+ id = (known after apply)
+ keepers = {
+ "vm_hostname" = "myvm"
}
}
# module.network.azurerm_resource_group.network will be created
+ resource "azurerm_resource_group" "network" {
+ id = (known after apply)
+ location = "koreacentral"
+ name = "zeroResourceGroup"
+ tags = (known after apply)
}
# module.network.azurerm_subnet.subnet[0] will be created
+ resource "azurerm_subnet" "subnet" {
+ address_prefix = "10.0.1.0/24"
+ enforce_private_link_endpoint_network_policies = false
+ enforce_private_link_service_network_policies = false
+ id = (known after apply)
+ ip_configurations = (known after apply)
+ name = "subnet1"
+ resource_group_name = "zeroResourceGroup"
+ virtual_network_name = "acctvnet"
}
# module.network.azurerm_virtual_network.vnet will be created
+ resource "azurerm_virtual_network" "vnet" {
+ address_space = [
+ "10.0.0.0/16",
]
+ dns_servers = []
+ id = (known after apply)
+ location = "koreacentral"
+ name = "acctvnet"
+ resource_group_name = "zeroResourceGroup"
+ tags = {
+ "tag1" = ""
+ "tag2" = ""
}
+ subnet {
+ address_prefix = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ security_group = (known after apply)
}
}
Plan: 13 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
module.mycompute.random_id.vm-sa: Creating...
module.mycompute.random_id.vm-sa: Creation complete after 0s [id=17z5c8uB]
module.network.azurerm_resource_group.network: Creating...
module.network.azurerm_resource_group.network: Creation complete after 1s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.network.azurerm_virtual_network.vnet: Creating...
module.mycompute.azurerm_resource_group.vm: Creating...
module.mycompute.azurerm_resource_group.vm: Creation complete after 0s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.mycompute.azurerm_network_security_group.vm: Creating...
module.mycompute.azurerm_availability_set.vm: Creating...
module.mycompute.azurerm_public_ip.vm[0]: Creating...
module.mycompute.azurerm_availability_set.vm: Creation complete after 1s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/availabilitySets/myvm-avset]
module.mycompute.azurerm_public_ip.vm[0]: Creation complete after 6s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/publicIPAddresses/myvm-0-publicIP]
module.network.azurerm_virtual_network.vnet: Still creating... [10s elapsed]
module.network.azurerm_virtual_network.vnet: Creation complete after 10s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet]
module.network.azurerm_subnet.subnet[0]: Creating...
module.mycompute.azurerm_network_security_group.vm: Still creating... [10s elapsed]
module.mycompute.azurerm_network_security_group.vm: Creation complete after 11s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg]
module.mycompute.azurerm_network_security_rule.vm: Creating...
module.network.azurerm_subnet.subnet[0]: Still creating... [10s elapsed]
module.network.azurerm_subnet.subnet[0]: Creation complete after 10s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1]
module.mycompute.azurerm_network_interface.vm[1]: Creating...
module.mycompute.azurerm_network_interface.vm[0]: Creating...
module.mycompute.azurerm_network_security_rule.vm: Still creating... [10s elapsed]
module.mycompute.azurerm_network_security_rule.vm: Creation complete after 10s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg/securityRules/allow_remote_3389_in_all]
module.mycompute.azurerm_network_interface.vm[0]: Creation complete after 3s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0]
module.mycompute.azurerm_network_interface.vm[1]: Creation complete after 3s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Creating...
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Creating...
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [10s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [10s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [20s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [20s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [30s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [30s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [40s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [40s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [50s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [50s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m20s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m20s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m30s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m30s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m40s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m40s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [1m50s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [1m50s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [2m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [2m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still creating... [2m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still creating... [2m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Creation complete after 2m11s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm1]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Creation complete after 2m12s [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm0]
Apply complete! Resources: 13 added, 0 changed, 0 destroyed.
Outputs:
vm_private_ips = [
"10.0.1.4",
"10.0.1.5",
]
vm_public_ip = [
"",
]
vm_public_name = [
"zero-terraform-demo.koreacentral.cloudapp.azure.com",
]
Azure Portal에서 결과를 확인한다.
결과를 확인한 후 terraform destroy를 통해 배포한 리소스를 제거한다.
zerobig@ZEROBIG-NT800:/mnt/d/Azure_DevOps_Study/20200202 - terraform-demo$ terraform destroy
module.mycompute.random_id.vm-sa: Refreshing state... [id=17z5c8uB]
module.network.azurerm_resource_group.network: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.network.azurerm_virtual_network.vnet: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet]
module.network.azurerm_subnet.subnet[0]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1]
module.mycompute.azurerm_resource_group.vm: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.mycompute.azurerm_network_security_group.vm: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg]
module.mycompute.azurerm_public_ip.vm[0]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/publicIPAddresses/myvm-0-publicIP]
module.mycompute.azurerm_availability_set.vm: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/availabilitySets/myvm-avset]
module.mycompute.azurerm_network_security_rule.vm: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg/securityRules/allow_remote_3389_in_all]
module.mycompute.azurerm_network_interface.vm[0]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0]
module.mycompute.azurerm_network_interface.vm[1]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm0]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Refreshing state... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm1]
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
# module.mycompute.azurerm_availability_set.vm will be destroyed
- resource "azurerm_availability_set" "vm" {
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/availabilitySets/myvm-avset" -> null
- location = "koreacentral" -> null
- managed = true -> null
- name = "myvm-avset" -> null
- platform_fault_domain_count = 2 -> null
- platform_update_domain_count = 2 -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
}
# module.mycompute.azurerm_network_interface.vm[0] will be destroyed
- resource "azurerm_network_interface" "vm" {
- applied_dns_servers = [] -> null
- dns_servers = [] -> null
- enable_accelerated_networking = false -> null
- enable_ip_forwarding = false -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0" -> null
- location = "koreacentral" -> null
- mac_address = "00-0D-3A-D7-25-F8" -> null
- name = "nic-myvm-0" -> null
- network_security_group_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg" -> null
- private_ip_address = "10.0.1.4" -> null
- private_ip_addresses = [
- "10.0.1.4",
] -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
- virtual_machine_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm0" -> null
- ip_configuration {
- application_gateway_backend_address_pools_ids = [] -> null
- application_security_group_ids = [] -> null
- load_balancer_backend_address_pools_ids = [] -> null
- load_balancer_inbound_nat_rules_ids = [] -> null
- name = "ipconfig0" -> null
- primary = true -> null
- private_ip_address = "10.0.1.4" -> null
- private_ip_address_allocation = "dynamic" -> null
- private_ip_address_version = "IPv4" -> null
- public_ip_address_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/publicIPAddresses/myvm-0-publicIP" -> null
- subnet_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1" -> null
}
}
# module.mycompute.azurerm_network_interface.vm[1] will be destroyed
- resource "azurerm_network_interface" "vm" {
- applied_dns_servers = [] -> null
- dns_servers = [] -> null
- enable_accelerated_networking = false -> null
- enable_ip_forwarding = false -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1" -> null
- location = "koreacentral" -> null
- mac_address = "00-0D-3A-D7-2A-61" -> null
- name = "nic-myvm-1" -> null
- network_security_group_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg" -> null
- private_ip_address = "10.0.1.5" -> null
- private_ip_addresses = [
- "10.0.1.5",
] -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
- virtual_machine_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm1" -> null
- ip_configuration {
- application_gateway_backend_address_pools_ids = [] -> null
- application_security_group_ids = [] -> null
- load_balancer_backend_address_pools_ids = [] -> null
- load_balancer_inbound_nat_rules_ids = [] -> null
- name = "ipconfig1" -> null
- primary = true -> null
- private_ip_address = "10.0.1.5" -> null
- private_ip_address_allocation = "dynamic" -> null
- private_ip_address_version = "IPv4" -> null
- subnet_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1" -> null
}
}
# module.mycompute.azurerm_network_security_group.vm will be destroyed
- resource "azurerm_network_security_group" "vm" {
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg" -> null
- location = "koreacentral" -> null
- name = "myvm-3389-nsg" -> null
- resource_group_name = "zeroResourceGroup" -> null
- security_rule = [
- {
- access = "Allow"
- description = "Allow remote protocol in
from all locations"
- destination_address_prefix = "*"
- destination_address_prefixes = []
- destination_application_security_group_ids = []
- destination_port_range = "3389"
- destination_port_ranges = []
- direction = "Inbound"
- name = "allow_remote_3389_in_all" - priority = 100
- protocol = "Tcp"
- source_address_prefix = "*"
- source_address_prefixes = []
- source_application_security_group_ids = []
- source_port_range = "*"
- source_port_ranges = []
},
] -> null
- tags = {
- "source" = "terraform"
} -> null
}
# module.mycompute.azurerm_network_security_rule.vm will be destroyed
- resource "azurerm_network_security_rule" "vm" {
- access = "Allow" -> null
- description = "Allow remote protocol in from all locations" -> null
- destination_address_prefix = "*" -> null
- destination_address_prefixes = [] -> null
- destination_application_security_group_ids = [] -> null
- destination_port_range = "3389" -> null
- destination_port_ranges = [] -> null
- direction = "Inbound" -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg/securityRules/allow_remote_3389_in_all" -> null
- name = "allow_remote_3389_in_all" -> null - network_security_group_name = "myvm-3389-nsg" -> null
- priority = 100 -> null
- protocol = "Tcp" -> null
- resource_group_name = "zeroResourceGroup" -> null
- source_address_prefix = "*" -> null
- source_address_prefixes = [] -> null
- source_application_security_group_ids = [] -> null
- source_port_range = "*" -> null
- source_port_ranges = [] -> null
}
# module.mycompute.azurerm_public_ip.vm[0] will be destroyed
- resource "azurerm_public_ip" "vm" {
- allocation_method = "Dynamic" -> null
- domain_name_label = "zero-terraform-demo" -> null
- fqdn = "zero-terraform-demo.koreacentral.cloudapp.azure.com" -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/publicIPAddresses/myvm-0-publicIP" -> null
- idle_timeout_in_minutes = 4 -> null
- ip_address = "20.41.78.197" -> null
- ip_version = "IPv4" -> null
- location = "koreacentral" -> null
- name = "myvm-0-publicIP" -> null
- public_ip_address_allocation = "Dynamic" -> null
- resource_group_name = "zeroResourceGroup" -> null
- sku = "Basic" -> null
- tags = {
- "source" = "terraform"
} -> null
- zones = [] -> null
}
# module.mycompute.azurerm_resource_group.vm will be destroyed
- resource "azurerm_resource_group" "vm" {
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup" -> null
- location = "koreacentral" -> null
- name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
}
# module.mycompute.azurerm_virtual_machine.vm-windows[0] will be destroyed
- resource "azurerm_virtual_machine" "vm-windows" {
- availability_set_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourcegroups/zeroresourcegroup/providers/microsoft.compute/availabilitysets/myvm-avset" -> null
- delete_data_disks_on_termination = false -> null
- delete_os_disk_on_termination = false -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm0" -> null
- location = "koreacentral" -> null
- name = "myvm0" -> null
- network_interface_ids = [
- "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0",
] -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
- vm_size = "Standard_DS1_V2" -> null
- zones = [] -> null
- boot_diagnostics {
- enabled = false -> null
}
- os_profile {
- admin_username = "azureuser" -> null
- computer_name = "myvm0" -> null
}
- os_profile_windows_config {
- enable_automatic_upgrades = false -> null
- provision_vm_agent = true -> null
}
- storage_image_reference {
- offer = "WindowsServer" -> null
- publisher = "MicrosoftWindowsServer" -> null
- sku = "2016-Datacenter" -> null
- version = "latest" -> null
}
- storage_os_disk {
- caching = "ReadWrite" -> null
- create_option = "FromImage" -> null
- disk_size_gb = 127 -> null
- managed_disk_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/ZERORESOURCEGROUP/providers/Microsoft.Compute/disks/osdisk-myvm-0" -> null
- managed_disk_type = "Premium_LRS" -> null
- name = "osdisk-myvm-0" -> null
- os_type = "Windows" -> null
- write_accelerator_enabled = false -> null
}
}
# module.mycompute.azurerm_virtual_machine.vm-windows[1] will be destroyed
- resource "azurerm_virtual_machine" "vm-windows" {
- availability_set_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourcegroups/zeroresourcegroup/providers/microsoft.compute/availabilitysets/myvm-avset" -> null
- delete_data_disks_on_termination = false -> null
- delete_os_disk_on_termination = false -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm1" -> null
- location = "koreacentral" -> null
- name = "myvm1" -> null
- network_interface_ids = [
- "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1",
] -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
- vm_size = "Standard_DS1_V2" -> null
- zones = [] -> null
- boot_diagnostics {
- enabled = false -> null
}
- os_profile {
- admin_username = "azureuser" -> null
- computer_name = "myvm1" -> null
}
- os_profile_windows_config {
- enable_automatic_upgrades = false -> null
- provision_vm_agent = true -> null
}
- storage_image_reference {
- offer = "WindowsServer" -> null
- publisher = "MicrosoftWindowsServer" -> null
- sku = "2016-Datacenter" -> null
- version = "latest" -> null
}
- storage_os_disk {
- caching = "ReadWrite" -> null
- create_option = "FromImage" -> null
- disk_size_gb = 127 -> null
- managed_disk_id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/ZERORESOURCEGROUP/providers/Microsoft.Compute/disks/osdisk-myvm-1" -> null
- managed_disk_type = "Premium_LRS" -> null
- name = "osdisk-myvm-1" -> null
- os_type = "Windows" -> null
- write_accelerator_enabled = false -> null
}
}
# module.mycompute.random_id.vm-sa will be destroyed
- resource "random_id" "vm-sa" {
- b64 = "17z5c8uB" -> null
- b64_std = "17z5c8uB" -> null
- b64_url = "17z5c8uB" -> null
- byte_length = 6 -> null
- dec = "237206638939009" -> null
- hex = "d7bcf973cb81" -> null
- id = "17z5c8uB" -> null
- keepers = {
- "vm_hostname" = "myvm"
} -> null
}
# module.network.azurerm_resource_group.network will be destroyed
- resource "azurerm_resource_group" "network" {
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup" -> null
- location = "koreacentral" -> null
- name = "zeroResourceGroup" -> null
- tags = {
- "source" = "terraform"
} -> null
}
# module.network.azurerm_subnet.subnet[0] will be destroyed
- resource "azurerm_subnet" "subnet" {
- address_prefix = "10.0.1.0/24" -> null
- enforce_private_link_endpoint_network_policies = false -> null
- enforce_private_link_service_network_policies = false -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1" -> null
- ip_configurations = [
- "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0/ipConfigurations/ipconfig0",
- "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1/ipConfigurations/ipconfig1",
] -> null
- name = "subnet1" -> null
- resource_group_name = "zeroResourceGroup" -> null
- service_endpoints = [] -> null
- virtual_network_name = "acctvnet" -> null
}
# module.network.azurerm_virtual_network.vnet will be destroyed
- resource "azurerm_virtual_network" "vnet" {
- address_space = [
- "10.0.0.0/16",
] -> null
- dns_servers = [] -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet" -> null
- location = "koreacentral" -> null
- name = "acctvnet" -> null
- resource_group_name = "zeroResourceGroup" -> null
- tags = {
- "tag1" = ""
- "tag2" = ""
} -> null
- subnet {
- address_prefix = "10.0.1.0/24" -> null
- id = "/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1" -> null
- name = "subnet1" -> null
}
}
Plan: 0 to add, 0 to change, 13 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
module.mycompute.random_id.vm-sa: Destroying... [id=17z5c8uB]
module.mycompute.random_id.vm-sa: Destruction complete after 0s
module.mycompute.azurerm_network_security_rule.vm: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg/securityRules/allow_remote_3389_in_all]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm0]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/virtualMachines/myvm1]
module.mycompute.azurerm_network_security_rule.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...securityRules/allow_remote_3389_in_all, 10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 10s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 10s elapsed]module.mycompute.azurerm_network_security_rule.vm: Destruction complete after 10s
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 20s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 20s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 30s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 30s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 40s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 40s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 50s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 50s elapsed]module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 1m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 1m0s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 1m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 1m10s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 1m20s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 1m20s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm0, 1m30s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...icrosoft.Compute/virtualMachines/myvm1, 1m30s elapsed]
module.mycompute.azurerm_virtual_machine.vm-windows[1]: Destruction complete after 1m30s
module.mycompute.azurerm_virtual_machine.vm-windows[0]: Destruction complete after 1m30s
module.mycompute.azurerm_availability_set.vm: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Compute/availabilitySets/myvm-avset]
module.mycompute.azurerm_network_interface.vm[1]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-1]
module.mycompute.azurerm_network_interface.vm[0]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkInterfaces/nic-myvm-0]
module.mycompute.azurerm_availability_set.vm: Destruction complete after 1s
module.mycompute.azurerm_network_interface.vm[1]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...t.Network/networkInterfaces/nic-myvm-1, 10s elapsed]
module.mycompute.azurerm_network_interface.vm[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...t.Network/networkInterfaces/nic-myvm-0, 10s elapsed]
module.mycompute.azurerm_network_interface.vm[1]: Destruction complete after 11s
module.mycompute.azurerm_network_interface.vm[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...t.Network/networkInterfaces/nic-myvm-0, 20s elapsed]
module.mycompute.azurerm_network_interface.vm[0]: Destruction complete after 21s
module.mycompute.azurerm_network_security_group.vm: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myvm-3389-nsg]
module.mycompute.azurerm_public_ip.vm[0]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/publicIPAddresses/myvm-0-publicIP]
module.network.azurerm_subnet.subnet[0]: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet/subnets/subnet1]
module.mycompute.azurerm_network_security_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...rk/networkSecurityGroups/myvm-3389-nsg, 10s elapsed]
module.mycompute.azurerm_public_ip.vm[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...work/publicIPAddresses/myvm-0-publicIP, 10s elapsed]
module.network.azurerm_subnet.subnet[0]: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...rtualNetworks/acctvnet/subnets/subnet1, 10s elapsed]
module.mycompute.azurerm_public_ip.vm[0]: Destruction complete after 10s
module.network.azurerm_subnet.subnet[0]: Destruction complete after 10s
module.mycompute.azurerm_network_security_group.vm: Destruction complete after 10s
module.mycompute.azurerm_resource_group.vm: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.network.azurerm_virtual_network.vnet: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup/providers/Microsoft.Network/virtualNetworks/acctvnet]
module.network.azurerm_virtual_network.vnet: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...osoft.Network/virtualNetworks/acctvnet, 10s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 10s elapsed]
module.network.azurerm_virtual_network.vnet: Destruction complete after 11s
module.network.azurerm_resource_group.network: Destroying... [id=/subscriptions/f8764f39-xxxx-xxxx-xxxx-77b286ed971b/resourceGroups/zeroResourceGroup]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 20s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 10s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 30s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 20s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 40s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 30s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 50s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 40s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m0s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 50s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m10s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m0s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m20s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m10s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m31s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m20s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m41s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m30s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m51s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m40s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m1s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 1m50s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m11s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m0s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m21s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m10s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m31s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m20s elapsed]
module.mycompute.azurerm_resource_group.vm: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m41s elapsed]
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m30s elapsed]
module.mycompute.azurerm_resource_group.vm: Destruction complete after 2m46s
module.network.azurerm_resource_group.network: Still destroying... [id=/subscriptions/f8764f39-01ee-4631-9941-...d971b/resourceGroups/zeroResourceGroup, 2m40s elapsed]
module.network.azurerm_resource_group.network: Destruction complete after 2m45s
Destroy complete! Resources: 13 destroyed.
'Azure와 함께 하는 DevOps' 카테고리의 다른 글
19 Terraform을 사용하여 Azure 가상 머신 확장 집합 만들기 (0) | 2020.02.17 |
---|---|
18 Terraform 및 HCL를 사용하여 Azure VM 클러스터 만들기 (0) | 2020.02.10 |
16 Terraform을 사용하여 Azure Kubernetes Service에 Application Gateway Ingress Controller 만들기 (0) | 2020.01.28 |
15 Terraform을 사용하여 Azure Kubernetes Service로 Kubernetes 클러스터 만들기 (0) | 2020.01.20 |
14 Terraform을 사용하여 Azure 배포 슬롯으로 인프라 프로비전 (0) | 2020.01.13 |