.equals()
сравнивает данные в классе (при условии, что функция реализована). ==
сравнивает местоположения указателя (расположение объекта в памяти).
==
возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals()
возвращает true, если два объекта содержат одни и те же данные equals()
Versus ==
в Java
Это может вам помочь.
Вы должны использовать дистанционное состояние .
Локальное состояние полезно только в том случае, если вы всегда работаете с одной и той же машины и не беспокоитесь о потере файла состояния, если случайно что-то удалили и т. Д.
Вы можете смешивать и сочетать любые доступные бэкэнды состояний, но, поскольку вы уже используете AWS, возможно, имеет смысл использовать бэкенд S3 .
Вам нужно будет определить конфигурацию состояния для каждого местоположения, что можно сделать полностью жестко в конфигурации, полностью с помощью флагов командной строки или частично с обоими.
Например, у вас должно быть что-то вроде этого блока в каждом из каталогов, в которых вы запускаете Terraform:
terraform {
backend "s3" {}
}
Затем вы можете завершить настройку этого во время [ 112] :
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, используемой для хранения вашего состояния, чтобы вы всегда могли вернуться к более ранней версии состояния в случае любых проблем.