Terraform добавить существующий локальный файл состояния к существующему файлу состояния удаленного сервера (хранилище больших двоичных объектов Azure)

#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 under adauthservice создает точное соответствие с локальным файлом состояния

Ответ №1:

В приведенной временной шкале событий неясно, как вы попали в это состояние. Исходя из того, что вы описали, это предполагает, что вы, возможно, перешли на большой двоичный объект, но затем вернулись позже и снова начали использовать локальное состояние. Независимо от того, что terraform не знает. Это предполагает наличие двух разных состояний.

Учитывая количество имеющихся у вас ресурсов, это может быть сложно. Выберите, какой файл состояния у вас есть, с большим количеством ресурсов в качестве базового. У вас есть несколько вариантов

  1. (рекомендуется) Импортируйте все оставшиеся ресурсы из меньшего файла состояния в больший.
  2. Попробуйте использовать команду use the mv
  3. Отредактируйте файл состояния json, скопировав его (это непредсказуемо, но если вы в отчаянии)