Por que o Puppet está trocando de ambiente e depois voltando?

Por que o Puppet está trocando de ambiente e depois voltando?

Isso ocorre com o Puppet 5.5.22 e o Foreman 1.22.0-develop. Eu sei que esta é uma instalação desatualizada do Foreman e do Puppet, mas até que eu os substitua por novas versões (um projeto que será lançado em breve), é com eles que devo lidar.

# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds

Entendo que o ambiente local original de 'produção' pode vir de /etc/puppet/puppet.conf ou é o padrão se nenhum ambiente for especificado nesse arquivo. Neste caso é o último (nenhum ambiente especificado localmente).

O ambiente de nó 'desenvolvimento' foi definido para este host no Foreman (o ENC ou classificador de nó externo para esta instalação do Puppet) e é a atribuição de ambiente correta desejada.

O ambiente de 'teste' é o ambiente que o Foreman está definindo, de forma ampla e geral, para todos os nossos hosts neste momento e é o ambiente em que esse host específico estava antes de eu alterá-lo por meio da UI do Foreman para 'desenvolvimento'. (Em outras palavras, 'teste' é na verdade nosso ambiente de produção; o ambiente chamado 'produção' não está em uso no momento.)

Tentei consultar a documentação do Foreman e não encontrei nada sobre os fundamentos de como funcionam as atribuições de ambiente; a documentação representa apenas um tour pela interface do usuário, o que não é útil para solução de problemas.


Provavelmente relacionado, há outra estranheza aqui: servername.example.com apareceduas vezesna IU do Foreman.

Poder Nome Sistema operacional Ambiente de fantoches Modelo Grupo anfitrião Último relatório Ações
[roda giratória] nome do servidor Debian [versão] desenvolvimento [nome do servidor blade] nome do grupo de hosts [em branco] [Botão Editar]
[ícone de energia, cinza] nome do servidor Debian [versão] teste PC padrão [informações da versão] [em branco] 6 minutos atrás [Botão Editar]

Se eu tentar editar o ambiente para qualquer entrada clicando no botão "Editar", quando clico em "Enviar", recebo "já foi levado" aparecendo em vermelho ao lado do campo "Nome", como se eu estivesse tentando criar uma nova entrada de host.

No entanto, se eu selecionar o host com a caixa de seleção à esquerda da visualização de lista e depois for para o topo e escolher "Selecionar ação" -> "Alterar ambiente", entãoparecetrabalhar. Ambas as entradas mostram "desenvolvimento" na IU. Mas a próxima execução do Puppet em servername produzirá a saída mostrada no início desta postagem e, depois disso, a atualização da IU do Foreman mostrará novamente uma entrada com "desenvolvimento" e uma entrada com "teste".

O que poderia estar causando isso? Como posso atribuir hosts a ambientes e mantê-los fixos?

Responder1

Eu resolvi isso.

Há alguma idiossincrasia em nossa configuração do Puppet, pois ainda existe algum remanescente da configuração do Puppet 3 em algum lugar - não tenho certeza de onde exatamente, mas a entrada do servidor na lista que se reverteria para "teste" também mostrou seu mestre de marionetes como o antigo servidor fantoche. Esse servidor fantoche não existe mais, MAS o novo servidor capataz também tem esse nome. Meio complicado e não entendo completamente de onde vieram as duas entradas diferentes, mas corrigi a atribuição do ambiente oscilante:

  1. Excluindo ambas as entradas de host na IU do Foreman (certificando-se de ler atentamente a mensagem de confirmação e certificando-se de que isso NÃO excluiria o(s) host(s) ou discos, e que apenas as duas entradas de host pretendidas foram listadas na confirmação).
  2. No servidor puppet (ou seja, conectado ao servidor Foreman na linha de comando), executandopuppet cert clean servername.example.com
  3. Em servername.example.com, excluir o diretório /var/lib/puppet/ssl/(usei find /var/lib/puppet/ssl/ -deleteembora rm -rf /var/lib/puppet/ssl/também funcionasse).
  4. Em servername.example.com, edite o arquivo /etc/puppet/puppet.confpara definir environment = developmentsob o [agent]cabeçalho.
  5. Executando novamente o fantoche em servername.example.com com puppet agent -tv.

Isso aplicou corretamente o código do ambiente de desenvolvimento, sem avisos sobre ambientes incompatíveis, e a IU do Foreman agora mostra apenas uma entrada para este servidor e indica corretamente que seu ambiente é development.

informação relacionada