Como estender uma definição de arquivo de um módulo existente no nó?

5

Eu uso uma versão mais antiga do módulo mysql example42, que define o arquivo mysql.conf, mas não seu conteúdo. O objetivo do Mmy é simplesmente incluir o módulo mysql e adicionar uma definição de conteúdo no nó.

class mysql {
    ...
    file { "mysql.conf":
        path => "${mysql::params::configfile}",
        mode => "${mysql::params::configfile_mode}",
        owner => "${mysql::params::configfile_owner}",
        group => "${mysql::params::configfile_group}",
        ensure => present,
        require => Package["mysql"],
        notify => Service["mysql"],
    }
    ...
}


node xyz
{
    include mysql
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}

O código acima produz um "Somente subclasses podem substituir parâmetros"

Qual é a maneira correta de adicionar apenas uma definição de conteúdo a uma definição de arquivo existente?

    
por c33s 15.10.2012 / 21:54

1 resposta

11

Use um coletor de recursos , descrito aqui . Os coletores de recursos podem substituir os parâmetros de recursos, mesmo que não em uma subclasse. Eles também são mais versáteis, os recursos podem ser coletados usando tags ou outros parâmetros, não apenas o título.

node xyz
{
    include mysql
    File <| title == "mysql.conf" |> { 
        content => template("mymodule/mysql.conf.erb"),
    }
}

Editar: usando uma subclasse

Outra opção é declarar uma subclasse e incluí-la na definição do nó:

class mysql_custom inherits mysql {
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}

node xyz {
    include mysql_custom
}
    
por 16.10.2012 / 18:26

Tags