Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Chef é uma ferramenta de gerenciamento de configuração que automatiza a implantação e o gerenciamento de aplicativos e infraestrutura. Ele usa uma DSL (linguagem específica do domínio) 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 cluster-init pode referenciar uma ou mais funções do Chef e/ou receitas de cookbook que precisam ser executadas na VM em 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 de especificações em um projeto também pode conter um subdiretório chef . Esse diretório contém três diretórios: site-cookbooks (para definições de guia), data_bags (definições de recipiente de dados) e roles (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 em seu project.ini:
[spec scheduler]
run_list = role[a], recipe[b]
Quando um nó inclui a especificação scheduler, o run_list que você define acrescenta automaticamente a qualquer run_list definido anteriormente. Por exemplo, se a run_list sob [configuration] for run_list = recipe[test], a run_list final será run_list = recipe[cyclecloud], recipe[test], role[a], recipe[b], recipe[cluster_init].
Você também pode substituir run_list no nível de especificação em um nó. Essa substituição run_list remove qualquer run_list incluído no project.ini. Por exemplo, você 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]
Usar esse run_list faz com que o run_list definido no projeto seja ignorado. A run_list final no nó se torna 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 cancela e extrai cada especificação no chef-reppo local, substituindo todos os guias, funções e data bags 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 de 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 seu 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ó de inicialização. O nó baixa os arquivos para $JETPACK_HOME/system/chef/tarballs*, descompactá-los para$JETPACK_HOME/system/chef/chef-repo/ e os usa para convergir o nó.
Observação
Para executar guias personalizados, você deve especificá-los no run_list do nó.
Provedor de recursos de download do Jetpack
O exemplo a seguir mostra como criar um jetpack_download provedor de 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.