如果要检查服务器是否已启动或关闭,可以从Jenkins服务器执行此操作,但它需要能够在VPC内部访问您的实例。
---
name: Deployment playbook
hosts: all
tasks:
# Using port 2222 here but you can use port 80 or 443
- name: Wait for new deployment instance to come up.
local_action: wait_for host=your_new_deployment_host port=2222
- name: Shutdown or terminate old servers
local_action: command ec2-terminate-instances <your-old-server-instance-id>
要解决的VPC问题,您也许可以设置从服务器一个SSH隧道,在启动时您的詹金斯服务器(公网IP)是这样的:
ssh -f -N -R2222:localhost:22 [email protected] -S /tmp/control-socket
,如果你想检查HTTP在詹金斯8888端口
ssh -f -N -R8888:localhost:80 [email protected] -S /tmp/control-socket-http
这里的技巧是,你需要打开新的服务器顺序,因为你是人在Jenkins服务器上使用相同的端口8888进行检查。您也需要在完成检查后终止隧道。从你的詹金斯服务器:
name: Terminate tunnel HTTP
local_action: shell ssh -p 2222 localhost 'ssh -S /tmp/control-socket-http -O exit yourjenkinsserver.com'
name: Terminate tunnel SSH
local_action: shell ssh -p 2222 localhost 'ssh -S /tmp/control-socket -O exit yourjenkinsserver.com'
许多移动的部分,但应该做的伎俩。
你想让它全部自动化吗? – Mxx
是的,我们希望在提交被推送到某个分支时自动在CI服务器中创建它 – fortran