【发布时间】:2019-12-28 10:48:41
【问题描述】:
我有一个 TF 脚本,它使用 amazon linux 部署 ec2 实例并安装 mariadb x86_64 1:5.5.62-1.amzn2.0.1。我希望在只有私有访问权限的 aurora 5.7 RDS 上自动创建数据库和用户。
问题是,在provisioner内联执行期间,我发出的每个mysql命令都会返回一个错误:
aws_instance.instance (remote-exec): mysql: unknown option '--print-defaults'
通过 ssh 从实例运行相同的命令可以正常工作。
resource "aws_instance" "instance" {
ami = "ami-0c3fd0f5d33134a76" #data.aws_ami.ami.id
availability_zone = local.az
ebs_optimized = var.instance_config.ebs_optimized
instance_type = var.instance_config.type
monitoring = var.instance_config.monitoring
key_name = var.instance_config.key_name
subnet_id = local.subnet_id
vpc_security_group_ids = local.security_groups
associate_public_ip_address = var.instance_config.associate_public_ip_address
source_dest_check = var.instance_config.source_dest_check
iam_instance_profile = aws_iam_instance_profile.profile.name
root_block_device {
volume_type = var.instance_config.volume_type
volume_size = var.instance_config.volume_size
delete_on_termination = var.instance_config.delete_on_termination
}
connection {
host = self.public_ip
type = "ssh"
user = "ec2-user"
private_key = file(var.instance_config.private_key_path)
}
provisioner "remote-exec" {
inline = local.commands ### mysql commands are here
}
}
mysql 命令是这样的
nmysql -h XXX.rds.amazonaws.com -u XXX -pXXX -e "CREATE DATABASE IF NOT EXISTS test;"
我尝试了内联执行,创建了一个脚本然后执行它,客户端的--no-defaults 选项,创建了具有相同问题的 ~/.my.cnf。 我真的很想避免手动登录以创建数据库并将 RDS 向公众开放......
更新: 我在脚本/命令中没有 --print-defaults。我还 grep 了整个文件系统,在 amazon linux 中寻找一些默认设置......还在配置程序执行期间和 ssh 连接后检查了 env 变量,但我没有发现任何差异
谢谢
【问题讨论】:
-
您的示例命令不包括 -print 默认选项。实际上,在自动执行任何操作的脚本中包含该选项是没有意义的。
-
这就是我在这里问的原因。我在脚本/命令中没有 --print*defaults。我还 grepped 了整个文件系统,在 amazon linux 中寻找一些默认设置......还在配置程序执行期间和 ssh 连接后检查了 env 变量,但我发现没有差异
标签: mariadb terraform amazon-aurora