#terraform #openstack #openstack-keystone #terraform-provider-openstack
#terraform #openstack #openstack-keystone #terraform-provider-openstack
Вопрос:
Я работаю над terraform с openstack в качестве поставщика облачных услуг. У меня есть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 пропускает ее создание и не выдает ошибку.
Комментарии:
1. Запустите импорт terraform
2. Импорт, безусловно, помогает при создании вручную, но управление им в другом модуле TF или удаление файла состояния — это обстоятельства, которые не должны возникать.
3. спасибо за предложение. Что я вижу, так это то, что для «импорта terraform» требуется два аргумента; «адрес» и «ИДЕНТИФИКАТОР». Я хочу достичь того же самого без предоставления идентификатора. потому что, если роль не существует, я не могу знать значение Id.
4. Идентификатор является ресурсом в вашей конфигурации.
5. «terraform import openstack_identity_role_v3.role_example <ID>» — это правильный синтаксис. Пожалуйста, помогите мне заменить значение ID. Это работает, если я предоставляю жестко заданный идентификатор хэша, но я хочу предоставить его программно. Спасибо