我的雇主需要在 OpsWorks 中启动的 AWS ec2 实例上线后为其添加标签。
这些实例都是此堆栈中的 MS Windows Server 2012 R2 Base。目标是向堆栈 Foo 中启动的实例和堆栈 Bar 中的“应用程序”:“bar”添加自定义标签,如“application”:“foo”。
我找到了一个github repo chef-aws-tag,如果我在 Linux 上运行 Chef 11,我相信它会满足我的需求。OpsWorks 仅适用于 Windows Server 2012,并且仅适用于 Chef 12.2。
当我将 github 存储库中的 chef-aws-tag 配方添加到 Setup 生命周期事件时,实例在“running_setup”处失败,并带有“setup_failed”。
Chef 失败日志随后在 running_setup 阶段报告此失败:
INFO: HTTP Request Returned 412 Precondition Failed : No such cookbook: aws
ERROR: Running exception handlers
FATAL: Net::HTTPServerException: 412 "Precondition Failed "
这与 metadata.rb 中的依赖项匹配,即:depends 'aws', '>= 0.2.4'
我了解缺少依赖项。我不清楚如何实现这种依赖。配方在 S3 中,存储库 URL 是https://s3-us-west-2.amazonaws.com/employer/ec2instance-tagging.zip
当我将配方添加到配置生命周期事件时,机器可以正常联机,但未添加标签。ec2 实例显示“stock”标签;键 "opsworks:instance" 、 "opsworks:layer:foo_layer" 、 "opsworks:stack" 和 "Name" 都有我期望的值。我想通过配方添加的标签(“应用程序”、“团队”、“环境”)不存在。
自定义 JSON 在堆栈级别添加:
{ "aws-tag": {
"tags": {
"team": "specialteam",
"application": "foo",
"environment": "development"
}
}
}
是否有特定于 OpsWorks AWS 的食谱或食谱我应该在启动后调用以在实例上设置标签?我怎么称呼那个食谱?
我已阅读有关使用 OpsWorks 自定义应用程序部署的 AWS 博客文章。我是否缺少相同的“通过厨师在实例上设置 aws 标签”食谱或食谱,它位于 GitHub 上的Amazon Web Services - Labs存储库中?
github 上的aws opsworks-cookbooks说“对于 Chef 12.2 Windows 和 Chef 12 Linux,没有内置的食谱”,但我希望这是错误的 :-) 并且已经添加了我还没有找到的食谱。或者,希望有人已经这样做并在某处记录了它。
我正在按照这篇 AWS 博客文章快速探索 AWS OpsWorks 中的 Chef 环境(再次为 Linux 编写)和这个关于在 Opsworks 上调试 Chef 的 SF 问题进行故障排除