我在AWS中有一个Elastic Load Balancer。我在3个实例中部署了node.js代码,并且我使用pm2来更新我的代码,但我需要以这种方式手动执行:
当我对master或其他分支(如生产分支)进行新的提交时,如何更新所有机器中的所有代码?
感谢。
答案 0 :(得分:1)
您可以编写一个脚本,例如bash
来解决此问题:
# This will run your local script update.sh on the remote
ssh serverIp1 "bash -s" < ./update.sh
然后在本地update.sh
中,您可以将代码添加到git pull并重新加载:
# This code will run on the remote
git pull
# Update
# Other commands to run on remote host
您还可以拥有一个脚本,为您的所有计算机执行所有这些操作:
ssh serverIp1 "bash -s" < ./update.sh
ssh serverIp2 "bash -s" < ./update.sh
ssh serverIp3 "bash -s" < ./update.sh
或事件更好:
for ip in serverIp1 serverIp2 serverIp3; do
(ssh $ip "bash -s" < ./update.sh)
done
答案 1 :(得分:1)
另一种选择是ElasticBeanstalk,特别是如果你使用&#34;纯&#34;节点解决方案(不是实例上的大量额外服务)。使用beanstalk,您可以提供项目的git ref或ZIP文件,它可以处理部署(启动新实例,运行状况检查,获取负载平衡,删除旧实例等)。在某些方面,它是自动化的你现在拥有的部署版本,因为你仍然会有EC2实例,负载均衡器等等。
答案 2 :(得分:1)
答案 3 :(得分:0)
好的,谢谢你的答案,但我认为对我来说最好的选择是AWS CodeDeploy。
我不知道为什么在提出问题之前我没有找到这个......