在Azure中,我正在尝试使用terraform创建Windows VM。
我之前通过Powershell通过Template.json文件完成了此操作。现在我要接触terraform,这是我的新手。
因此,我搜索了一些在Azure中创建VM的示例脚本,并发现了this。
在此链接中,有一个示例terraform脚本可以旋转Linux VM。但是我需要从Image旋转Windows VM。我应该在哪里提供图片详细信息。
我的完整要求是:
1.从映像(具有资源ID)创建Windows VM
2.我已经创建了资源组,虚拟网络,子网。我只需要传递这些值并创建它们即可。
3.我们已经从门户itslef定义了子网地址前缀Vnet地址空间。所以我必须再次在脚本中给出还是可以跳过它。
4.业务需求是任何VM都不应具有公共IP和DNS名称,因此,如果我删除“#Create public IPs”部分,是否将不创建公共IP?
用于创建Linux机器的脚本为here,我将其作为参考。
如果我提出的问题完全la脚,请原谅我,但我需要知道这些细节。
谁能帮我/指导我正确的方法!
答案 0 :(得分:2)
下面是一个如何使用数据来以Terraform形式使用现有资源的示例,还提供了一个代码块来创建Windows VM。您将需要获取现有的VNET并创建一个NIC
使用data指令获取VNET azurerm_virtual_network
,您可以在下面看到资源组的语法。您需要将资源组以及可能的位置添加到此块中。
使用VNET ID创建azurerm_network_interface
资源
将网络接口ID添加到VM(network_interface_ids = [])
Example TF Code to Create and load balance VMs
variable "subscription_id" {}
variable "client_id" {}
variable "client_secret" {}
variable "tenant_id" {}
provider "azurerm" {
tenant_id = "${var.tenant_id}"
subscription_id = "${var.subscription_id}"
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
}
data "azurerm_resource_group" "resource_group" {
name = "learning-tf-web-rg"
}
resource "azurerm_virtual_machine" "web_server" {
name = "server"
location = "westus2"
resource_group_name = "${data.azurerm_resource_group.resource_group.name}"
network_interface_ids = []
vm_size = "Standard_B2s"
storage_image_reference {
publisher = "MicrosoftWindowsServer"
offer = "WindowsServer"
sku = "2016-Datacenter-Server-Core-smalldisk"
version = "latest"
}
storage_os_disk {
name = "server-os"
caching = "ReadWrite"
create_option = "FromImage"
managed_disk_type = "Standard_LRS"
}
os_profile {
computer_name = "server"
admin_username = "server"
admin_password = "Passw0rd1234"
}
os_profile_windows_config {
}
}
答案 1 :(得分:1)
从Terraform的角度来看,Windows VM实际上与Linux VM非常相似。我认为#1的区别是Windows VM需要os_profile_windows_config
属性,而Linux VM需要os_profile_linux_config
。
在Microsoft网站上找到的TF代码是一个好的开始。此外,您可以查看Terraform Registry。例如,这是一个module for a Linux VM。
我强烈建议您仔细阅读VM resource中的所有选项。我知道很多,但是您应该了解自己的选择。
最后,没有什么可以替代编写一些代码并对其进行测试。如果您做错了什么,Terraform和/或Azure API会告诉您,如果不清楚,则网络搜索将弹出正确的答案或指针。
祝你好运!