Aplicar manualmente a classe de marionetes

3

Estou testando um arquivo init.pp de bonecos (no Windows) que se parece com:

class myclass {    
 package { 'java':
    ensure => installed,
    provider => 'msi',
    source => 'S:\puppet-repo\jdk1.6.0_31.msi',
    install_options => { 'INSTALLDIR' => 'C:\tools\java' },
  }
}

Então meu arquivo site.pp se parece com:

node default {
  include myclass
}

Eu criei um arquivo tests / init.pp que apenas chama o módulo myclass:

class { 'myclass': }

Eu posso executar o arquivo tests / init.pp e instalar o java corretamente. Eu queria saber se há uma maneira de apenas executar o módulo myclass a partir da linha de comando sem criar um arquivo tests / init.pp separado. Ou talvez eu pudesse mover a instrução package em myclass para seu próprio arquivo .pp e incluí-la no init.pp e então eu poderia executar esse arquivo .pp separado se eu quisesse. Qual é a maneira mais correta de fazer isso?

    
por Jeff Storey 22.02.2012 / 05:30

2 respostas

6

Primeiro, um truque para verificar a sintaxe se você ainda não souber:

puppet parser validate my_file.pp

Agora, a maneira como você aborda o teste pontual de uma nova turma pode variar com base na sua implantação, mas posso dizer como faço isso e, talvez, faça sentido no seu caso. Ou talvez todos no ServerFault me digam como estou errado.

Em qualquer ambiente, eu tenho um conjunto de declarações de nó usando herança:

node base_production_environment {
  include ssh
  include ntp
  include whatever_else
}

node /prod-app\d+\.mycompany\.com/ inherits base_production_environment { }

Agora, quando escrevo uma nova classe, quero testá-la em um sistema particular primeiro antes de lançá-la, então adiciono uma declaração de nó mais específica (por hostname) para que ela substitua a menos específica (por expressão), assim:

node 'prod-app7.mycompany.com' inherits base_production_environment {
  include my_new_class
}

Eu simplifiquei muito isso para destacar o uso de declarações de nó específicas para novas classes de verificação pontual. Também usamos ambientes para implantar alterações em ambientes menos críticos antes de lançá-los na produção, etc.

Por isso, apenas reli sua pergunta e ocorreu-me que você pode estar usando uma abordagem de diretório de módulos, em vez de usar um mestre de fantoches. Se isso for verdade, você pode incluir uma aula para fins de teste com algo como:

puppet apply --modulepath=C:\puppet-modules\ -e "include my_class"

Não sei se é a sintaxe correta do diretório para o fantoche no Windows.

    
por 22.02.2012 / 05:41
0

você também pode executar: agente de marionetes -t --tags seu_class_name

Então, no seu caso:

puppet agent -t --tags my_new_class

    
por 06.06.2018 / 19:35