As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Empacotar dependências do livro de receitas localmente
Importante
O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no AWS re:POST
Você pode usar o Berkshelf para empacotar as dependências do livro de receitas localmente, fazer o upload do pacote para o Amazon S3 e modificar sua pilha para usar o pacote no Amazon S3 como fonte do livro de receitas. O conteúdo entregue aos buckets do Amazon S3 pode conter conteúdo do cliente. Para obter mais informações sobre a remoção de dados confidenciais, consulte Como faço para esvaziar um bucket do S3? ou Como faço para excluir um bucket do S3?.
As instruções a seguir descrevem como pré-empacotar seus livros de receitas e suas dependências em um arquivo.zip e, em seguida, usar o arquivo.zip como fonte de seu livro de receitas para instâncias Linux no Stacks. AWS OpsWorks A primeira demonstração descreve como empacotar um livro de receitas. A segunda demonstração descreve como empacotar vários livros de receitas.
Antes de começar, instale o Kit de desenvolvimento do Chefchef
ferramenta da linha de comando.
Empacotar dependências do livro de receitas localmente no Chef 12
No Chef 12 Linux, o Berkshelf não está mais instalado por padrão nas instâncias de pilha. Recomendamos que você instale e use o Berkshelf em um computador de desenvolvimento local para empacotar as dependências do livro de receitas localmente. Carregue seu pacote, com as dependências incluídas, no Amazon S3. Por fim, modifique a pilha do Chef 12 Linux para usar o pacote carregado como uma origem de livro de receitas. Esteja ciente das seguintes diferenças ao criar pacotes de livros de receitas no Chef 12.
-
No computador local, crie um livro de receitas executando a ferramenta da linha de comando do
chef
.chef generate cookbook "server-app"
Este comando cria um livro de receitas, um Berksfile, um arquivo
metadata.rb
e um diretório de receitas e os coloca em uma pasta com o mesmo nome do livro de receitas. O exemplo a seguir mostra a estrutura do que é criado.server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
-
Em um editor de texto, edite o Berksfile para apontar para os livros de receitas dos quais o livro de receitas
server-app
dependerá. Em nosso exemplo, queremos queserver-app
dependa do livro de receitasjava
do Chef Supermarket. Estamos especificando a versão 1.50.0 ou a versão secundária mais recente, mas você pode especificar qualquer versão publicada em aspas simples. Salve as alterações e feche o arquivo. source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
-
Edite o arquivo
metadata.rb
para adicionar a dependência. Salve as alterações e feche o arquivo.depends 'java' , '~> 1.50.0'
-
Vá para o diretório de receitas
server-app
que o Chef criou para você e, em seguida, execute o comandopackage
para criar um arquivotar
do livro de receitas. Se você estiver criando pacotes de vários livros de receita, convém executar esse comando no diretório raiz em que todos os livros de receita estão armazenados. Para criar pacote com um único livro de receitas, execute esse comando no nível do diretório do livro de receitas. Neste exemplo, executamos o comando no diretórioserver-app
.berks package cookbooks.tar.gz
A saída será semelhante à seguinte. O arquivo
tar.gz
é criado no seu diretório local.Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
-
Em AWS CLI, faça o upload do pacote que você acabou de criar para o Amazon S3. Anote o novo URL do pacote do livro de receitas. Depois carregá-lo no S3;, você precisará do URL para as configurações da pilha.
aws s3 cp cookbooks.tar.gz s3://
bucket-name
/A saída será semelhante à seguinte.
upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
-
Em AWS OpsWorks Stacks, modifique sua pilha para usar o pacote que você enviou como fonte do livro de receitas.
-
Defina a configuração Use custom Chef cookbooks como Yes.
-
Defina Repository type como S3 Archive.
-
Em Repository URL, cole o URL do pacote do livro de receitas que você carregou na etapa 5.
Salve as alterações feitas na pilha.
-
Empacotar dependências do livro de receitas localmente para um livro de receitas
-
No computador local, crie um livro de receitas usando a ferramenta da linha de comando do Chef:
chef generate cookbook "server-app"
Este comando cria um livro de receitas e um Berksfile e os coloca em uma pasta com o mesmo nome do livro de receitas.
-
Vá para o diretório de receitas que o Chef criou para você e, em seguida, empacote tudo, executando o seguinte comando:
berks package cookbooks.tar.gz
O resultado se parece com:
Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
-
Em AWS CLI, faça o upload do pacote que você acabou de criar para o Amazon S3:
aws s3 cp cookbooks.tar.gz s3://bucket-name/
O resultado se parece com:
upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
-
Em AWS OpsWorks Stacks, modifique sua pilha para usar o pacote que você enviou como fonte do livro de receitas.
Empacotar dependências do livro de receitas localmente para vários livros de receitas
Este exemplo cria dois livros de receitas e empacota as dependências para eles.
-
No computador local, execute os seguintes
chef
comandos para gerar dois livros de receitas:chef generate cookbook "server-app" chef generate cookbook "server-utils"
Neste exemplo, o servidor de aplicativos do livro de receitas executa as configurações de Java, por isso, é preciso adicionar uma dependência de Java.
-
Edite
server-app/metadata.rb
para adicionar uma dependência no livro de receitas da comunidade do Java:maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
-
Informe ao Berkshelf o que empacotar editando o arquivo Berksfile no livro de receitas no diretório raiz da seguinte forma:
source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"
A sua estrutura de arquivo agora tem a seguinte aparência:
.. └── Berksfile ├── server-app └── server-utils
-
Por fim, crie um pacote zip, faça o upload para o Amazon S3 e modifique sua pilha de AWS OpsWorks pilhas para usar a nova fonte do livro de receitas. Para fazer isso, siga as etapas 2 a 4 em Empacotar dependências do livro de receitas localmente para um livro de receitas.
Recursos adicionais
Para obter mais informações sobre a criação de pacotes das dependência do livro de receitas, consulte os tópicos a seguir.
-
Como empacotar dependências de livros de receitas localmente com a Berkshelf no blog da AWS
DevOps -
Linux Chef 12 com Berkshelf
nos fóruns AWS OpsWorks -
Berkshelf no Chef 12
nos fóruns AWS OpsWorks -
Repositórios de livro de receitas neste guia