当我terraform plan -var-file=../variables.tfvars
时
传递所有好处
然后我运行terraform apply -var-file=../variables.tfvars
给我这个错误,我不知道如何解决这个问题,因为目录的路径是正确的。
错误:应用计划时出错:
发生1个错误:
* aws_instance.mongodb_server:发生1个错误:
*错误运行命令'睡眠60&& export ANSIBLE_HOST_KEY_CHECKING = False&&回声" [mongodb] 54.193.20.170" > /tmp/inventory.ws&&&&& ansible-playbook -i /tmp/inventory.ws -e" mongodb_password = blahblah" -e" mongodb_user = admin" -u ec2-user -b --private-key = .. / BASE / files / joujou.pem ../DATABASE/files/ansible-mongodb-standalone/mongodb.yml' ;:退出状态127.输出:/ bin / sh:2:ansible-playbook:not found
代码如下:
resource "aws_instance" "mongodb_server" {
instance_type = "${lookup(var.mongodb_instance_type_control,
var.target_env)}"
vpc_security_group_ids =
["${aws_security_group.default_internal.id}"]
ami = "${lookup(var.amazon_ami_by_location, var.aws_region)}"
key_name = "${var.key_name}"
subnet_id = "${data.aws_subnet.subnet_a.id}"
tags {
Name = "tf-mongodb-${lookup(var.environment, var.target_env)}"
}
associate_public_ip_address = true
provisioner "local-exec" {
command = "sleep 60 && export ANSIBLE_HOST_KEY_CHECKING=False && echo \"[mongodb]\n${aws_instance.mongodb_server.public_ip}\" > /tmp/inventory.ws && ansible-playbook -i /tmp/inventory.ws -e \"mongodb_password=${var.mongodb_default_password}\" -e \"mongodb_user=${var.mongodb_default_username}\" -u ec2-user -b --private-key=../BASE/files/joujou.pem ../DATABASE/files/ansible-mongodb-standalone/mongodb.yml"
}
答案 0 :(得分:1)
输出:/ bin / sh:2:ansible-playbook:not found
这是你的实际错误。 Terraform计划不会捕获此错误,因为terraform计划不会评估local-exec命令。
您是否在试图运行上述terraform的机器上安装了ansible?如果已安装,它是否在路径上。
如果尚未安装,请尝试installing ansible。如果已经安装了ansible,请在local-exec命令中执行echo $PATH
并确认给定路径中是否存在ansible。