Implantação contínua do livro de receitas do Chef

2

Estou tentando integrar o fluxo de trabalho do meu chef aos meus fluxos de trabalho de integração / implantação contínua habituais.

Já consegui ter uma tarefa jenkins que verifica o repositório do git e executa o foodcritic, mas não consigo descobrir o último passo: enviar o livro de receitas para o servidor do chef.

algumas ideias que pensei:

  • use faca: o problema é que, nos nós de construção do meu servidor jenkins, não há nenhuma faca instalada e a faca AFAIK precisa de um diretório de livro de receitas do qual ela possa empurrar o livro de receitas. Por outro lado, não considero uma boa prática permitir que o usuário do jenkins execute todos os comandos de faca
  • use a faca ruby-gem e escreva algum script ruby para ser usado por Jenkins: pode funcionar, mas eu não queria experimentar com isso, porque eu não acho que é a melhor opção de qualquer maneira
  • faça algumas chamadas REST-API com cURL ou qualquer biblioteca semelhante. Depois de ler as API-docs, não acho que valha a pena implementar isso.

Meu nó de construção estaria disponível como OSX e debian - se isso for essencial para minha possível ferramenta de escolha.

Portanto, qualquer experiência seria apreciada!

    
por Philipp 25.11.2013 / 14:06

2 respostas

1

Se você quiser empurrar o livro de receitas para um servidor chef apenas para fins de teste, talvez você seja melhor com chef-zero que é um "servidor Chef de início rápido na memória para testes e finalidades individuais".

Ou, se você está apenas tentando testar os livros de culinária, pode executar o teste inteiro sem um servidor do chef usando teste. cozinha + minitest-chef-handler . Eu sugiro que você não use os " morcegos ", mas siga os exemplos de casos de teste minimais-chefes de teste

Serverfault Observação: ainda não posso postar mais de dois links para ser um novo membro, então tente segui-los abaixo:

minitest-chef-handler
  github: calavera/minitest-chef-handler

bats
  github: test-kitchen/test-kitchen/wiki/Getting-Started

test cases examples
  github: calavera/minitest-chef-handler#test-cases
    
por 26.11.2013 / 14:41
0

Apenas um comentário: Foodcritic não é teste suficiente para passar a produção IMHO. Pessoalmente, eu gostaria de alguma forma de teste do Vagrant em uma VM antes de qualquer mudança automatizada para a produção.

No entanto, essa é sua ligação, não minha.

Em última análise, o que você precisa fazer é executar um comando de faca em algum lugar. Ou está em Jenkins ou em um processo fora de Jenkins.

Se você não puder / não quiser executar o comando faca no Jenkins, sugiro usar o Jenkins para mover o código entre as ramificações do git. (isto é, Jenkins monitora o ramo de teste e quando o código passa nos testes, você usa o acesso ao git para movê-lo para o ramo de produção).

Você precisaria então construir um processo fora do Jenkins que mais ou menos faz o que o Jenkins faz (monitora um repositório e toma ações quando encontra mudanças). Jenkins é muito fácil de configurar, por isso, se houver preocupações sobre o uso do servidor principal, você pode executar um jenkins "independentes" em uma máquina separada que acabou de fazer o upload da faca.

Você não está sozinho neste barco, todo mundo está lutando um pouco com exatamente como criar um fluxo de trabalho de chef que funcione para sua organização.

    
por 03.12.2013 / 16:18