0

我正在使用 openstack 作为云提供商开发 terraform。我有一个创建角色的deploy.tf脚本:

resource "openstack_identity_role_v3" "role_example" {
  name = "creator"
}

我对 terraform 如何创建资源的发现:

  • 如果 openstack 中不存在该角色,则 terraform 会毫无问题地创建一个。
  • 如果角色存在于 openstack 中并且使用相同的 terraform 脚本创建,即。terraform.state 有一个条目,terraform 返回时没有错误。

我的问题是:如果我删除了状态文件,或者角色是手动或通过其他一些 terraform 脚本在带外创建的。我收到以下错误:

* openstack_identity_role_v3.role_example: Error creating OpenStack role: Expected HTTP response code [201] when accessing [POST https://<example-openstack-url>/v3/roles], but got 409 instead
{"error": {"message": "Conflict occurred attempting to store role - Duplicate Entry", "code": 409, "title": "Conflict"}}

我正在尝试找到一种解决方法,以便如果角色不存在,terraform apply则创建它,如果它已经存在,尽管已手动创建或通过任何其他 terraform 部署脚本创建,terraform 会跳过它的创建并且不会引发错误。

4

0 回答 0