Organize código no Chef: bibliotecas, classes e recursos

1

Eu sou novo no Chef e no Ruby e estou implementando alguns scripts para aprendê-los. Agora estou enfrentando o problema de como organizar meu código: criei uma classe no diretório da biblioteca e usei um namespace personalizado para manter a ordem. Este é um exemplo simplificado do meu arquivo:

# ~/chef-repo/cookbooks/mytest/libraries/MyTools.rb
module Chef::Recipe::EP
    class  MyTools
        def self.print_something( text )
            puts "This is my text: #{text}"
        end
        def self.copy_file( dir, file )
            cookbook_file "#{dir}/#{file}" do source "#{dir}/#{file}" end
        end
    end
end

Da minha receita eu chamo ambos os métodos:

# ~/chef-repo/cookbooks/mytest/recipes/default.rb
EP::MyTools.print_something "Hello World!"
EP::MyTools.copy_file "/etc", "passwd"

print_something funciona bem, mas com copy_file eu recebo este erro:

undefined method 'cookbook_file' for Chef::Recipe::EP::FileTools:Class

É claro para mim que não sei como criar bibliotecas no Chef ou não sei algumas suposições básicas. Alguém pode me ajudar por favor? Eu estou procurando uma solução deste problema (organizar meu código, bibliotecas, usar recursos em classes) ou, melhor, uma boa documentação do Chef, pois acho a documentação muito deficiente em clareza e desorganizada para que a pesquisa através dele seja uma dor. / p>     

por ColOfAbRiX 30.10.2013 / 16:26

1 resposta

1

A mensagem de erro significa que não há método cookbook_file na sua classe. Os nomes dos módulos não implicam herança de classes, eles apenas fornecem namespaces isolados. Se você quiser acessar os métodos do Chef, é necessário subclassificar classe apropriada do Chef. Aprender Ruby e Chef é muito para engolir de uma só vez. Escrever uma biblioteca eficaz levará algum tempo e, na maior parte, não deve ser necessário.

O fluxo de trabalho no Chef ainda não está padronizado. Existem várias abordagens diferentes que ainda competem pelas melhores práticas.

No entanto, sugiro que você comece com o Berkshelf. Ele irá construir uma estrutura básica de livro de receitas para você.

link

Tutorial para berkshelf (não é possível postar o URL real devido a limitações)

misheska.com/blog/2013/06/16/getting-started-writing-chef-cookbooks-the-berkshelf-way /

A documentação do chef está em processo de limpeza. Há alguns documentos antigos bastante incompletos e é difícil saber o que é atual. A maioria dos esforços atuais está indo para este site:

link

    
por 30.10.2013 / 17:28