Jac*_*ack 5 amazon-rds terraform
我创建了 aws_db_instance 以使用 Terraform 配置来配置 RDS MySQL 数据库。我需要在 RDS 上执行 SQL 脚本(CREATE TABLE 和 INSERT 语句)。我被困在这里使用什么命令?有人在我的用例中有示例代码吗?请指教。谢谢。
resource "aws_db_instance" "mydb" {
# ...
provisioner "local-exec" {
command = "command to execute script.sql"
}
}
Run Code Online (Sandbox Code Playgroud)
这可以使用依赖于aws_db_instance.my_db. 这样,当您运行命令时,主机就可用,只有在没有规则阻止您访问数据库(例如安全组入口或不可公开访问)时,主机才会工作。
例子:
resource "null_resource" "setup_db" {
depends_on = ["aws_db_instance.my_db"] #wait for the db to be ready
provisioner "local-exec" {
command = "mysql -u ${aws_db_instance.my_db.username} -p${var.my_db_password} -h ${aws_db_instance.my_db.address} < file.sql"
}
}
Run Code Online (Sandbox Code Playgroud)
我不相信您可以使用具有此类资源的配置程序。您可以探索的一个选项是执行一个额外步骤,从 Terraform 获取 RDS 实例的地址output并运行 SQL 脚本。
因此,例如在 CI 环境中,您将拥有Create Database -> Load Database -> Finished.
下面是你用 Terraform 创建并输出资源地址。
resource "aws_db_instance" "mydb" {
# ...
provisioner "local-exec" {
command = "command to execute script.sql"
}
}
output "username" {
value = "${aws_db_instance.mydb.username}"
}
output "address" {
value = "${aws_db_instance.mydb.address}"
}
Run Code Online (Sandbox Code Playgroud)
然后,该Load Database步骤将使用 SQL 逻辑运行 shell 脚本,并执行以下操作来获取实例的地址 -terraform output address
| 归档时间: |
|
| 查看次数: |
9470 次 |
| 最近记录: |