Como fazer o fantoche para iniciar todos os serviços no final da execução do catálogo?

2

Especialmente ao configurar um servidor completamente novo a partir do zero, o Puppet tende a iniciar serviços dependentes assim que todas as suas dependências forem satisfeitas. Isso às vezes leva a situações em que os serviços são iniciados desnecessariamente cedo demais enquanto a configuração de outros pacotes (talvez não dependentes de um serviço) ainda está em execução.

Existe alguma definição de uma linha ou receita que automaticamente faria todos os serviços iniciarem / atualizarem no final de todo o catálogo? Tentei descobrir se etapas de execução poderiam ser utilizadas, mas isso, no meu entender, exigiria que todas as definições de serviço são explicitamente definidas para o estágio "último".

Atualização 1: Alguns antecedentes da minha pergunta. Puppet, durante a configuração inicial de um nó, trabalha bastante intensamente e, portanto, reserva recursos de uma máquina virtual relativamente pequena (no meu caso, o Vagrant na máquina dev). Quando a fase de configuração chegou a um ponto em que alguns dos serviços, no meu caso, os trabalhadores em segundo plano, estavam prontos, Puppet os inicia e os trabalhadores começam a receber trabalhos de uma fila. Essa carga de trabalho desacelera o processo de configuração do nó Puppet, assim como o Puppet desacelera os trabalhadores, até que toda a configuração seja feita e a caixa esteja em um estado estável.

É por isso que comecei a pensar que seria bom deixar que o Puppet trabalhasse com a configuração inicial até que todos os serviços no nó fossem iniciados e por que eu estava imaginando se há alguma maneira simples de fazer isso com o Puppet .

    
por Ville Mattila 04.12.2013 / 06:18

3 respostas

0

Uma forma de conseguir isso é

1 tem a assinatura como mencionado acima.

2 use o metaparameter de estágio link

Você pode atribuir isso como um valor padrão ao tipo de recurso Serviço via

Serviço {stage = > last}

Se você definir isso em seu nodes.pp, ele será aplicado a todos os nós, ou você poderá defini-lo por nó.

    
por 05.12.2013 / 20:24
4

Eu aconselharia contra um reinício global. Em vez disso, use dependências de fantoches.

Algo como:

service { 'first':
      ensure    => running,
      enable    => true,
    }

service { 'second':
      ensure    => running,
      enable    => true,
      subscribe => Service['first']
}
    
por 04.12.2013 / 06:26
1

Você não faz isso.

Isso não é exatamente o que os fantoches devem fazer, e embora você possa provavelmente chegar a uma maneira de fazer isso, não é uma boa ideia. Se tudo o que você quer alcançar é que os serviços não devam desacelerar o fantoche (que eu também acho um tanto atrasado, eu preferiria o contrário), por que não ensinar seus serviços a ter calma se o boneco estiver funcionando enquanto eles ficam? começou?

    
por 04.12.2013 / 08:55