我使用AWS代码部署代理,并通过bitbucket插件将我的项目部署到服务器。
代码部署代理首先执行脚本文件,该脚本文件包含执行我的spring-boot项目的命令。
因为我有两个环境,一个是开发环境,另一个是生产环境。我想让脚本根据环境做不同的事情,即两个不同的实例。
我的计划是获取映射的aws静态ip地址,并从中确定环境(生产或阶段)。
如何通过sh命令拉取弹性ip地址。
编辑过的
发布于 2018-06-09 07:15:58
静态IP将起作用。
这里有一种更自然的CodeDeploy方法来解决这个问题--设置2个CodeDeploy部署组,一个用于开发环境,另一个用于生产环境。然后,您可以在脚本中使用CodeDeploy将在部署期间设置的环境变量,以了解要部署到哪个环境。
这是一篇关于如何使用CodeDeploy环境变量的博客文章:https://aws.amazon.com/blogs/devops/using-codedeploy-environment-variables/
发布于 2018-05-25 21:31:25
您可以执行以下操作:
id=$( curl http://169.254.169.254/latest/meta-data/instance-id )
eip=$( aws ec2 describe-addresses --filter Name=instance-id,Values=${id} | aws ec2 describe-addresses | jq .Addresses[].PublicIp --raw-output )
上面的代码从元数据中获取instance-id
,然后使用该aws cli
从元数据中查找按id过滤的弹性IP。使用jq
,可以将此输出解析为您要查找的IP。
发布于 2018-05-25 21:37:30
查询元数据服务器
eip=`curl -s 169.254.169.254/latest/meta-data/public-ipv4`
echo $eip
https://stackoverflow.com/questions/50526674
复制相似问题