diff --git a/lib/kamal/configuration/accessory.rb b/lib/kamal/configuration/accessory.rb index 819f309b..50f70e58 100644 --- a/lib/kamal/configuration/accessory.rb +++ b/lib/kamal/configuration/accessory.rb @@ -208,7 +208,21 @@ class Kamal::Configuration::Accessory def hosts_from_tags if accessory_config.key?("tags") - accessory_config["tags"].flat_map { |tag| config.tag(tag)&.hosts } + accessory_config["tags"].flat_map { |tag| extract_hosts_from_config_with_tag(tag) } + end + end + + def extract_hosts_from_config_with_tag(tag) + if config.raw_config.servers.is_a?(Hash) + config.raw_config.servers.flat_map do |(role, servers_in_role)| + servers_in_role.collect do |host| + if host.is_a?(Hash) && host.values.first.include?(tag) + host.keys.first + end + end + end.compact + else + [] end end diff --git a/test/configuration/accessory_test.rb b/test/configuration/accessory_test.rb index ee6d6856..0e75c629 100644 --- a/test/configuration/accessory_test.rb +++ b/test/configuration/accessory_test.rb @@ -111,6 +111,7 @@ class ConfigurationAccessoryTest < ActiveSupport::TestCase assert_equal [ "1.1.1.5" ], @config.accessory(:mysql).hosts assert_equal [ "1.1.1.6", "1.1.1.7" ], @config.accessory(:redis).hosts assert_equal [ "1.1.1.1", "1.1.1.2" ], @config.accessory(:monitoring).hosts + assert_equal [ "1.1.1.1" ], @config.accessory(:proxy).hosts end test "missing host" do