如何在terraform azure local exec provisioner中访问私有ip?
我有下面的terrafrom代码来在azure中创建VM,我想通过本地exec provisioner执行一个命令如何在terraform azure local exec provisioner中访问私有ip?,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我有下面的terrafrom代码来在azure中创建VM,我想通过本地exec provisioner执行一个命令 resource "azurerm_resource_group" "resource_gp" { name = var.azurerm_resource_group location = var.azurerm_location } resource "azurerm_virtual_machine" "vm" { count
resource "azurerm_resource_group" "resource_gp" {
name = var.azurerm_resource_group
location = var.azurerm_location
}
resource "azurerm_virtual_machine" "vm" {
count = var.azure_vm_count
name = var.azurerm_vm_name
location = azurerm_resource_group.resource_gp.location
resource_group_name = azurerm_resource_group.resource_gp.name
network_interface_ids = [azurerm_network_interface.nic.id]
vm_size = var.azurerm_vm_size
storage_os_disk {
name = "${var.azurerm_vm_name}-osdisk"
caching = "ReadWrite"
create_option = "FromImage"
managed_disk_type = var.azurerm_vm_managed_disk_type
disk_size_gb = var.azurerm_vm_disk_size
}
storage_data_disk {
name = "${var.azurerm_vm_name}-datadisk"
create_option = "Empty"
caching = "ReadWrite"
lun = 1
disk_size_gb = var.azurerm_vm_disk_size
}
storage_image_reference {
id = var.azurerm_image_id
}
os_profile {
computer_name = var.azurerm_vm_name
admin_username = var.azurerm_vm_username
admin_password = var.azurerm_vm_password
}
os_profile_linux_config {
disable_password_authentication = false
}
provisioner "local-exec" {
command = "echo ${self.private_ip} >> /tmp/privateip"
}
}
resource "azurerm_network_interface" "nic" {
name = "${var.azurerm_vm_name}-nic"
location = azurerm_resource_group.resource_gp.location
resource_group_name = azurerm_resource_group.resource_gp.name
ip_configuration {
name = "${var.azurerm_vm_name}-nic-config"
subnet_id = var.azurerm_vnet_subnet_id
private_ip_address_allocation = "dynamic"
}
}
我在执行代码时遇到以下错误
Error: Unsupported attribute
on main.tf line 69, in resource "azurerm_network_interface" "nic":
69: command = "echo ${self.private_ip} >> /tmp/privateip"
This object has no argument, nested block, or exported attribute named
"private_ip".
我尝试的命令是
terraform init
terraform plan -out terraform.state
terraform apply terraform.state
有人知道我做错了什么吗?如何访问本地exec provisioner中的私有ip?如果您只需要获取NIC的私有ip,则需要访问NIC属性:
azurerm_network_interface.nic.private_ip_address
我有到azure的快速路由连接,因此通过专用ip连接在这里不是问题。如何获取IP是我更新了答案的问题,私有IP不是VM的属性,而是NICAs的属性。根据terraform文档,这里告诉provisioner,我们可以使用self关键字访问私有IP。这对我来说不管用吗<代码>资源“aws#u instance”“web”{#…provisioner“local exec”{command=“echo服务器的IP地址是${self.private_IP}}}不知道,我倾向于避免
local exec
,而且配置中有NIC。