Terraform 云 运行 触发器与 Azure
Terraform cloud run triggers with Azure
我在访问我的数据“terrafrom_remote_state
”对象时遇到问题。
因此,我正在关注 hashicorp 站点,以使用 运行 触发器使用 terraform cloud 部署 azure 资源。触发器正在运行,运行正在为第二个工作区制定计划,但它无法访问我通过输出传递的数据。
我已经为要共享的第一个工作区设置了“状态”,并将第二个工作区的 运行 触发器设置为由第一个工作区触发。这里没有问题。
我试图关注 hasicorp 网站上的内容,但它是针对 aws 的,所以,也许对于 azure 我错过了一些东西。我将 post 我的输出,然后是第二个工作区的一些代码。
输出:我在状态文件中查看过,看起来不错。
output "rgName" {
description = "The resource group for resources"
value = var.rgName
}
output "location" {
description = "The location for resources"
value = var.location
}
output "subnet1_id" {
description = "subnet 1"
value = azurerm_subnet.subnet1.id
}
第二个工作区
data "terraform_remote_state" "network" {
backend = "remote"
config = {
organization = "Awesome-Company"
workspaces = {
name = "TFCloud-Trigger-Network"
}
}
}
provider "azurerm" {
version = "2.66.0"
subscription_id = var.subscription_id
client_id = var.client_id
client_secret = var.clientSecret
tenant_id = var.tenant_id
features{}
}
#Deploy Public IP
resource "azurerm_public_ip" "pip1" {
name = "TFC-pip1"
location = data.terraform_remote_state.network.outputs.location
resource_group_name = data.terraform_remote_state.network.outputs.rgName
allocation_method = "Dynamic"
sku = "Basic"
}
#Create NIC
resource "azurerm_network_interface" "nic1" {
name = "TFC-TestVM-Nic"
location = data.terraform_remote_state.network.outputs.location
resource_group_name = data.terraform_remote_state.network.outputs.rgName
ip_configuration {
name = "ipconfig1"
subnet_id = date.terraform_remote_state.network.outputs.subnet1_id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.pip1.id
}
}
错误是
Error: Unsupported attribute │ │ on main.tf line 26, in resource
"azurerm_public_ip" "pip1": │ 26: location =
data.terraform_remote_state.network.outputs.location │
├──────────────── │ │ data.terraform_remote_state.network.outputs
is object with no attributes │ │ This object does not have an
attribute named "location".
我无法访问 data.terraform_remote_state.network.outputs
所以,我想出了这个,它不在文档中。由另一个工作空间触发的工作空间不会自动更新它的 terrafrom 计划。
通常,当我在 github(或其他存储库)中编辑代码时,terraform cloud 会在您保存新代码后自动 运行 一个计划。由另一个触发的工作空间不会那样做。因此,即使我更改了代码,我也不得不手动转到 TF Cloud 丢弃该触发工作区上的当前 运行 和 re-run 计划。在此之后,运行 触发器将成功 运行。
这是一件奇怪的事情...
我在访问我的数据“terrafrom_remote_state
”对象时遇到问题。
因此,我正在关注 hashicorp 站点,以使用 运行 触发器使用 terraform cloud 部署 azure 资源。触发器正在运行,运行正在为第二个工作区制定计划,但它无法访问我通过输出传递的数据。
我已经为要共享的第一个工作区设置了“状态”,并将第二个工作区的 运行 触发器设置为由第一个工作区触发。这里没有问题。
我试图关注 hasicorp 网站上的内容,但它是针对 aws 的,所以,也许对于 azure 我错过了一些东西。我将 post 我的输出,然后是第二个工作区的一些代码。
输出:我在状态文件中查看过,看起来不错。
output "rgName" {
description = "The resource group for resources"
value = var.rgName
}
output "location" {
description = "The location for resources"
value = var.location
}
output "subnet1_id" {
description = "subnet 1"
value = azurerm_subnet.subnet1.id
}
第二个工作区
data "terraform_remote_state" "network" {
backend = "remote"
config = {
organization = "Awesome-Company"
workspaces = {
name = "TFCloud-Trigger-Network"
}
}
}
provider "azurerm" {
version = "2.66.0"
subscription_id = var.subscription_id
client_id = var.client_id
client_secret = var.clientSecret
tenant_id = var.tenant_id
features{}
}
#Deploy Public IP
resource "azurerm_public_ip" "pip1" {
name = "TFC-pip1"
location = data.terraform_remote_state.network.outputs.location
resource_group_name = data.terraform_remote_state.network.outputs.rgName
allocation_method = "Dynamic"
sku = "Basic"
}
#Create NIC
resource "azurerm_network_interface" "nic1" {
name = "TFC-TestVM-Nic"
location = data.terraform_remote_state.network.outputs.location
resource_group_name = data.terraform_remote_state.network.outputs.rgName
ip_configuration {
name = "ipconfig1"
subnet_id = date.terraform_remote_state.network.outputs.subnet1_id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.pip1.id
}
}
错误是
Error: Unsupported attribute │ │ on main.tf line 26, in resource "azurerm_public_ip" "pip1": │ 26: location = data.terraform_remote_state.network.outputs.location │
├──────────────── │ │ data.terraform_remote_state.network.outputs is object with no attributes │ │ This object does not have an attribute named "location".
我无法访问 data.terraform_remote_state.network.outputs
所以,我想出了这个,它不在文档中。由另一个工作空间触发的工作空间不会自动更新它的 terrafrom 计划。
通常,当我在 github(或其他存储库)中编辑代码时,terraform cloud 会在您保存新代码后自动 运行 一个计划。由另一个触发的工作空间不会那样做。因此,即使我更改了代码,我也不得不手动转到 TF Cloud 丢弃该触发工作区上的当前 运行 和 re-run 计划。在此之后,运行 触发器将成功 运行。
这是一件奇怪的事情...