gpt4 book ai didi

mysql - 如何在terraform user_data上执行mysql脚本插入?

转载 作者:行者123 更新时间:2023-11-29 15:38:41 27 4
gpt4 key购买 nike

脚本的最后一行未执行。

我尝试在创建的实例上手动执行代码,并且成功了。

#!/bin/bash

#install tools
apt-get update -y
apt-get install mysql-client -y

#Create MySQL config file
echo "[mysql]" >> ~/.my.cnf
echo "user = poc5admin" >> ~/.my.cnf
echo "password = poc5password" >> ~/.my.cnf

#test
echo "endpoint = ${rds_endpoint}" >> ~/variables
hostip=$(hostname -I)
endpoint=${rds_endpoint}
echo "$hostip" >> ~/variables

#I have created a table here but I will remove the code since it is unnecessary...

#Create User
echo "CREATE USER 'poc5user'@'%' IDENTIFIED BY 'poc5pass';" >> ~/mysqlscript.sql
echo "GRANT EVENT ON * . * TO 'poc5user'@'%';" >> ~/mysqlscript.sql

cp mysqlscript.sql /home/ubuntu/mysqlscript.sql
mysql -h $endpoint -u poc5admin < ~/mysqlscript.sql

预期结果:RDS 实例上应该创建数据库、表和用户。

最佳答案

您可以从 bash 脚本插入或创建这样的数据库,但不推荐使用 RDS 的方法。最好将数据放在 s3 和 import from the s3 上。

enter image description here

这是创建数据库的示例

resource "aws_db_instance" "db" {
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
name = "mydb"
username = "foo"
password = "foobarbaz"
parameter_group_name = "default.mysql5.7"
s3_import {
source_engine = "mysql"
source_engine_version = "5.6"
bucket_name = "mybucket"
bucket_prefix = "backups"
ingestion_role = "arn:aws:iam::1234567890:role/role-xtrabackup-rds-restore"
}
}

~/.my.cnf 为什么你需要这个?最好将这些脚本放在 s3 文件中。

第二件事,如果您仍然有兴趣从本地环境运行,那么您可以从local-exec插入

resource "null_resource" "main_db_update_table" {

provisioner "local-exec" {
on_failure = "fail"
interpreter = ["/bin/bash", "-c"]
command = <<EOT
mysql -h ${aws_rds_cluster.db.endpoint} -u your_username -pyour_password your_db < mysql_script.sql
EOT
}
}

但最好使用 s3。

如果您想从远程导入,可以探索remote-exec

使用用户数据,您可以执行此操作,但您的 MySQL 脚本似乎无法正确生成。最好将脚本cp到远程,然后在远程使用本地exec运行。

关于mysql - 如何在terraform user_data上执行mysql脚本插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57917710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com