[英]AWS static ip address
我正在使用AWS代码部署代理,并通过bitbucket插件将项目部署到服务器。
代码部署代理首先执行脚本文件,该脚本文件具有执行我的spring-boot项目的命令。
由于我有两个环境,一个开发而另一个生产。 我希望脚本根据环境(即两个不同的实例)来做不同的事情。
我的计划是获取映射的aws静态ip地址,并从中确定环境(生产或阶段)。
如何通过sh命令获取弹性ip地址。
已编辑
静态IP将起作用。
解决此问题的一种更自然的CodeDeploy方法是-设置2个CodeDeploy部署组,一个用于开发环境,另一个用于生产环境。 然后,在脚本中,可以使用CodeDeploy在部署期间设置的环境变量来了解要部署到的环境。
这是有关如何使用CodeDeploy环境变量的博客文章: https ://aws.amazon.com/blogs/devops/using-codedeploy-environment-variables/
您可以执行以下操作:
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。
查询元数据服务器
eip=`curl -s 169.254.169.254/latest/meta-data/public-ipv4`
echo $eip
该解决方案与我最初提出的要求完全不符,但足以满足我的要求。
我只需要知道我所处的环境即可执行某些操作。 因此,我要做的是在一个独立的脚本文件中设置一个环境变量,在该脚本文件中设置了环境变量,该值是环境的值。 例如:在一个文件中说env-variables.sh export profile = stage
在必须根据环境执行命令的脚本文件中,我以这种方式访问它
source /test/env-variables.sh
echo current profile is $profile
if [ $profile = stage ]
then
echo stage
elif [ $profile = production ]
then
echo production
else
echo failure
fi
希望有人觉得有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.