【问题标题】:How can I tag an EC2 instance using Ruby in Chef?如何在 Chef 中使用 Ruby 标记 EC2 实例?
【发布时间】:2013-02-27 22:36:53
【问题描述】:

我正在和 Chef 一起玩来启动 EC2 实例。一切运行良好,但 Chef 似乎无法标记实例。我错过了什么吗?

否则,实现此目的的首选 Ruby 库是什么?我可以在不需要额外宝石的情况下做到这一点吗?

谢谢

【问题讨论】:

    标签: ruby amazon-ec2 chef-infra


    【解决方案1】:

    knife-ec2 Gem 的 0.5.12 版支持在创建时使用 --tags 选项标记 EC2 实例。

    knife ec2 server create [... your options...] --tags Tag=Value
    

    【讨论】:

    • 酷。很高兴现在可以使用。感谢分享。
    • @jtimberman - 所以这标记了 AWS 中的服务器,但它是否也在 Chef 的上下文中标记了节点,还是你必须在单独的命令中这样做?即,您将在此处管理节点上的标签:wiki.opscode.com/display/chef/…
    • 我实际上是在这里查看代码:github.com/opscode/knife-ec2/blob/master/lib/chef/knife/… 在我运行时启用标签
    • 我通过执行以下操作来完成这项工作:sudo bundle update;须藤捆绑安装; sudo gem 卸载刀-ec2 -v 0.5.4;终于让标签工作了......它还发现它只在 ec2 中而不是在厨师中标签。最后,正如 jtimberman 所说,语法是 --tags attribute1=value1, attribute2=value2 。
    • 好吧,我希望标签显示在我的主厨中,这只标签 EC2 实例。 :(
    【解决方案2】:

    知道这是旧的,但正在浏览并发现它。另一种选择是使用AWS community cookbook - 假设你有关键的信用 - 如果你想以编程方式做事作为配方的一部分。

    aws = data_bag_item('mydatabag', 'creds')
    aws_resource_tag node['ec2']['instance_id'] do
      aws_access_key aws['access_key']
      aws_secret_access_key aws['secret_key']
      tags({
        "foo" => "bar"
      })
      action :update
    end
    

    【讨论】:

      【解决方案3】:

      通常厨师用于在实例上安装东西。我不确定你是如何用 chef 开始一个节点的,但也许你可以分享这个,我会扩展我的答案?

      否则,fog 是一个很棒的库来做这些事情。我只是浏览了一下源代码,它似乎也支持标记。

      获取雾:gem install fog

      【讨论】:

      • 这个答案似乎是合理的。我怀疑拥有 chef 自动标记意味着向 chef 节点提供代码,以及 AWS 帐户的凭据以使用雾库来实现这一点。
      • 正确。您需要将凭据分发到节点。我建议添加一个锁定的 AWS 用户帐户(使用 IAM)并通过 user-script 将其传递给实例。
      猜你喜欢
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      相关资源
      最近更新 更多