Substituir recursos em classes de fantoches

1

Vamos supor que eu tenha um site.pp assim:

class videoServer {
     file { '/root/testFile'  : ensure => present }
     file { '/root/testFile2' : ensure => present }
     file { '/root/testFile3' : ensure => present }
}

node s1.example.comf { include videoServer }
node s2.example.comf { include videoServer }

Então, eu tenho um videoServer de classe com 3 recursos de arquivo e dois nós que incluem essa classe.

Estou tentando descobrir se há uma maneira fácil de alterar os atributos do recurso ou até mesmo excluí-los totalmente. Por exemplo, eu quero excluir / root / testFile2 no nó s2.example.com. Eu mudaria o atributo "garantir" para "ausente". Mas qual é a sintaxe para isso se realmente existe? Se é impossível como devo rever a aula para torná-la menos dolorosa?

Sim, você pode usar parâmetros de classe como este:

class videoServer ( $fileState = present, $fileState2 = present, 
                    $fileState3 = present ) {
     ...
     file { '/root/testFile2'  : ensure => $fileState2 }
     ...
...
node s2.example.com { 
     class { 'videoServer' : fileState2 = absent }

Mas isso é realmente desconfortável. Talvez a herança possa ajudar aqui, mas não acho que seja uma boa solução. A única diferença em muitos nós pode ser a ausência de um arquivo e não vejo nenhum ponto na herança nessa situação.

    
por Glueon 06.10.2014 / 01:12

2 respostas

1

Eu encontrei uma solução. Na verdade, o que eu queria realizar é possível usando um operador nave espacial <| |> .

Portanto, se eu quiser alterar um estado desejado do arquivo /root/testFile2 apenas para o nó s1.example.com , devo fazer algo assim:

class videoServer {
     file { '/root/testFile'  : ensure => present }
     file { '/root/testFile2' : ensure => present }
     file { '/root/testFile3' : ensure => present }
}

node s1.example.comf { 
    include videoServer 
    File <| title == '/root/testFile2' |> { ensure => absent }
}

node s2.example.comf { include videoServer }
    
por 30.10.2014 / 23:33
1

Você não pode remover uma definição de recurso depois que ela é declarada, e você está certo, para herdar"> deve ser usada com muita parcimônia

Eu usaria seu exemplo de parâmetros de classe com hiera

node s1.example.comf { include videoServer }
node s2.example.comf { include videoServer }

Definindo s2.example.com.yaml para

videoServer::fileState2: absent
    
por 06.10.2014 / 18:08

Tags