Вы должны использовать Удаленное состояние .
Локальное состояние полезно всегда, только если вы всегда работаете с одного компьютера и не заботитесь о потере файла состояния, если выслучайно удалить что-либо и т. д.
Вы можете смешивать и сопоставлять любые доступные бэкэнды состояний, но, поскольку вы уже используете AWS, возможно, имеет смысл использовать S3 бэкэнд .
Вам нужно будет определить конфигурацию состояния для каждого местоположения, что можно сделать полностью жестко в конфигурации, полностью с помощью флагов командной строки или частично с обоими.
В качестве примера у вас должно быть что-то вроде этого блока вв каждом из каталогов, в которых вы будете запускать Terraform:
terraform {
backend "s3" {}
}
Затем вы можете завершить настройку во время terraform init
:
terraform init -backend-config="bucket=uniquely-named-terraform-state-bucket" \
-backend-config="key=state-key/terraform.tfstate"
Как только вы запустите terraform init
, Terraform получит состояние из S3 для любых планов.Затем на terraform apply
или terraform destroy
он обновит файл состояния по мере необходимости.
Это позволит вам легко делиться состоянием между коллегами, а также с машинами CI / CD.Вам также следует рассмотреть возможность блокировки состояния с использованием DynamoDB, чтобы предотвратить повреждение состояния несколькими людьми, изменяющими состояние одновременно.Точно так же вы должны также рассмотреть возможность включения управления версиями в корзине S3, используемой для хранения вашего состояния, чтобы вы всегда могли вернуться к более ранней версии состояния в случае любых проблем.