path is already in use at approle/
- это ключ здесь
С POST http://host.docker.internal:8200/v1/sys/auth/approle
мы можем сделать вывод, что ваше состояние Terraform еще не знает, что метод аутентификации уже установлен на путь approle
, поэтому он пытается его создать, а Vault отклоняет запрос, потому что этот путь уже используется.
Контекст: в Vault вы устанавливаете метод аутентификации, например approle
на путь, например approle/
(что позволяет подключать один и тот же метод проверки подлинности несколько раз, например, метод Kubernetes, JWT или OIDC, подключенный несколько раз по разным путям, так что каждое новое подключение имеет параметры, специфичные для данного поставщика удостоверений. Таким образом, вы можете использовать OIDC для обоих AzureAD и Google, или разные кластеры Kubernetes)
Возвращаясь к вашей проблеме, есть несколько способов решить эту проблему:
Решение 1. Синхронизируйте состояние Terraform с текущим состоянием мира, чтобы наверстать упущенное
Ошибка возникает из-за того, что Terraform (пока!) Не знает, что approle
уже смонтирован на approle/
. terraform refresh
может исправить это, но более вероятно, что вам придется вручную связать существующий ресурс с состоянием Terraform, terraform import vault_auth_backend.approle approle
(см. Документация поставщика хранилища)
Решение 2. Начните с чистого состояния
Если ваш approle/
путь уже используется из-за предыдущих тестов, вы можете просто отключить его от Vault, чтобы Terraform правильно догнал. vault auth disable approle/
удалит существующую одобренную аутентификацию. ВНИМАНИЕ: если approle
уже использовался для реальной аутентификации, существующие роли, идентификатор роли и идентификатор секрета будут немедленно отозваны. Делайте это только в том случае, если существующий метод утверждения авторизации не используется ни одной службой.
person
Sébastien Portebois
schedule
17.12.2020