Мне нужно запустить сервер отдыха Java с залом, который находится на машине с Ubuntu 18.04. Моя компания использует версию concourse 5.5.11. Код сервера написан на Java, поэтому достаточно простого java -jar <uber.jar>
в командной строке (см. ниже). В производстве у меня не будет этой простой роскоши, отсюда и мой вопрос.
У меня работает команда scp, которая копирует .jar из зала на целевую машину Ubuntu:
scp -i /tmp/key.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ./${NEW_DIR}/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST}:/var/www
Обратите внимание, что мой закрытый ключ передается с параметром -i, и я могу подтвердить, что он работает.
Я следил за этим другим SO Q & A, который казался многообещающим: -machine">Получение ssh для выполнения команды в фоновом режиме на целевой машине , но после нескольких вариантов предложенного решения и других ответов у меня все еще не запущена служба отдыха.
Я пробовал несколько перестановок этой строки в моем сценарии зала:
ssh -f -i /tmp/pvt_key1.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST} "bash -c 'nohup java -jar /var/www/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} -c \"/opt/testcerts/clientkeystore\" -w \"password\" > /dev/null 2>&1 &'"
Я пробовал с ключами -f и -t в ssh и без них, с перенаправлением файлового потока и без него, с nohup и командой фона Linux ('&') и без нее, а также с различными способами выхода из кавычек.
В приглашении bash эта строка успешно запускает мой сервер. Два переключателя необходимы для указания на сертификат и предоставления пароля:
java -jar rest-service.jar -c "/opt/certificates/clientkeystore" -w "password"
Я действительно думаю, что это возможно сделать в Concourse, но я застрял на этом этапе.