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 触发,其中:
- 通过 SSH 连接到我们的
build
服务器
- 运行
envoy run deploy:code --arg1=a --arg2=b --arg3=c
- envoy 然后通过 SSH 进入我们的堡垒服务器
- 运行另一个脚本(Envoy 最终
deploy.sh
现在)将代码部署到我们的私有 Web 服务器
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 没有多行输出?
周一早上新鲜的眼睛把我带到这里:
正在替换
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!
我们的 infrastructure/challenges 很有趣,我没有在网上或其他 SO 问题上找到任何太相关的内容。
我们的 build
服务器与我们的 Web 服务器位于不同的 VPC 中,后者是私有的。所以 build
> web server
是不可能的。我在本地使用两个 VirtualBox VM 进行概念验证,没有问题。使用两个 VM 在本地一切正常。
我们的部署将是 build
> bastion
> webserver
。
我正在研究一些 Envoy 脚本,这些脚本将由 GitLab 的 CI 触发,其中:
- 通过 SSH 连接到我们的
build
服务器 - 运行
envoy run deploy:code --arg1=a --arg2=b --arg3=c
- envoy 然后通过 SSH 进入我们的堡垒服务器
- 运行另一个脚本(Envoy 最终
deploy.sh
现在)将代码部署到我们的私有 Web 服务器
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 没有多行输出?
周一早上新鲜的眼睛把我带到这里:
正在替换
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!