Amazon web services 如何通过chef将域名传递给Nginx conf
我已经通过chef安装了Nginx,但我必须将“AWS实例公共IP传递给chef Recipe” 我正在创建AWS实例,并通过Chef在该实例上安装了我的应用程序 我必须使用默认安装方法和nginx.conf配置文件运行nginxAmazon web services 如何通过chef将域名传递给Nginx conf,amazon-web-services,nginx,chef-infra,Amazon Web Services,Nginx,Chef Infra,我已经通过chef安装了Nginx,但我必须将“AWS实例公共IP传递给chef Recipe” 我正在创建AWS实例,并通过Chef在该实例上安装了我的应用程序 我必须使用默认安装方法和nginx.conf配置文件运行nginx 那么,我们如何在我的Nginx配置中使用新创建的实例Public IP或EC-2 URL来代替server_name,以便我可以浏览URL?或者如何将域名传递到Nginx.conf?您可以使用EC2元数据: curl http://169.254.169.254/la
那么,我们如何在我的Nginx配置中使用新创建的实例Public IP或EC-2 URL来代替server_name,以便我可以浏览URL?或者如何将域名传递到Nginx.conf?您可以使用EC2元数据:
curl http://169.254.169.254/latest/meta-data/public-ipv4
curl http://169.254.169.254/latest/meta-data/public-hostname
要获取所有可用密钥的列表,请尝试以下操作:
curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
product-codes
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
但是服务器名称可以为空,请参见:
如果服务器块中未定义服务器名称,则nginx使用
空名称作为服务器名称。0.8.48之前的Nginx版本使用机器的主机名作为服务器
本例中的名称。如果服务器名称定义为“$hostname”(0.9.4),
使用机器的主机名
您可以利用ohai插件ec2,它提供了正确的属性,对于这种情况,主要是
节点['ec2']['public\u ipv4']
缺点是taht ohai无法猜测自己您在AWS实例上,并且没有运行插件,为此您必须创建一个提示文件,当然这有一个解决方案
在chef run中也有创建提示的示例,但它们在我看来相当复杂,下面是我要做的(未经测试,如果出现问题,请评论):
您必须在跑步列表的早期添加此食谱,并且此ErcPipe的食谱必须在其
元数据中包含依赖“ohai”
。rb
才能加载ohai食谱。谢谢Anatoly。。。。但我使用的是厨师工具,所以在厨师工具中。如何将Aws控制台中的实例IP或EC2 URL传递到Nginx.conf?
# Resource to reload the ec2 plugin if the hint is created
ohai 'ec2' do
plugin 'ec2'
action :nothing
end
ohai_hint 'ec2' do
notifies :reload, 'ohai[ec2]', :immediately # to force ohai to run the ec2 plugin now
end