【问题标题】:Getting EC2 instance name inside a Chef recipe在 Chef 配方中获取 EC2 实例名称
【发布时间】:2017-02-15 16:27:44
【问题描述】:

如何动态捕获运行 Chef 配方的 ec2 实例名称?

@coderanger 我正在使用下面的代码

Ohai.plugin(:EC2) do 
provides "ec2" 
depends "ec2" collect_data do 
instance_id = ec2['instance_id'] 
end 
end 

这里如何打印实例ID?

【问题讨论】:

    标签: amazon-web-services chef-infra


    【解决方案1】:

    假设您指的是 EC2 实例 ID,如果 EC2 ohai 插件已激活,您可以在 node['ec2']['instance_id'] 中找到它。如果实例是通过knife ec2 server create 创建的,这会自动为您完成,并且有一个不完美的自动启用会尝试猜测您是否在 EC2 上。如果这两种情况都不是,您可以通过在/etc/chef/ohai/hints/ec2.json 中创建一个空文件来强制它。

    【讨论】:

    • 我正在寻找实例名称而不是实例 ID。可以请指导
    • @Dave - 我现在正在处理同样的问题。 ec2 实例名称不是元数据的一部分,它是一个标签。因此,您需要在您的实例上执行 aws ec2 describe-instances 并从那里获取它。
    • 不幸的是,没有直接的方法可以从实例本身获取标签数据。您可以使用具有运行describe-instance API 调用权限的 IAM 实例配置文件,然后使用它,但您不能将其限制为“仅自己”,因此每个服务器也可以看到其他所有服务器,这可能会产生安全后果.亚马逊似乎认为标签不是其 API 的一部分,不应该用于自动化。
    • @coderanger 我正在使用下面的代码 Ohai.plugin(:EC2) do provides "ec2" depends "ec2" collect_data do instance_id = ec2['instance_id'] end end 如何在此处打印实例 ID ?
    • 评论不保留格式,请将代码添加到您的问题中。
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多