#terraform #state #push #azure-blob-storage #terraform-provider-azure
#terraform #состояние #толкать #azure-blob-хранилище #terraform-provider-azure
Вопрос:
У меня есть файл состояния terraform ( terraform.tfstate
), выделенный ниже красной стрелкой, который хранится локально на диске.
У меня также есть файл состояния удаленного сервера (хранящийся в хранилище больших двоичных объектов Azure) с развернутыми ресурсами.
Я хотел добавить существующий локальный файл состояния к существующему удаленному серверу в Azure.
Я переместил локальное состояние в каталог и выполнил terraform state push terraform.tfstate
Я получил ошибку ниже: terraform cannot import state with lineage over unrelated stage with lineage
Затем я сделал terraform state push -force terraform.tfstate
Однако он полностью заменил мое существующее состояние (в удаленном режиме) на локальное состояние. (Я сделал резервную копию своего удаленного состояния).
Я хотел добавить свой локальный файл состояния к файлу удаленного состояния. Как это можно сделать? Все, что я хотел иметь, это — один отдельный файл состояния на удаленном компьютере с уже предоставленными ресурсами, любые другие предложения, пожалуйста. Справка.
Комментарии:
1. Сколько ресурсов в каждом состоянии, разве вы не можете просто
import
указать ресурсы в новом файле состояния? Оба ли они развернуты с одной и той же версией terraform? Вашиmain.tf
производимые ресурсы соответствуют состоянию в локальном файле состояния? В противном случае объединение состояния вообще не имеет смысла, поскольку следующее развертывание в любом случае уничтожит ресурсы.2. @luk2302 В локальном файле состояния содержится много ресурсов. Оба развернуты в одной и той же версии terraform.
Main.tf
underadauthservice
создает точное соответствие с локальным файлом состояния
Ответ №1:
В приведенной временной шкале событий неясно, как вы попали в это состояние. Исходя из того, что вы описали, это предполагает, что вы, возможно, перешли на большой двоичный объект, но затем вернулись позже и снова начали использовать локальное состояние. Независимо от того, что terraform не знает. Это предполагает наличие двух разных состояний.
Учитывая количество имеющихся у вас ресурсов, это может быть сложно. Выберите, какой файл состояния у вас есть, с большим количеством ресурсов в качестве базового. У вас есть несколько вариантов
- (рекомендуется) Импортируйте все оставшиеся ресурсы из меньшего файла состояния в больший.
- Попробуйте использовать команду use the mv
- Отредактируйте файл состояния json, скопировав его (это непредсказуемо, но если вы в отчаянии)