A função “Run Puppet” no Foreman funciona de forma inconsistente

2

Primeiro, uma visão geral rápida da nossa configuração:

  1. Temos uma instância do Foreman funcionando corretamente, vamos chamá-la de capataz.
  2. O mestre das marionetes funciona bem, vamos chamá-lo de mestre de marionetes.
  3. Existem dois hosts que podem ser contatados pelo contramestre e pelo mestre de fantoches sem nenhum firewall no meio, vamos chamá-los de host-a e host-b.
  4. Todos os hosts estão executando 3.x

Começamos a expandir nosso uso do Foreman e queremos ativar o botão Run Puppet. Eu segui o wiki e consegui que funcionasse nos testes iniciais. No entanto, em testes posteriores, o botão produziu alguns resultados muito inconsistentes. Eu pareço lembrar de ler que há uma reprodução de 2 minutos por padrão em execuções disparadas, mas esse não é o problema aqui. Às vezes, quando eu aperto o botão, um host pula para e começa a corrida imediatamente. Na maioria das vezes, no entanto, isso nunca desencadeia uma corrida.

Foreman tem o seguinte na configuração do sudoers:

Defaults:foreman-proxy !requiretty
foreman-proxy   ALL = NOPASSWD: /usr/bin/puppet kick *

Os hosts têm o seguinte em auth.conf, um namespaceauth.conf em branco e listen = true em puppet.conf.

# allow foreman to start puppet runs
path /run
auth any
method save
allow foreman.domain.lan

Ao tentar disparar uma marionete via Foreman, isso aparece no registro de produção.

Started GET "/hosts/host-a.domain.lan/puppetrun" for 192.168.8.48 at 2014-07-15 21:44:59 +0000
Processing by HostsController#puppetrun as HTML
  Parameters: {"id"=>"host-a.domain.lan"}
Redirected to http://foreman.domain.lan/hosts/host-a.domain.lan
Completed 302 Found in 48ms (ActiveRecord: 1.3ms)


Started GET "/hosts/host-a.domain.lan" for 192.168.8.48 at 2014-07-15 21:44:59 +0000
Processing by HostsController#show as HTML
  Parameters: {"id"=>"host-a.domain.lan"}
  Rendered hosts/_overview.html.erb (16.2ms)
  Rendered hosts/_metrics.html.erb (0.3ms)
  Rendered hosts/show.html.erb within layouts/application (734.1ms)
  Rendered home/_user_dropdown.html.erb (2.0ms)
Read fragment views/tabs_and_title_records-2 (0.2ms)
  Rendered home/_topbar.html.erb (3.8ms)
  Rendered layouts/base.html.erb (5.9ms)
Completed 200 OK in 781ms (Views: 652.3ms | ActiveRecord: 108.6ms)

E é sobre isso, as corridas de marionetes são ocasionalmente acionadas nos anfitriões, mas nem sempre. Alguma idéia?

EDIT: Devo acrescentar que quando os gatilhos de execução não são bem-sucedidos, nenhuma mensagem é exibida no lado do host ao executar o agente fantoche --no-daemonize --debug

MOAR EDIT: Executando o Foreman v1.5.1 mais o Puppet 3.6.2 no mestre de fantoches e o capataz, v3.3.1 nos hosts.

    
por shaun m 15.07.2014 / 23:48

2 respostas

2

Eu tentei uma série de maneiras de executar o kick de forma confiável, mas não consegui e ele está obsoleto de qualquer maneira, então mudei para o puppetssh. Isso exigia a configuração das chaves SSH do proxy inteligente, o usuário do contramestre e seus direitos sudo. Não há muita documentação sobre este método de execução de marionetes e o registro DEBUG em foreman-proxy não inclui nenhuma saída de comando, então era difícil dizer onde / como algo estava falhando.

Por padrão, o usuário do contramestre-proxy não tem um shell (no RHEL) e não seria capaz de executar o / usr / bin / ssh. Um simples usermod -s / bin / bash fez o truque, mas isso parece ser um risco de segurança para mim. Além disso, diferentes direitos de sudo são necessários para executá-lo, então eu tive que mudar foreman-proxy ALL = NOPASSWD: / usr / bin / chute de boneco para foreman-proxy ALL = NOPASSWD: / usr / bin / ssh . Depois disso, foi apenas uma questão de configurar o comando ssh.

No meu caso, implantamos uma conta de usuário e chaves SSH para executar comandos Puppet com o sudo em máquinas clientes. Eu copiei a chave privada para algum lugar que o foreman-proxy poderia usar (por exemplo: / etc / foreman-proxy / puppetssh / id_rsa) e configurei os parâmetros puppetssh em /etc/foreman-proxy/settings.yml assim:

:puppetssh_command: /usr/bin/sudo /usr/bin/puppet agent -t --no-usecacheonfailure
:puppetssh_user: puppetssh
:puppetssh_keyfile: /etc/foreman-proxy/puppetssh/id_rsa
    
por 16.07.2014 / 19:50
0

funcionou para mim optei por puppshsh fonte link

siga uma instrução do link acima abaixo do conteúdo puppshsh Agora edite a seguinte linha no arquivo.

/etc/foreman-proxy/settings.d/puppet.

:puppetssh_command: /usr/bin/puppet agent --onetime --no-usecacheonfailure

converta para

:puppetssh_command: /usr/bin/puppet agent --test

agora vai funcionar como charme Sinta-se à vontade para responder se não funcionou

    
por 14.04.2016 / 09:24