如何在EC2实例中使用only_if作为区域

时间:2017-02-27 23:37:25

标签: amazon-ec2 chef ohai-gem

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

我也尝试过这种方式同样的负面结果 节点[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}”,

1 个答案:

答案 0 :(得分:2)

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

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

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