Laravel Envoy 通过 SSH 进入堡垒服务器,然后通过 SSH 进入单独的私有 Web 服务器,stdout 被拆分成新的行

Laravel Envoy to SSH into bastion server, then, SSH into individual private web servers, stdout is split into new lines

我们的 infrastructure/challenges 很有趣,我没有在网上或其他 SO 问题上找到任何太相关的内容。

我们的 build 服务器与我们的 Web 服务器位于不同的 VPC 中,后者是私有的。所以 build > web server 是不可能的。我在本地使用两个 VirtualBox VM 进行概念验证,没有问题。使用两个 VM 在本地一切正常。

我们的部署将是 build > bastion > webserver

我正在研究一些 Envoy 脚本,这些脚本将由 GitLab 的 CI 触发,其中:

VM1 Envoy.blade.php:

@task('deploy:code', ['on' => 'web'])
    ssh ubuntu@10.0.2.15 -p 22 -tt
    /home/ubuntu/deploy.sh
@endtask

VM2 deploy.sh:

$ cat deploy.sh
echo "hello!"

本地主机命令:

 envoy run deploy:code --a=a --b=b --c=c

输出:

[ubuntu@127.0.0.1 -p 10022]: /home/ubuntu/deploy.sh
[ubuntu@127.0.0.1 -p 10022]: Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-193-generic x86_64)
[ubuntu@127.0.0.1 -p 10022]: * Documentation:  https://help.ubuntu.com
[ubuntu@127.0.0.1 -p 10022]: * Management:     https://landscape.canonical.com
[ubuntu@127.0.0.1 -p 10022]: * Support:        https://ubuntu.com/advantage
[ubuntu@127.0.0.1 -p 10022]: 105 packages can be updated.
[ubuntu@127.0.0.1 -p 10022]: 86 updates are security updates.
[ubuntu@127.0.0.1 -p 10022]: New release '18.04.5 LTS' available.
[ubuntu@127.0.0.1 -p 10022]: Run 'do-release-upgrade' to upgrade to it.
[ubuntu@127.0.0.1 -p 10022]: Last login: Fri Aug 27 15:51:11 2021 from 10.0.2.15
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$ /h
[ubuntu@127.0.0.1 -p 10022]: ome
[ubuntu@127.0.0.1 -p 10022]: /ub
[ubuntu@127.0.0.1 -p 10022]: un
[ubuntu@127.0.0.1 -p 10022]: tu/
[ubuntu@127.0.0.1 -p 10022]: depl
[ubuntu@127.0.0.1 -p 10022]: oy.
[ubuntu@127.0.0.1 -p 10022]: sh
[ubuntu@127.0.0.1 -p 10022]: hello!
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$

任何人都可以建议我不能将输出分成多行,而只是在欢迎 message/MOTD 之后回显 hello!,and/or 没有多行输出?

周一早上新鲜的眼睛把我带到这里:

https://unix.stackexchange.com/questions/572412/when-running-local-script-on-remote-server-via-multiple-ssh-script-is-split-int

正在替换

ssh ubuntu@10.0.2.15 -p 22 -tt

ssh ubuntu@10.0.2.15 -p 22 -t

导致:

Pseudo-terminal will not be allocated because stdin is not a terminal.

后来厚着脸皮搜了一下,建议把-t改成-T

https://appuals.com/fix-pseudo-terminal-will-not-be-allocated-because-stdin-is-not-a-terminal/

ssh ubuntu@10.0.2.15 -p 22 -T

成功了

[ubuntu@127.0.0.1 -p 10022]: Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-193-generic x86_64)
[ubuntu@127.0.0.1 -p 10022]: * Documentation:  https://help.ubuntu.com
[ubuntu@127.0.0.1 -p 10022]: * Management:     https://landscape.canonical.com
[ubuntu@127.0.0.1 -p 10022]: * Support:        https://ubuntu.com/advantage
[ubuntu@127.0.0.1 -p 10022]: 105 packages can be updated.
[ubuntu@127.0.0.1 -p 10022]: 86 updates are security updates.
[ubuntu@127.0.0.1 -p 10022]: New release '18.04.5 LTS' available.
[ubuntu@127.0.0.1 -p 10022]: Run 'do-release-upgrade' to upgrade to it.
[ubuntu@127.0.0.1 -p 10022]: hello!