小编use*_*169的帖子

Terraform,资源可以作为变量传递到模块中吗?

我刚开始接触Terraform(如果这是一个愚蠢的问题,我深表歉意)。

我正在设置带有一组子网的Azure vnet,每个子网都有一个路由表,该表通过防火墙发送流量。

看起来子网和路由表的组合将成为一个很好的可重用模块。

按照约定,我想在与父vnet相同的资源组和位置中创建子网和路由表。

如果我提供模块中所有需要的值作为单独的值,则该模块可以正常工作:)

我想做的是有效地将代表父vnet的资源作为“参数”传递到模块中,并让模块直接从vnet资源读取诸如资源组名称,位置和vnet名称之类的信息,以便:-我键入的内容较少(我仅使用vnet创建模块实例,而不是使用vnet名称,资源组名称和位置的单独值)-在路由表和子网中设置位置和资源组名称时,它消除了出错的机会(如果我从模块中的父vnet读取值,则这些值将与父vnet相同)

当前,模块变量定义为:

variable "parent-vnet-name" {}

variable "parent-vnet-resource-group-name" {}

variable "parent-vnet-location" {}

variable "subnet-name" {
  type = "string"
}

variable "subnet-address-prefix" {}

variable "firewall-ip-private" {}
Run Code Online (Sandbox Code Playgroud)

和模块为:

resource "azurerm_route_table" "rg-mgt-network__testtesttest" {
   name                = "${var.subnet-name}"
  location            = "${var.parent-vnet-location}"
  resource_group_name = "${var.parent-vnet-resource-group-name}"

  route {
    name                   = "Default"
    address_prefix         = "0.0.0.0/0"
    next_hop_type          = "VirtualAppliance"
    next_hop_in_ip_address = "${var.firewall-ip-private}"
  }
}
Run Code Online (Sandbox Code Playgroud)

确实,我想做的更像是变量:

variable "parent-vnet" {}

variable "subnet-name" {
  type = "string"
}

variable "subnet-address-prefix" {}

variable "firewall-ip-private" {}
Run Code Online (Sandbox Code Playgroud)

与模块做类似的事情:

resource "azurerm_route_table" …
Run Code Online (Sandbox Code Playgroud)

terraform

9
推荐指数
2
解决办法
1653
查看次数

使用REST API上的cypher查询删除节点和关系

我正在玩2.0 M6 neo4j服务器(win7 64上的oracle jdk7).

我正在尝试使用REST API上的单个cypher查询删除节点及其关系.

我创建的查询(如果我在浏览器UI中运行它可以工作)看起来像:

START n = node( 1916 ) MATCH n-[r]-() DELETE n, r
Run Code Online (Sandbox Code Playgroud)

当我把它通过gson时,它出现为:

{"query":"START n \u003d node( 1916 ) MATCH n-[r]-() DELETE n, r"}
Run Code Online (Sandbox Code Playgroud)

发送到服务器时获取响应:

{
  "columns" : [ ],
  "data" : [ ]
}
Run Code Online (Sandbox Code Playgroud)

我的测试失败,因为仍然可以通过其id在neo4j服务器中找到该节点...

如果我简化我的查询只是删除一个节点(没有关系)所以它:

START n = node( 1920 )  DELETE n
Run Code Online (Sandbox Code Playgroud)

哪个成了

{"query":"START n \u003d node( 1920 )  DELETE n"}
Run Code Online (Sandbox Code Playgroud)

然后删除该节点.

我错过了什么吗?

谢谢,安迪

neo4j cypher

6
推荐指数
3
解决办法
1万
查看次数

Terraform 授予 azure 函数应用程序,具有对 azure keyvault 的 msi 访问权限

我正在尝试使用 Terraform 在 Azure 中设置一个场景,其中 Terraform 创建:
- 具有托管服务标识的 Azure 函数应用
- Azure 密钥保管库
- 允许函数应用访问密钥保管库中的机密的密钥保管库访问策略

我的问题是在密钥保管库访问策略的定义中使用为函数应用程序设置的 MSI 的对象 ID(原则 ID),我怀疑我做错了什么(和/或愚蠢)......

我从 Terraform 应用中得到的错误是:

azurerm_key_vault_access_policy.msi-test-to-keyvault-test: "object_id" is an invalid UUUID: uuid: UUID string too short: 1
Run Code Online (Sandbox Code Playgroud)

我怀疑问题可能出在我尝试引用访问策略定义中的 msi 标识创建的服务原则的对象 id 的方式上:

object_id = "${azurerm_function_app.rg-func-app__funcapp.identity.principal_id}"
Run Code Online (Sandbox Code Playgroud)

(azurerm 函数应用程序属性部分的 doco 说身份导出原则 id,但是我不知道引用此属性的正确语法是什么:()

Terraform 模板是:

resource "azurerm_function_app" "rg-func-app__funcapp" {
  name = "${local.deployed-func-app-name}"
  location                  = "${azurerm_resource_group.rg-func-app.location}"
  resource_group_name       = "${azurerm_resource_group.rg-func-app.name}"
  app_service_plan_id       = "${azurerm_app_service_plan.rg-func-app__appsvcpln.id}"
  storage_connection_string = "${azurerm_storage_account.rg-func-app__sa.primary_connection_string}"

  version = "~1"

  app_settings {
    "TEST_KEYVAULT_URL" = "${azurerm_key_vault.test.vault_uri}"
  }

  identity …
Run Code Online (Sandbox Code Playgroud)

azure terraform

4
推荐指数
1
解决办法
1797
查看次数

标签 统计

terraform ×2

azure ×1

cypher ×1

neo4j ×1