Amazon ec2 如何对EC2实例中的区域使用唯一的_if

Amazon ec2 如何对EC2实例中的区域使用唯一的_if,amazon-ec2,chef-infra,ohai-gem,Amazon Ec2,Chef Infra,Ohai Gem,我正在尝试设置一个唯一的如果配方,我只希望file1在我们的东部地区使用,File2在西部地区使用。现在的结果是,客户机绕过了cookbook(文件),因为只有当。我查看了日志,但它们的信息量不大。所以我不明白为什么它不起作用 我也尝试过这种方法,但也有同样的负面结果。 节点[ec2][placement\u availability\u zone] cookbook_file "/dir/dir/dir/file.json" do only_if { node['ec2']['region']

我正在尝试设置一个唯一的如果配方,我只希望file1在我们的东部地区使用,File2在西部地区使用。现在的结果是,客户机绕过了cookbook(文件),因为只有当。我查看了日志,但它们的信息量不大。所以我不明白为什么它不起作用

我也尝试过这种方法,但也有同样的负面结果。
节点[ec2][placement\u availability\u 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}”,

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

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

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

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

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

只希望他们永远不要让一个地区拥有超过26个AZ,这样会很好。

谢谢!!!!你的不起作用,但它让我找到了答案。我必须仅在{node['ec2']['placement\u availability\u zone']的情况下使用
@尼克不知道你为什么这么想。Chef 13刚刚发布,但是如果它不在EC2元数据中,我们就无法修复它。谢谢!!!!你的不起作用,但它让我找到了答案。我必须仅在{node['ec2']['placement\u availability\u zone']的情况下使用
@尼克不知道你为什么这么想。Chef 13不久前发布,但如果它不在EC2元数据中,我们无法修复它。