terraform - 如何在 terraform azure local-exec 配置程序中访问私有 IP?
问题描述
我有以下 terrafrom 代码在 azure 中创建 VM,我想通过 local-exec 配置程序执行命令
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
有谁知道我在这里做错了什么?如何访问本地执行配置程序中的私有 IP?
解决方案
如果您只需要获取 NIC 的私有 IP - 您需要访问 NIC 属性:
azurerm_network_interface.nic.private_ip_address
推荐阅读
- ios - 嵌入 UITableView 时 UISwitch 动画损坏
- javascript - 在我的 Angular 6 项目中,我放置了 GOjs 库,它给出了 TS 编译错误
- android - 移除 Facebook Developer App Dashboard 下的“user_friends”权限
- fortran - Fortran do loop not calculating the entered variable
- python - Pandas to_sql - 附加 DataFrame 时增加表的索引
- ruby-on-rails - Rails 初始化程序未配置 DelayedJob Worker
- reactjs - [React Final Form] 是否适用于 Material-UI 3.x?
- angular - 订阅 route.queryParamMap 和 route.paramMap 导致页面加载两次
- angular - 这是怎么回事?PhpStorm 10.0.1 和 Angular
- sql-server - SQL 过程在通过 Java 执行时导致数据库锁定