- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 Azure 实例管理数据库用户和数据库,这令人惊讶……不可能。我以为我找到了一种使用 local-exec 提供程序的方法,但是……好吧,显然不是。代码和错误消息如下。
它归结为 terraform 提示我从其他资源中引用了非静态的东西,而我只是……没有。我只使用静态参数,没有别的。我不明白的是,我什至可以在提供者配置中引用变量 - 但对于销毁提供者来说,它太动态了?
感谢任何帮助!
接着是代码……:
resource "azurerm_postgresql_database" "db" {
server_name = var.server_name
resource_group_name = var.server_rg
name = var.db_name
charset = var.db_charset
collation = var.db_collation
provisioner "local-exec" {
command = "${path.module}/mgt-user.sh create '${var.server_fqdn}' '${var.server_admin_user}' '${var.db_name}' '${var.db_user_pass}'"
}
provisioner "local-exec" {
when = destroy
command = "${path.module}/mgt-user.sh destroy '${var.server_fqdn}' '${var.server_admin_user}' '${var.db_name}' '${var.db_user_pass}'"
}
}
现在,当我运行 terraform init 时,我得到了这个:
Error: Invalid reference from destroy provisioner
on ../modules/dbs/pg-db-and-user/db_and_user.tf line 27, in resource "azurerm_postgresql_database" "db":
27: command = "echo ${path.module}/create_user.sh destroy '${var.server_fqdn}' '${var.server_admin_user}' '${var.db_name}' '${var.db_user_pass}'"
Destroy-time provisioners and their connection configurations may only
reference attributes of the related resource, via 'self', 'count.index', or
'each.key'.
References to other resources during the destroy phase can cause dependency
cycles and interact poorly with create_before_destroy.
最佳答案
下面的代码片段必须与警告一起使用,而不是抛出错误。问题是因为 path.module
变量与 destroy
provisioner 一起使用。
Terraform 表示这将在以后的版本中得到改进。在那之前,您可以传递指向 path.module
var 的 working_dir
。
resource "azurerm_postgresql_database" "db" {
server_name = var.server_name
resource_group_name = var.server_rg
name = var.db_name
charset = var.db_charset
collation = var.db_collation
provisioner "local-exec" {
command = "${path.module}/mgt-user.sh create '${var.server_fqdn}' '${var.server_admin_user}' '${var.db_name}' '${var.db_user_pass}'"
}
provisioner "local-exec" {
when = destroy
command = "./mgt-user.sh destroy '${var.server_fqdn}' '${var.server_admin_user}' '${var.db_name}' '${var.db_user_pass}'"
working_dir = path.module
}
}
更多详情,您可以引用以下链接::
关于local-exec DESTROY provisioner 中的 terraform 和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64952745/
我想创建 x 个实例并运行相同的配置器。 resource "aws_instance" "workers" { ami = "ami-08d658f84a6d84a80" count = 3
问题 谁能解释为什么选择 puppet 或 chef vagrant provisioner 而不是 shell provisioner 会更好? 背景 我正在开始使用 Vagrant。我遇到的问题之
每次我尝试保存时,我都会收到以下消息:“您的生产证书已被 Apple 拒绝。它可能已过期、撤销或无效。”我还尝试将 .p12 文件上传到 firebase messaging,它立即起作用了!所以 O
我正在尝试使用它的 ansible 供应器供应一台由 packer 构建的机器; 配置无法找到我在自定义 ansible.cfg 文件中设置的一些角色,如下所示: [defaults] stdout_
这是我的应用崩溃时调试区域中的内容 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason
我正在处理 main.tf 文件,用于在 azure 中创建具有远程执行功能的虚拟机,并且我还想在此文件中创建并下载 SSH key .pem 文件以访问 Linux VM。 主要。 tf 文件 #
我已经按照efs-provisioner中概述的步骤成功部署了efs-provisioner。 但是PVC卡在Pending State中,显示相同的消息: waiting for a volume
我正在处理 main.tf 文件,用于在 azure 中创建具有远程执行功能的虚拟机,并且我还想在此文件中创建并下载 SSH key .pem 文件以访问 Linux VM。 主要。 tf 文件 #
这个问题在这里已经有了答案: "CAUTION: provisional headers are shown" in Chrome debugger (36 个答案) 关闭 8 年前。 我无法调试一
我正在尝试将我的应用程序提交到 App Store,但是我在使用配置文件时遇到了问题。 归档应用程序后单击提交时,我收到错误消息: 未找到匹配的临时配置文件 - 没有任何有效的配置文件允许特定权利:a
如何让 Vagrantfile 将文件的内容附加到 ~/.bashrc 文件? 在我的 Vagrantfile 中,我试图将文件/vagrant/dev_env_config 的内容附加到 ~/.ba
我创建了一个 api,当我调用它时必须从数据库中删除图像。我使用 mongodb 作为数据库,使用 gridfs 来管理图像。 这是调用 api 从数据库中删除图像的代码。 vm.delete = f
我正在尝试在 angularjs 应用程序中进行 ajax 调用。但随机我收到这条警告说“显示了临时 header ”,每当调试器控制台出现这条警告时,我从服务器得到的响应非常慢(大约 30 到 45
我正在尝试为 Azure 实例管理数据库用户和数据库,这令人惊讶……不可能。我以为我找到了一种使用 local-exec 提供程序的方法,但是……好吧,显然不是。代码和错误消息如下。 它归结为 ter
我正在使用 terraform 0.14 并有 2 个资源,一个是 local_file,它根据变量在本地机器上创建一个文件,另一个是带有 local_exec 供给者。 这一切都按预期工作,但我只能
我正在编辑我的 homestead.yaml 文件,我确定缩进是正确的——但是我收到以下错误: Bringing machine 'default' up with 'virtualbox' prov
我认为“ Provider ”和“ Provisioner ”这两个词听起来非常相似,这可能会导致混淆,尤其是在遇到文档的初学者中,这两个术语混在一起或使用同义词(已经在互联网)。当初学者看到 Doc
Vagrant 使用 VirtualBox 创建一个开发环境,然后使用 ansible 提供它。作为配置的一部分,ansible 运行重启,然后等待 SSH 恢复。这按预期工作,但因为 vagrant
使用 terraform 为 hash Vault 创建一些自签名 tlf 证书,我的模块中主要有问题的 terraform 位如下,我尝试了 2 种方法来让它工作。 第一种方式,理论上,我认为应该可
我有一个有效的 TF 设置,可以在 Azure 中启动多个 Linux VM。我在 null_resource 中运行本地执行配置程序来执行 Ansible playbook。我从 TF 状态文件中提
我是一名优秀的程序员,十分优秀!