У меня есть три компонента архитектуры, которые я хочу перевести в структуру, подобную модели, но я изо всех сил пытаюсь найти исчерпывающую часть документации, объясняющую, как этого добиться.
.
└── dev
├── backend.tf
├── main.tf
├── outputs.tf
├── variables.tf
│
├── cluster
│ ├── terraform.tfstate
│ ├── backend.tf
│ ├── main.tf
│ ├── outputs.tf
│ ├── resource-efs.tf
│ └── variables.tf
│
├── db
│ ├── terraform.tfstate
│ ├── backend.tf
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
│
└── modules
├── cluster
│ ├── backend.tf
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── efs
│ ├── backend.tf
│ ├── main.tf
│ └── variables.tf
└── db
├── backend.tf
├── main.tf
├── outputs.tf
└── variables.tf
Я создал необходимые ссылкимежду ресурсами и модульной компоновкой уже, однако теперь мне нужно переместить состояния terraform из кластера и папок db в папку модулей.Кроме того, у меня есть resource-efs.tf, который я хочу перейти к этой модульной структуре.
Я узнал, что все инициализированные каталоги в Terraform являются модулями, поэтому я буду ссылаться на папку dev
здесь как«root»: в настоящее время состояние кластера и папок базы данных имеют состояния, которые хранятся удаленно в двух разных папках, поэтому я решил, что сначала нужно инициализировать папку root
, а затем переместить состояния двух автономных компонентов, а именно кластераи db - в верхний и в соответствующие им модули.
Я пробовал terraform mv, но получил сообщение об ошибке: я перешел в папку db и запустил
terraform state mv -state-out=../modules/db/terraform.tfstate db module.db
И ошибка, которую я получил, была
Error moving state: Error parsing address 'db': invalid resource address "db"
Please ensure your addresses and state paths are valid. No
state was persisted. Your existing states are untouched.
По праву, поскольку db - это не ресурс сам по себе, а имя моего будущего модуля.
Из https://www.terraform.io/docs/commands/state/mv.html говорят, что эта команда может «переместить данные в совершенно новое состояние, ее также можно использовать для рефакторинга одной конфигурации в несколько отдельно управляемых конфигураций Terraform.», Но я не могу понять,как это сделать - перенести целые модули, которые теперь являются «корневыми» модулями, самостоятельно;Есть ли способ сослаться на корневой модуль, выполнив что-то вроде terraform state mv -state=db.tfstate -state-out=../cluster/cluster.tfstate module.root module.db
?