Parte de código reutilizável no Chef para ser usado várias vezes na (s) receita (s)

1

Eu preciso reutilizar algum cenário em meus livros de culinária - crie vários usuários em uma única máquina e instale o mesmo software para cada um deles. Instalar o software é uma operação de repetição que gostaria de colocar em um único local e reutilizá-lo.

Eu olhei para provedores, mas eles parecem ter um método load_current_resource que carrega o estado atual do sistema , eu não posso ter tal método porque alguns usuários podem ter instalado este software , outros - não e se o Chef invocar esse método por trás da cena, não terei controle sobre qual usuário em particular estou trabalhando no momento.

Eu também examinei o MySQL Cookbook , que coloca alguns códigos personalizados na pasta libraries . Esta pode ser a melhor opção para mim, mas não sei se é uma maneira do Chef ou não.

Portanto, a questão é: qual é a maneira do Chef de colocar essas partes de código reutilizáveis para serem usadas várias vezes pela mesma receita ou por várias delas?

    
por Stanislav Bashkyrtsev 07.07.2014 / 07:46

1 resposta

1

No Chef, existem algumas técnicas de ferramentas que você pode usar para realizar isso, no entanto, acho que a solução que você está procurando não é baseada em código / sintaxe. Eu acho que aqui você quer encapsular o código repetitivo dentro de uma ou mais receitas (se for mais do que uma, agrupe-as dentro de uma função). Em seguida, para todas as chamadas de instalação, aproveite as cláusulas comuns not_if / only_if para instalar apenas sob certas condições.

Documentos: link

Outra maneira de fazer isso é um pouco mais dolorosa, mas fornecer uma árvore de código-fonte mais limpa é alavancar as malas de dados. configure os pacotes de dados estruturados simples json para cada usuário para o qual você deseja instalar, depois, em sua receita, percorra os itens no data bag e aplique sua lógica.

Documentos: link

    
por 07.07.2014 / 16:35