#shell #ansible #runtime-error #shellexecute #raw
Вопрос:
Мой целевой сервер ansible-SunOS.
Я получаю ошибку Ansible Shared connection to myhost1 closed.
при использовании необработанного модуля.
Ошибка не отображается, когда я меняю модуль на shell
«однако», выполнение скрипта start.sh
не происходит (очевидно из вывода ps
команды), поэтому я хочу использовать raw
- name: "START ADP SERVICES"
raw: "source ~/.profile; sh /web/external_products/springboot/{{ vars[ environ '_folder'] }}/veladpservice/bin/start.sh veladpservice.jar {{ vars[ environ '_folder'] }} {{ allpass }}"
Вывод при использовании shell
модуля:
TASK [START ADAPTER SERVICES] **************************************************
task path: /web/playbooks/automation/veladp/va_action.yml:32
changed: [myhost1] => {"changed": true, "cmd": "source ~/.profile; sh /web/external_products/springboot/stg/veladpservice/bin/start.sh veladpservice.jar stg WEB_USER apps_user_2021_2378 MSPW435 MSPW435 MSPW445 MSPW445 PETWEB440 Temp_45678 MSPW460 Temp_3456789012 MSPW430 Temp_1234567890 MSPW455 Temp_09876", "delta": "0:00:01.009433", "end": "2021-10-28 05:47:51.277868", "rc": 0, "start": "2021-10-28 05:47:50.268435", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
При использовании raw
модуля:
TASK [START adp SERVICES] *********************************************************************************
task path: /web/playbooks/automation/veladprestart/va_action.yml:32
<myhost1> ESTABLISH SSH CONNECTION FOR USER: myuser1
<myhost1> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="myuser1"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ControlPath=/home/myuser1/.ansible/cp/cc89a5347e -tt myhost1 'source ~/.profile; /web/external_products/springboot/stg/veladpservice/bin/start.sh veladpservice.jar stg MSP_WEB_USER Marsh_apps_user_2021_2378 MSPW435 MSPW435 MSPW445 MSPW445 PETWEB440 Temp_345678 MSPW460 Temp_3456789012 MSPW430 Temp_1234567890 MSPW455 Temp_0987654321'
<myhost1> (0, b'', b"OpenSSH_8.4p1 (CentrifyDC build 5.7.1-346) , OpenSSL 1.1.1g 21 Apr 2020rndebug1: Reading configuration data /etc/centrifydc/ssh/ssh_configrndebug1: /etc/centrifydc/ssh/ssh_config line 3: Applying options for *rndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/myuser1/.ssh/known_hosts'rndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/myuser1/.ssh/known_hosts2'rndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disablingrndebug1: auto-mux: Trying existing masterrndebug2: fd 3 setting O_NONBLOCKrndebug2: mux_client_hello_exchange: master version 4rndebug3: mux_client_forwards: request forwardings: 0 local, 0 remoterndebug3: mux_client_request_session: enteringrndebug3: mux_client_request_alive: enteringrndebug3: mux_client_request_alive: done pid = 21893rndebug3: mux_client_request_session: session request sentrndebug1: mux_client_request_session: master session id: 2rndebug3: mux_client_read_packet: read header failed: Broken piperndebug2: Received exit status from master 0rnShared connection to myhost1 closed.rn")
changed: [myhost1] => {
"changed": true,
"rc": 0,
"stderr": "OpenSSH_8.4p1 (CentrifyDC build 5.7.1-346) , OpenSSL 1.1.1g 21 Apr 2020rndebug1: Reading configuration data /etc/centrifydc/ssh/ssh_configrndebug1: /etc/centrifydc/ssh/ssh_config line 3: Applying options for *rndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/myuser1/.ssh/known_hosts'rndebug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/myuser1/.ssh/known_hosts2'rndebug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disablingrndebug1: auto-mux: Trying existing masterrndebug2: fd 3 setting O_NONBLOCKrndebug2: mux_client_hello_exchange: master version 4rndebug3: mux_client_forwards: request forwardings: 0 local, 0 remoterndebug3: mux_client_request_session: enteringrndebug3: mux_client_request_alive: enteringrndebug3: mux_client_request_alive: done pid = 21893rndebug3: mux_client_request_session: session request sentrndebug1: mux_client_request_session: master session id: 2rndebug3: mux_client_read_packet: read header failed: Broken piperndebug2: Received exit status from master 0rnShared connection to myhost1 closed.rn",
"stderr_lines": [
"OpenSSH_8.4p1 (CentrifyDC build 5.7.1-346) , OpenSSL 1.1.1g 21 Apr 2020",
"debug1: Reading configuration data /etc/centrifydc/ssh/ssh_config",
"debug1: /etc/centrifydc/ssh/ssh_config line 3: Applying options for *",
"debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/myuser1/.ssh/known_hosts'",
"debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/myuser1/.ssh/known_hosts2'",
"debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling",
"debug1: auto-mux: Trying existing master",
"debug2: fd 3 setting O_NONBLOCK",
"debug2: mux_client_hello_exchange: master version 4",
"debug3: mux_client_forwards: request forwardings: 0 local, 0 remote",
"debug3: mux_client_request_session: entering",
"debug3: mux_client_request_alive: entering",
"debug3: mux_client_request_alive: done pid = 21893",
"debug3: mux_client_request_session: session request sent",
"debug1: mux_client_request_session: master session id: 2",
"debug3: mux_client_read_packet: read header failed: Broken pipe",
"debug2: Received exit status from master 0",
"Shared connection to myhost1 closed."
],
"stdout": "",
"stdout_lines": []
}
Обновление предложения по публикации:
Я также попытался отключить процесс, используя disown
, как показано ниже, но по ps
-прежнему не отображается запущенный процесс:
- name: "START ADAPTER SERVICES"
shell: "source ~/.profile amp;amp; sh /web/external_products/springboot/{{ vars[ environ '_folder'] }}/velocityadapterservice/bin/start.sh velocityadapterservice.jar {{ vars[ environ '_folder'] }} {{ allpass }} amp;; disown %%"
~/.profile
amp; start.sh
но у вас 744 разрешения, и владелец myuser1
Примечание: Работает тот же процесс, что и вручную!!
Не могли бы вы, пожалуйста, предложить?
Комментарии:
1. Предложение состоит в том , чтобы использовать
.../start.sh ... amp;
иdisown
, чтобы SIGHUP не убивал ваш процесс при выходе из оболочки ansible, или, еще лучше, использовать systemd как разумную настройку2. Можете ли вы рассказать мне больше об отречении и о том, как его использовать здесь
3. gnu.org/software/bash/manual/html_node/…
4.
raw
модуль @mdaniel по-прежнему выходит из строя с той же ошибкой.shell
Модуль работает, но скрипт не запускается. Ниже приведено то, что я сделал по вашему предложению. ` — имя: «ЗАПУСК СЛУЖБ АДАПТЕРА» оболочка: «источник ~/.профиль amp;amp; sh /web/внешние продукты/springboot/{{ vars[ environ ‘_folder’] }}/velocityadapterservice/bin/start.sh velocityadapterservice.jar {{ vars[ окружающая среда ‘_folder’] }} {{ allpass }} amp;; откреститься %%» `
Ответ №1:
Предложение @mdaniel дало мне ключ к разгадке. Однако nohup
помог решить проблему и до сих пор не уверен в disown
этом . Ниже приведено решение.
- name: "START ADAPTER SERVICES"
shell: "source ~/.profile amp;amp; nohup /web/external_products/springboot/{{ vars[ environ '_folder'] }}/velocityadapterservice/bin/start.sh velocityadapterservice.jar {{ vars[ environ '_folder'] }} {{ allpass }} amp;"