Puppet não passando parâmetro para o módulo personalizado

1

Então, eu tenho um módulo personalizado que apenas configura um servidor nginx simples, para aprender como fazer módulos de bonecos corretamente.

Mas parece que meus valores quando declaro que a classe não está sendo passada. Ela apenas usa os valores padrão.

Abaixo estão os meus bits de código de classe que importam, e o base.pp que estou usando no meu repo de controle.

Classe base init.pp :

class ufprovisioning (

    $webserver_manage   = $ufprovisioning::params::webserver_manage,
    $site_name          = $ufprovisioning::params::site_name,


) inherits ufprovisioning::params {

    contain ufprovisioning::install
    contain ufprovisioning::config
    contain ufprovisioning::service

    Class['::ufprovisioning::install'] -> Class['::ufprovisioning::config'] ~> Class['::ufprovisioning::service']
    Class['::ufprovisioning::install'] ~> Class['::ufprovisioning::service']
}

Classe do parâmetro params.pp :

class ufprovisioning::params {

    $site_name = "webserver.test"
    $webserver_manage = true

}

Classe de configuração config.pp :

class ufprovisioning::config {

    assert_private()

    $webserver_manage   = $::ufprovisioning::params::webserver_manage
    $site_name          = $::ufprovisioning::params::site_name


    nginx::resource::server { 'cclloyd.com':
        ensure          =>  present,
        server_name     =>  [$site_name],
        www_root        =>  "/var/www/${site_name}",
        listen_port     =>  80,
        ssl             =>  false,
    }
}

Classe de controle base.pp :

class profile::base {
    class { '::ntp': }
    class { 'ufprovisioning':
        site_name => "examplesite.test",
        webserver_manage => true,
    }
}
    
por cclloyd 06.03.2018 / 04:13

1 resposta

0

Sua classe ufprovisioning::config está definindo valores de variável diretamente de ufprovisioning::params , mas você está definindo valores com a classe ufprovisioning top-scope ao declará-la em profile::base .

Deixe-me expressar de uma maneira um pouco diferente, caso isso não faça sentido. Você está definindo valores de parâmetro para init.pp via base.pp, que obtém valores padrão de params.pp. No entanto, essa lógica é quebrada porque o config.pp obtém valores diretamente do params.pp. Para resolver isso, o config.pp deve herdar valores do init.pp.

Você poderia corrigi-lo movendo as variáveis para os parâmetros ufprovisioning::config class que herdam da classe de escopo superior como esta;

class ufprovisioning::config (
    $webserver_manage   = $::ufprovisioning::webserver_manage
    $site_name          = $::ufprovisioning::site_name
) inherits ufprovisioning {

    assert_private()

    nginx::resource::server { 'cclloyd.com':
        ensure          =>  present,
        server_name     =>  [$site_name],
        www_root        =>  "/var/www/${site_name}",
        listen_port     =>  80,
        ssl             =>  false,
    }
}

Mas, lembre-se, mesmo este não é mais o padrão sugerido usado com versões mais recentes do Puppet e do Hiera 5.

    
por 06.03.2018 / 23:29