Puppet 클래스/리소스 간에 정보를 통신할 수 있는 방법이 있습니까?

Puppet 클래스/리소스 간에 정보를 통신할 수 있는 방법이 있습니까?

클래스/리소스 간에 정보를 통신할 수 있는 방법이 있나요?

내보낸 리소스를 사용하는 Icinga에서 모니터링하도록 설정하기 위해 모든 노드에 포함하려는 프로필이 있습니다.

class profile::icinga2::host {
  @@::icinga2::object::host { $::fqdn:
      display_name     => $::fqdn,
      address          => $::ipaddress,
      vars             => hiera_hash('icinga_vars',{}) + {
         "dns_lookup" => $::fqdn,
         "dns_expected_answers" => $::ipaddress,
      },
      target           => "/etc/icinga2/conf.d/puppet.d/${::fqdn}.conf"
  }
}

그런 다음 이러한 리소스는 리소스 수집기를 사용하여 icinga 서버에서 선언됩니다.

<<| icinga2::object::host|>>

profile::icinga2::host 리소스의 vars 항목을 사용자 정의하고 현재 노드의 hiera yaml 파일에 icinga_vars 데이터를 추가하고 싶습니다. 예:

icinga_vars:
    http_uri: "http://puppetboard.zoo.lan" 

그러나 이상적으로는 노드 자체에 포함된 모든 클래스 내에서 이 작업을 수행합니다.

다른 클래스에서 읽을 수 있는 데이터를 클래스에 설정하는 방법이 있습니까?

사실은 이를 수행하는 올바른 방법이 아닌 것 같고 puppetdb도 마찬가지입니다. 대안이 있습니까?

예를 들어 icinga2::variable 클래스를 생성하고 이를 profile::icinga2::host 클래스 외부에서 선언한 다음 profile::icinga2::host 클래스에서 반복할 수 있습니까? 그 작업은 어떻게 수행되고 종속성은 어떻게 처리됩니까? 예를 들어 icinga2::variables가 profile::icinga2::host에서 읽을 준비가 되었는지 확인해야 합니다. 감사합니다.

관련 정보