【问题标题】:How do I use the only_if for regions in EC2 instances如何将 only_if 用于 EC2 实例中的区域
【发布时间】:2017-02-27 23:37:25
【问题描述】:

我正在尝试设置 only_if 配方,我只希望在我们的东部地区使用 file1,在西部地区使用 File2。现在的结果是,由于 only_if,客户端绕过了说明书(文件)。我查看了日志,但它们的信息量不是很大。所以我不知道为什么它不起作用。

我也尝试过这种方法,结果相同。
节点[ec2][placement_availability_zone]

cookbook_file "/dir/dir/dir/file.json" do
only_if { node['ec2']['region'] == "us-east-1"}
  source "dir/file1.json"
  owner "user"
  group "group"
  action :create
  notifies :restart, "service[app-client]", :delayed
end

cookbook_file "/etc/dir/dir/file.json" do
only_if { node['ec2']['region'] == "us-west-2"}
  source "dir/file2.json"
  owner "user"
  group "group"
  action :create
  notifies :restart, "service[app-client]", :delayed
end

这是同一服务器上的 ohai 结果。

ohai | grep region
  "dm_region_hash": {
  "json?": "{\n  \"devpayProductCodes\" : null,\n  \"privateIp\" :        \”0.0.0.0\”,\n  \"availabilityZone\" : \"us-west-2c\",\n  \"version\" : \”date\”,\n  \"region\" : \"us-west-2\",\n  \"instanceId\" : \”ID\”,\n  \"billingProducts\" : null,\n  \"instanceType\" : \"t2.micro\",\n  \"accountId\" : \"\",\n  \"kernelId\" : null,\n  \"ramdiskId\" : null,\n  \"architecture\" : \"x86_64\",\n  \"imageId\" : \”ami-111111\”,\n  \"pendingTime\" : \”date\time\”\n}”,

【问题讨论】:

    标签: amazon-ec2 chef-infra ohai-gem


    【解决方案1】:

    因此,出于我完全无法理解的原因,您实际上无法通过 EC2 元数据系统获取该区域。您可以获得可用区,幸运的是,该区域始终只是 AZ 名称,最后一个字符被剪掉:

    node['ec2']['placement_availability_zone'].chop
    

    只希望他们永远不会创建一个超过 26 个可用区的区域,这样应该可以正常工作。

    【讨论】:

    • 谢谢!!!!你的没有用,但它让我找到了答案。我不得不使用only_if { node['ec2']['placement_availability_zone'].chop == "us-east-1"}
    • 您将能够(最终)从 Chef 13 开始在节点属性中获取区域。discourse.chef.io/t/chef-client-13-released/10735
    • @Nic 不知道你为什么这么认为。 Chef 13 已在不久前发布,但如果它不在 EC2 元数据中,我们将无法解决此问题。
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2021-12-03
    • 2019-03-19
    • 2013-12-15
    相关资源
    最近更新 更多