Я использую Terraform v0.11.7 и AWS provider 1.30 для создания среды для запуска нагрузочных тестов с locust, построенной на Debian. 9.5 AMI.
Мой модуль предоставляет num_instances
var, используемый для определения используемой командной строки locust. Ниже моя конфигурация.
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
}
Если я подключаюсь по SSH к экземпляру locust_master
после его запуска, я вижу сценарий /home/admin/start.sh
, но он не запускается, так как я не вижу файл nohup.out
и locust
не входит в мои запущенные процессы. Если я вручную запустил тот же сценарий sh /home/admin/start.sh
на этом хосте, служба запустится, и я смогу отключиться от хоста и по-прежнему получить к нему доступ. Та же проблема проявляется на locust_slave
хосте (ах).
Что может привести к сбою запуска start.sh
в aws_instance user_data? Есть ли какие-то ошибки, о которых я должен знать при выполнении скриптов в user_data?
Спасибо заранее!
/var/log/cloud-init-output.log
что-нибудь полезное? - person ydaetskcoR   schedule 09.08.2018