Как использовать 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, и это должно работать нормально.

Другие вопросы по тегам