如何在 EC2 实例中为区域使用 only_if
How do I use the only_if for regions in EC2 instances
我正在尝试设置一个 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}”,
因此,出于我完全无法理解的原因,您实际上无法通过 EC2 元数据系统获取区域。您可以获取可用区,幸运的是,该区域始终只是 AZ 名称,最后一个字符被截断:
node['ec2']['placement_availability_zone'].chop
只是希望他们永远不会创建一个拥有超过 26 个可用区的区域,这样应该可以正常工作。
我正在尝试设置一个 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}”,
因此,出于我完全无法理解的原因,您实际上无法通过 EC2 元数据系统获取区域。您可以获取可用区,幸运的是,该区域始终只是 AZ 名称,最后一个字符被截断:
node['ec2']['placement_availability_zone'].chop
只是希望他们永远不会创建一个拥有超过 26 个可用区的区域,这样应该可以正常工作。