Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Chef é uma ferramenta de gerenciamento de configuração que automatiza a implantação e o gerenciamento de aplicativos e infraestrutura. Ele usa uma linguagem específica de domínio (DSL) para escrever "receitas" de configuração do sistema. Essas receitas são armazenadas em "livros de receitas" que podem ser compartilhados e reutilizados em diferentes sistemas.
Cada especificação de inicialização de cluster pode fazer referência a uma ou mais funções do Chef e/ou receitas de livros de receitas que precisam ser executadas na VM de inicialização.
Observação
O CycleCloud usa o Chef em um modo autônomo que não depende de um servidor Chef centralizado. O conjunto de livros de receitas do Chef necessários para preparar cada VM é baixado da Conta de Armazenamento do Azure junto com o restante dos arquivos no projeto.
Estrutura do Projeto
O diretório specs em um projeto também pode conter um subdiretório chef . Este diretório contém três diretórios: site-cookbooks (para definições de livros de receitas), data_bags (definições de saco de dados) e funções (arquivos de definição de função do Chef):
myproject
├── specs
│ ├── default
│ └── chef
│ ├── site-cookbooks
│ ├── data_bags
│ └── roles
Listas de Execução do Chef
Você pode especificar um run_list no nível do projeto ou da especificação dentro do seu project.ini:
[spec scheduler]
run_list = role[a], recipe[b]
Quando um nó inclui a scheduler especificação, o run_list definido é automaticamente anexado a qualquer run_list definido anteriormente. Por exemplo, se o run_list sob [configuration] será run_list = recipe[test], o run_list final será run_list = recipe[cyclecloud], recipe[test], role[a], recipe[b], recipe[cluster_init].
Você também pode sobrescrever run_list na especificação de nó. Esta substituição run_list remove todos os run_list incluídos no project.ini. Por exemplo, pode alterar a definição do nó para a seguinte definição:
[cluster-init test-project:scheduler:1.0.0]
run_list = recipe[different-test]
O uso dessa run_list faz com que o run_list definido no projeto seja ignorado. A run_list final no nó fica definido como run_list = recipe[cyclecloud], recipe[test], recipe[different-test], recipe[cluster_init].
Chef Personalizado e Especificações Componíveis
Cada especificação pode conter um diretório chef. Antes de convergir um nó, o processo descomprime e extrai cada especificação para o chef-repo local, substituindo quaisquer livros de receitas, funções e pacotes de dados existentes por nomes correspondentes. O processo segue a ordem na qual você define as especificações, portanto, a última especificação definida vence se houver um conflito de nomenclatura.
Locais dos arquivos
Quando você carrega o conteúdo do projeto, o CycleCloud compacta os três diretórios personalizados do Chef e os sincroniza com o armário de destino, em (locker)/projects/(project)/(version)/(spec_name)/chef.
O nó baixa os arquivos compactados do Chef durante a fase de inicialização da inicialização do nó. O nó baixa os arquivos para $JETPACK_HOME/system/chef/tarballs*, descompacta-os para $JETPACK_HOME/system/chef/chef-repo/e os usa para convergir o nó.
Observação
Para executar livros de receitas personalizados, você deve adicioná-los ao run_list do nó.
Provedor de recursos de download Jetpack
O exemplo a seguir mostra como criar um provedor de jetpack_download recursos leve para usuários do Chef:
jetpack_download "big-file1.tgz" do
project "my-project"
end
No Chef, o local de download padrão é #{node[:jetpack][:downloads]}. Para alterar o destino do arquivo, use o seguinte código:
jetpack_download "foo.tgz" do
project "my-project"
dest "/tmp/download.tgz"
end
Ao usar o comando no Chef, você deve especificar o projeto.