Fantoche manifesta (o termo usual, ao invés de scripts ) é normalmente organizado em um módulo por componente ou serviço do SO (por exemplo, apache
, ntp
, postgresql
), com uma ou mais classes que contêm tudo o que é necessário para configurá-lo.
A classe Puppet contém todas as definições de arquivos, pacote e serviço recurso para o componente do sistema operacional. Na sua forma mais simples, é algo como:
class apache {
package { "httpd":
ensure => installed,
} ->
service { "httpd":
ensure => running,
}
}
O agente entra em contato com o mestre para o seu catálogo (lista de recursos a serem configurados) e, nesse processo, o host é classificado e uma lista de classes será > incluído no catálogo.
Na sua forma mais simples, você pode ter um manifesto principal ( doc ) contendo listas de nós com seus nomes de host e incluindo as classes que você deseja usar neles:
node foo.example.com {
include apache
}
O manifesto principal é compilado automaticamente quando um agente solicita seu catálogo e, se uma definição de nó corresponder ao nome de um agente, seu conteúdo também será avaliado para incluir essas classes. Manter muitas definições de nós no código não é muito eficiente.
Você também pode usar o Hiera e hiera_include para armazenar a lista de classes em arquivos de dados Hiera externos, então um manifesto principal contém hiera_include('classes')
. Isso procura o valor de classes
de Hiera e inclui todas essas classes.
Por fim, o mestre pode ser configurado com um Classificador de nós externos (ENC), que geralmente é um script isso é chamado quando o agente faz check-in. Ele recebe o nome do agente e deve gerar uma lista de classes (e, opcionalmente, parâmetros e o ambiente ). Pode usar um banco de dados ou qualquer tipo de informação que você tenha em sua organização.