为什么nohup命令在Terraform中会失败;aws“U实例”;实例启动时未运行用户\u数据

为什么nohup命令在Terraform中会失败;aws“U实例”;实例启动时未运行用户\u数据,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在使用Terraform v0.11.7和AWS provider 1.30构建一个环境,以使用Debian 9.5 AMI上构建的运行负载测试 我的模块公开了一个num_instancesvar,用于确定使用的蝗虫命令行。下面是我的配置 resource "aws_instance" "locust_master" { count = 1 ami = "${var.instance_ami}" ins

我正在使用Terraform v0.11.7和AWS provider 1.30构建一个环境,以使用Debian 9.5 AMI上构建的运行负载测试

我的模块公开了一个
num_instances
var,用于确定使用的蝗虫命令行。下面是我的配置

resource "aws_instance" "locust_master" {
  count                   = 1

  ami                     = "${var.instance_ami}"
  instance_type           = "${var.instance_type}"
  key_name                = "${var.instance_ssh_key}"
  subnet_id               = "${var.subnet}"
  tags                    = "${local.tags}"
  vpc_security_group_ids  = ["${local.vpc_security_group_ids}"]

  user_data = <<-EOF
              #!/bin/bash
              # Install pip on instance.
              curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
              sudo python3 get-pip.py
              rm get-pip.py
              # Install locust and pyzmq on instance.
              sudo pip3 install locustio pyzmq
              # Write locustfile to instance.
              echo "${data.local_file.locustfile.content}" > ${local.locustfile_py}
              # Write locust start script to instance.
              echo "nohup ${var.num_instances > 1 ? local.locust_master_cmd : local.locust_base_cmd} &" > ${local.start_sh}
              # Start locust.
              sh ${local.start_sh}
              EOF
}

resource "aws_instance" "locust_slave" {
  count                   = "${var.num_instances - 1}"

  ami                     = "${var.instance_ami}"
  instance_type           = "${var.instance_type}"
  key_name                = "${var.instance_ssh_key}"
  subnet_id               = "${var.subnet}"
  tags                    = "${local.tags}"
  vpc_security_group_ids  = ["${local.vpc_security_group_ids}"]

  user_data = <<-EOF
              #!/bin/bash
              set -x
              # Install pip on instance.
              curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
              sudo python3 get-pip.py
              rm get-pip.py
              # Install locust and pyzmq on instance.
              sudo pip3 install locustio pyzmq
              # Write locustfile to instance.
              echo "${data.local_file.locustfile.content}" > ${local.locustfile_py}
              # Write locust master dns name to instance.
              echo ${aws_instance.locust_master.private_dns} > ${local.locust_master_host_file}
              # Write locust start script to instance.
              echo "nohup ${local.locust_slave_cmd} &" > ${local.start_sh}
              # Start locust.
              sh ${local.start_sh}
              EOF
}
资源“aws\u实例”“蝗虫\u主机”{
计数=1
ami=“${var.instance_ami}”
instance_type=“${var.instance_type}”
key\u name=“${var.instance\u ssh\u key}”
subnet_id=“${var.subnet}”
tags=“${local.tags}”
vpc_security_group_ids=[“${local.vpc_security_group_ids}”]
用户\u数据=${local.start\u sh}
#开始吃蝗虫。
sh${local.start\u sh}
EOF
}
资源“aws_实例”“蝗虫_从属”{
count=“${var.num_实例-1}”
ami=“${var.instance_ami}”
instance_type=“${var.instance_type}”
key\u name=“${var.instance\u ssh\u key}”
subnet_id=“${var.subnet}”
tags=“${local.tags}”
vpc_security_group_ids=[“${local.vpc_security_group_ids}”]
用户\数据=${local.蝗虫\主机\文件}
#将蝗虫启动脚本写入实例。
echo“nohup${local.蝗虫_slave_cmd}&”>${local.start_sh}
#开始吃蝗虫。
sh${local.start\u sh}
EOF
}
如果在启动
locust\u master
实例后,我将SSH到该实例中,我会看到
/home/admin/start.sh
脚本,但它似乎没有运行,因为我没有看到
nohup.out
文件,并且
locust
不在我的运行进程中。如果我在该主机上手动运行相同的
sh/home/admin/start.sh
脚本,服务将启动,我可以断开与主机的连接并仍然访问它。同样的问题也出现在主机上

是什么原因导致在aws_实例用户_数据中运行
start.sh
?在用户_数据中执行脚本时,我是否应该注意任何问题


非常感谢

谢谢你的提示!我不知道那个日志文件,它确实指出了这一点。这是一个相对的路径问题。我假设
user\u data
命令将以
/home/admin
作为工作目录执行,因此
ocast
无法找到
ocastfile.py
文件。使用hocustfile.py的绝对路径解决了这个问题。
/var/log/cloud init output.log
中有什么有用的东西吗?