由于 https://github.com/hashicorp/terraform-provider-azurerm/issues/6117,我必须使用 azurerm_virtual_machine 来创建我想要的机器。
不幸的是,使用的图像需要可信启动,我找不到任何配置选项。
这可能吗,还是我被迫使用 az_api 来代替?
这里是使用 azurerm 模块创建具有
Trusted Launch配置的 虚拟机 的
Terraform
脚本。对于Azapi,请参阅MS Doc
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "venkat" {
name = "terraform1-resources"
location = "East US"
}
resource "azurerm_virtual_network" "venkat" {
name = "example-network"
resource_group_name = azurerm_resource_group.venkat.name
location = azurerm_resource_group.venkat.location
address_space = ["10.0.0.0/16"]
depends_on = [ azurerm_resource_group.venkat ]
}
resource "azurerm_subnet" "venkat" {
name = "example-subnet"
resource_group_name = azurerm_resource_group.venkat.name
virtual_network_name = azurerm_virtual_network.venkat.name
address_prefixes = ["10.0.1.0/24"]
depends_on = [ azurerm_virtual_network.venkat ]
}
resource "azurerm_network_interface" "venkat" {
name = "example-nic1"
resource_group_name = azurerm_resource_group.venkat.name
location = azurerm_resource_group.venkat.location
ip_configuration {
name = "internal"
subnet_id = azurerm_subnet.venkat.id
private_ip_address_allocation = "Dynamic"
}
depends_on = [ azurerm_subnet.venkat ]
}
resource "azurerm_virtual_machine" "venkat" {
name = "venkat-machine-testvm2"
location = azurerm_resource_group.venkat.location
resource_group_name = azurerm_resource_group.venkat.name
network_interface_ids = [azurerm_network_interface.venkat.id]
vm_size = "Standard_DS1_v2"
storage_os_disk {
name = "terraformvenkat-vm-osdisk"
caching = "ReadWrite"
create_option = "FromImage"
managed_disk_type = "Standard_LRS"
}
storage_image_reference {
publisher = "canonical"
offer = "0001-com-ubuntu-server-focal"
sku = "20_04-lts-gen2"
version = "latest"
}
os_profile {
computer_name = "hostname"
admin_username = "adminuser"
admin_password = "P@ssw0rd1234!"
}
os_profile_linux_config {
disable_password_authentication = false
}
}
resource "null_resource" "vm-deallocate1" {
provisioner "local-exec" {
command = <<EOT
az vm deallocate --resource-group ${azurerm_resource_group.venkat.name} --name ${azurerm_virtual_machine.venkat.name}
EOT
interpreter = ["bash", "-c"]
}
depends_on = [azurerm_virtual_machine.venkat]
}
resource "null_resource" "vm-1" {
provisioner "local-exec" {
command = <<EOT
az vm update --resource-group ${azurerm_resource_group.venkat.name} --name ${azurerm_virtual_machine.venkat.name} --security-type TrustedLaunch
sleep 60
az vm start --resource-group ${azurerm_resource_group.venkat.name} --name ${azurerm_virtual_machine.venkat.name}
EOT
interpreter = ["bash", "-c"]
}
depends_on = [null_resource.vm-deallocate1]
}
输出: