小编Kan*_*kaM的帖子

如何在 terraform 应用期间忽略重复资源错误?

我正在尝试使用重新应用我的更改terraform apply,但是当我再次执行此操作时,它会给我错误,资源已存在并停止部署。

例子:

Error: AlreadyExistsException: An alias with the name arn:aws:kms:us-east-1:490449857273:alias/continuedep-cmk-us-east-1 already exists
        status code: 400, request id: 4447fd20-d33b-4c87-891e-cc5e09cc6108

  on ../../../modules/kms_cmk/main.tf line 11, in resource "aws_kms_alias" "keyalias":
  11: resource "aws_kms_alias" "keyalias" {



Error: Error creating DB Subnet Group: DBSubnetGroupAlreadyExists: The DB subnet group 'continuedep-sbg' already exists.
        status code: 400, request id: 97d662b6-79d4-4fde-aaf7-a2f3e5a0bd9e

  on ../../../modules/rds-postgres/main.tf line 2, in resource "aws_db_subnet_group" "generic_db_subnet_group":
   2: resource "aws_db_subnet_group" "generic_db_subnet_group" {
Run Code Online (Sandbox Code Playgroud)

同样,我在许多其他现有资源中遇到错误。我想避免/忽略此类错误并继续我的部署。

我还可以使用什么其他方式从中间中断的地方重新启动我的 terraform 资源部署。

我的地形版本是: Terraform v0.12.9

terraform terraform-provider-aws

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

如何在 terraform 代码中调用 ansible playbook?

我有一个运行良好的 ansible 剧本,现在我必须使用 terrform 脚本调用该剧本。目前我正在使用如下所示的代码,但它会在 terraform init 期间导致错误:\nError: Unknown root level key: provisioner

\n\n

我正在使用 Terraform v0.11.7,并且仅当我运行此特定代码时才会发生错误。\n我的 main.tf 仅包含此代码。我使用的目录结构如下:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 create-user.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 library\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mkpassword.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 outputs.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 roles\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 linux_user_creation\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tasks\n\xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 variables.tf\n
Run Code Online (Sandbox Code Playgroud)\n\n

main.tf 看起来像:

\n\n
  provisioner "remote-exec" {\n  inline = ["sudo dnf -y install python"]\n\n  connection {\n    type        = "ssh"\n    user        = "ubuntu"\n    private_key = "${file(var.ssh_keyname)}"\n  }\n}\n\nprovisioner "remote-exec" {\n  command = ["ansible-playbook -u root --private-key ${var.ssh_keyname} -i ${self.ipv4_address} create-user.yml -e \'email_id=${var.email_id}\'"]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我希望剧本应该从 terraform 脚本调用并应该显示结果。 …

provisioning ansible terraform

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