LINUX.ORG.RU
ФорумAdmin

Архитектура кода

 


0

1

Хочется передать переменную $psql при инициализации класса postgresql и использовать ее в postgresql::config

     3 node 'server.local' {

     30   $psql = {
     31     'db'     => 'dbname',
     32     'user'   => 'username',
     33     'passwd' => 'userpasswd',
     34   }

     38   class {'postgresql':}

     58 }
      1 class postgresql  {
      2 
      3   class { 'postgresql::install': }
      4   class { 'postgresql::service': }
      5   class { 'postgresql::config': }
      6 
      7 }
      1 class postgresql::config (
      2   $psql_db = 'dbname',
      3   $psql_user = 'username',
      4   $psql_passwd = 'userpasswd'
      5 ) {

     49 }

★★★★★

так и передавай их как параметры в класс

class {'postgresql': db => "dbname", user => "username", passwd => "userpasswd" }

а там в config уже юзай их. можешь и хэш передать параметром. Как больше нравится.

anonymous ()
Ответ на: комментарий от petav

Сделал так

class {'postgresql':config=>$psql}

Принял переменную config в классе postgresql

class postgresql (

  $config = undef,

)  {

  class { 'postgresql::install': }
  class { 'postgresql::service': }
  class { 'postgresql::config': }

}

Печатаю переменную config в подклассе postgresql::config

class postgresql::config (
) {
   notify{"\$config: ${config}":}
}

Notice: $config: Notice: /Stage[main]/Postgresql::Config/Notify[$config: ]/message: defined 'message' as '$config: '

petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 1)

Присмотрись к hiera, пока не насовал слишком много данных в манифесты.

Hoodoo ★★★★★ ()
Ответ на: комментарий от Hoodoo

Присмотрись к hiera, пока не насовал слишком много данных в манифесты.

Да, в этом есть проблема. К следующей редакции присмотрюсь. Спасибо.

petav ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.