Chef-client não atualizando um livro de receitas do servidor

8

Eu tenho um livro de receitas do chef (para apache2). Não funciona em um nó. Então, eu estou tentando ajustá-lo e atualizá-lo, mas o nó não parece baixar a nova versão. Eu consegui fazer upload de tudo para o servidor chef da minha máquina local com knife upload . , que é bem-sucedido, e imprime que ele carregou os bits do livro de receitas apache2 que eu alterei.

Quando eu executo manualmente (como root) chef-client no nó, posso vê-lo entrando em contato com o servidor, obtendo a lista de execução etc. No entanto, os arquivos de receita em /var/cache/chef/cookbooks/apache2 são os arquivos antigos. E a receita falha (porque não tem as alterações que eu fiz).

Como faço para o cliente chef no nó usar a nova versão atualizada do livro de receitas apache2? Preciso aumentar o número da versão no livro de receitas (não fiz isso)?

chef-client -l debug output:

[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)

Eu sou novo no chef, então eu poderia ter cometido um erro de iniciante.

    
por Rory 30.01.2015 / 11:01

3 respostas

6

Há algumas coisas em que posso pensar que podem ajudá-lo.

  1. Verifique se a versão do livro de receitas que você está enviando é a versão mais recente

    Um problema comum com versões de livro de receitas é que você pode estar modificando a versão 1.0.0 do livro de receitas localmente e carregando, mas o Chef Server tem a versão 1.0.1 do livro de receitas já enviada para ele. Nesse caso, os Clientes Chefão normalmente recuperam a versão mais recente (a menos que seja dito de outra forma) e suas alterações nunca serão sincronizadas com o cache local.

    Você pode ver todas as versões atuais do livro de receitas no Chef Server através de: knife cookbook show apache2

    Uma solução para isso é a que você mencionou - aumente o número da sua versão além do que existe no Chef Server, ou seja, 1.0.2 e upload.

    Outro método é remover qualquer outro livro de receitas apache2 do Chef Server e reenviar o que você deseja. Isso não precisa de nenhuma atualização de número de versão, e o resultado final é que o Chef Server teria um único livro de receitas apache2.

  2. Confirme se suas alterações estão realmente chegando ao Chef Server

    Usando knife cookbook show apache2 <cookbook version> recipes default.rb Substitua version, path e filename - por exemplo, se você quiser ver um template chamado foo.erb: knife cookbook show apache2 0.1.0 templates foo.erb

    Este comando solicitará o arquivo do servidor Chef e exibirá a saída no seu terminal. Essa é uma maneira simples de determinar se as alterações feitas estão sendo enviadas por meio de knife cookbook upload .

Além disso, se isso não ajudar, adicionar os detalhes de knife version, chef-server version, chef-client version e um log de depuração de knife cookbook upload apache2 -VV seria útil para depurar ainda mais.

    
por 22.04.2015 / 13:27
2

Primeiro depure todas as versões dos livros de receitas no servidor e, em seguida, verifique qual versão do livro de receitas o cliente está baixando. se for antigo, basta verificar se o servidor tem uma versão atualizada. se também for sim, por favor, vá para a interface do servidor do servidor e verifique se env. você pode ter configurado um ambiente no qual a restrição de livros de receitas é especificada. Por favor, atualize a versão e ela começará a funcionar novamente.

    
por 24.04.2015 / 19:14
1

Outra causa disso pode ser que nem todas as dependências do livro de receitas estão presentes no chef-servidor. Eu me deparei com isso agora, e a nova versão do meu livro de receitas estava aparecendo em knife cookbooks list , mas meu cliente não estava usando a nova versão. Depois de alguma depuração, descobri que Berkshelf, nem faca tinha carregado a nova dependência para o meu livro de receitas. Depois que eu fiz o upload, o cliente começou a usar a versão mais recente.

    
por 05.06.2017 / 20:50

Tags