【问题标题】:Terraform Azure Provision VM to existing subnet/vnet/resourcegroupTerraform Azure Provision VM 到现有的子网/vnet/resourcegroup
【发布时间】:2019-03-01 10:18:27
【问题描述】:

我有一个现有的 Azure 环境,其中已经创建了资源组、网络、vnet 和子网。我想使用 terraform 将 VM 自动部署到这个现有的 Azure 环境中,但所有示例和文档都面向从头开始构建整个网络/基础设施。

谁能提供有关如何使用 terraform 将 VM 部署到现有 Azure 环境的文档或示例?

【问题讨论】:

    标签: azure terraform


    【解决方案1】:

    您可以使用Data Source: azurerm_subnetazurerm_resource_group 访问现有子网和资源组的属性。

    使用现有子网创建新 Linux VM 的示例。引用网络接口subnet_id = "${data.azurerm_subnet.test.id}"中子网数据源的输出“subnet_id”

    # refer to a resource group
    data "azurerm_resource_group" "test" {
      name = "nancyResourceGroup"
    }
    
    #refer to a subnet
    data "azurerm_subnet" "test" {
      name                 = "mySubnet"
      virtual_network_name = "myVnet"
      resource_group_name  = "nancyResourceGroup"
    }
    
    # Create public IPs
    resource "azurerm_public_ip" "test" {
        name                         = "myPublicIP-test"
        location                     = "${data.azurerm_resource_group.test.location}"
        resource_group_name          = "${data.azurerm_resource_group.test.name}"
        public_ip_address_allocation = "dynamic"
    
    }
    
    # create a network interface
    resource "azurerm_network_interface" "test" {
      name                = "nic-test"
      location            = "${data.azurerm_resource_group.test.location}"
      resource_group_name = "${data.azurerm_resource_group.test.name}"
    
      ip_configuration {
        name                          = "testconfiguration1"
        subnet_id                     = "${data.azurerm_subnet.test.id}"
        private_ip_address_allocation = "dynamic"
        public_ip_address_id          = "${azurerm_public_ip.test.id}"
      }
    }
    
    # Create virtual machine
    resource "azurerm_virtual_machine" "test" {
        name                  = "myVM-test"
        location              = "${azurerm_network_interface.test.location}"
        resource_group_name   = "${data.azurerm_resource_group.test.name}"
        network_interface_ids = ["${azurerm_network_interface.test.id}"]
        vm_size               = "Standard_DS1_v2"
    
    # Uncomment this line to delete the OS disk automatically when deleting the VM
    delete_os_disk_on_termination = true
    
    # Uncomment this line to delete the data disks automatically when deleting the VM
    delete_data_disks_on_termination = true
    
      storage_image_reference {
        publisher = "Canonical"
        offer     = "UbuntuServer"
        sku       = "16.04-LTS"
        version   = "latest"
      }
       storage_os_disk {
        name              = "myosdisk1"
        caching           = "ReadWrite"
        create_option     = "FromImage"
        managed_disk_type = "Standard_LRS"
      }
       os_profile {
        computer_name  = "hostname"
        admin_username = "testadmin"
        admin_password = "Password1234!"
      }
       os_profile_linux_config {
        disable_password_authentication = false
      }
    
    }
    

    更多参考可以参考这个case

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多