Я настраиваю свои службы firewalld через коды марионеток, как показано ниже. Мой класс относится к данным hiera для получения данных
class profile::base::firewalld(
Hash $zones = {},
Hash $ports = {},
Hash $services = {},
Hash $rich_rules = {},
Hash $custom_services = {},
Hash $add_services = {},
Hash $remove_services = {},
Array $zone_name = [],
){
class{'firewalld':
zones => $zones,
ports => $ports,
services => $services,
rich_rules => $rich_rules,
custom_services => $custom_services,
}
contain firewalld
#remove firewalld services (ipp-client, samba-client)
$remove_services.each | String $zone, Array[String] $services|{
$services.each | String $service |{
firewalld_service {"${service}":
ensure => absent,
service => $service,
zone => $zone,
}
}
}
#add zone zPrivate zInternet zTier1
$zone_name.each | String $zone_names |{
firewalld_zone{"${zone_names}":
ensure => present,
target => 'default',
purge_rich_rules => true,
purge_services => true,
purge_ports => true,
}
}
Я хочу использовать этот класс несколько раз. Например. Если я хочу повторно использовать profile :: base :: firewalld, но я не знаю, как ссылаться на данные hiera с переменными дифференциала. Может ли кто-нибудь предоставить мне хороший способ решить мою проблему. Коды ниже - мой подход, но он не работает
class profile::bs::firewalld(
Hash $zones = {},
Hash $ports = {},
Hash $services = {},
Hash $rich_rules = {},
Hash $custom_services = {},
Hash $add_services = {},
Hash $remove_services = {},
Array $zone_name = [],
){
include profile::base::firewalld
}