Как использовать only_if для регионов в экземплярах EC2
Я пытаюсь настроить рецепт 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}”,
1 ответ
Таким образом, по причинам, которые мне совершенно неизвестны, вы не можете получить регион через систему метаданных EC2. Вы можете получить зону доступности, и, к счастью, регионом всегда является только имя AZ с отрубленным последним символом:
node['ec2']['placement_availability_zone'].chop
Просто надеюсь, что они никогда не сделают регион с более чем 26 AZ, и это должно работать нормально.