此处未使用云资源。 我是不熟悉Terraform的人。
我正在使用Terraform 0.12在服务器上安装软件。该软件期望远程MariaDB数据库为空,这是手动完成的。 (如果数据库不为空,则该软件将导致Terraform中止。。)现在它都是虚拟数据。
我想在销毁数据库之前使用Terraform对数据库进行 mysqldump ,以便可以在terraform apply
上恢复相同的转储。最终,在软件升级之间需要保留数据库的内容。
我有Terraform代码来创建和销毁服务器并安装软件。很好目前,数据库是手动处理的。如果不加注释,则可以使用Terraform代码连接数据库,但是我没有足够的经验来做更多的事情。
provider "mysql" {
endpoint = "10.0.1.2"
username = "terraform"
password = "changeme"
version = "~> 1.6"
}
resource "mysql_database" "default" {
default_character_set = "utf8"
name = "terraform_test_db"
}
答案 0 :(得分:2)
您可以使用destroy time provisioners触发在Terraform尝试销毁资源之前进行预配器操作。
provider "mysql" {
endpoint = "10.0.1.2"
username = "terraform"
password = "changeme"
version = "~> 1.6"
}
resource "mysql_database" "default" {
name = "terraform_test_db"
default_character_set = "utf8"
provisioner "local-exec" {
when = "destroy"
command = "mysqldump [options] > dump.sql"
}
}