Как использовать объявленный класс несколько раз в кукольном - PullRequest
0 голосов
/ 28 мая 2019

Я настраиваю свои службы 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
}
...