0

我想稍后在我的 Chef 食谱中使用私有 IP 地址,我怎样才能在变量中捕获它。我的代码看起来像......

execute 'privateip' do
command 'curl http://169.254.169.254/latest/meta-data/local-ipv4'
action :run
end

我想在变量中捕获 curl 命令的输出,例如..

privip = 'curl http://169.254.169.254/latest/meta-data/local-ipv4'

然后在配置文件中使用该值,或者有什么方法可以获取 aws 实例的私有 IP 地址,因为 ohai 不支持该privateip属性。任何帮助将不胜感激。

4

1 回答 1

1

您可以读取属性local-ipv4中的值node['ec2']['local_ipv4']。IIRC 所有 EC2元数据都包含在node['ec2'].

如果您仍然喜欢运行命令,可以使用shell_out!帮助程序:

output = shell_out!('mycommand --some --arguments').stdout

正如他们在评论中所说,对于这种特殊情况,您还可以使用Chef::HTTP该类:

http = Chef::HTTP.new('http://169.254.169.254')
privip = http.get('/latest/meta-data/local-ipv4')
于 2016-01-06T13:08:52.233 回答