Не могу получить "удаленный exec" для запуска Tomcat - PullRequest
0 голосов
/ 01 ноября 2018

При подготовке экземпляра я использую «remote-exec» для выполнения некоторых команд, а затем запускаю экземпляр tomcat через terraform. Это выглядит примерно так:

resource "null_resource" "mount_fss_on_DFSrvr" {
depends_on = ["oci_core_instance.DFSrvr",
  "oci_file_storage_export.export_FileListener_FileListenerMount",
]

count = "${var.proddfsrvr_count}"

provisioner "remote-exec" {
  connection {
    agent       = false
    timeout     = "15m"
    host        = "${oci_core_instance.DFSrvr.*.public_ip[count.index % var.proddfsrvr_count]}"
    user        = "opc"
    private_key = "${file(var.ssh_private_key)}"
  }

  inline = [
   "some commands",
    "./catalina.sh start",
    "exit"
  ]
}

}

Выходные данные показывают, что tomcat был запущен, но когда я смотрю на экземпляр, журналы показывают, что он не был запущен (нет регистрации). Я могу ssh в экземпляр и запустить "./catalina.sh start", и он отлично работает. Я также попытался создать службу и запустить "suto service tomee start" вместо "./catalina.sh start" в встроенной команде remote-exec, и это тоже не работает. Что я тут не так делаю?

  null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_BASE:   /apache-tomee-plus-7.0.4
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_HOME:   /apache-tomee-plus-7.0.4
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CATALINA_TMPDIR: /apache-tomee-plus-7.0.4/temp
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using JRE_HOME:        /usr
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Using CLASSPATH:       /apache-tomee-plus-7.0.4/bin/bootstrap.jar:/apache-tomee-plus-7.0.4/bin/tomcat-juli.jar
null_resource.mount_fss_on_DFSrvr[1] (remote-exec): Tomcat started.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

У меня была та же проблема, но во время работы веб-приложения на Python. Я предполагаю, что проблема здесь в том, что когда вы запускаете команды через remote-exec, он выходит из оболочки после завершения. Поэтому, когда вы входите в машину через ssh, она открывается через новую оболочку, вы должны добавить префикс nohup к вашей команде, и я считаю, что это должно сработать. Это сделало это для меня все же. Используйте &, если вы хотите, чтобы он работал в фоновом режиме и выходил из удаленного exec. Кроме того, вы можете захотеть добавить «сна 20» к встроенным командам, это даст tomcat время для запуска до выхода провайдера.

встроенный = [ "некоторые команды", "nohup ./catalina.sh start &", "спать 20", ]

0 голосов
/ 02 ноября 2018

Попробуйте дать ему абсолютный путь, а не ./ что-то вроде source ~/tmp/catalina.sh. Это может начаться не там, где вы думаете.

Затем удалите строку exit. Это может быть выход до завершения установки. Некоторые вещи заканчиваются перед записью на диск. Вы также можете попробовать source ~/path/catalina; sync

Кроме того, нужны ли вообще разрешения sudo?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...