Empacotar dependências do livro de receitas localmente - AWS OpsWorks

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 ou por meio do Premium AWS Support.

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 Chef (também conhecido como Chef DK), uma variedade de ferramentas construídas pela comunidade do Chef. Você precisará dele para usar a chef 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.

  1. 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
  2. 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 que server-app dependa do livro de receitas java 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'
  3. Edite o arquivo metadata.rb para adicionar a dependência. Salve as alterações e feche o arquivo.

    depends 'java' , '~> 1.50.0'
  4. Vá para o diretório de receitas server-app que o Chef criou para você e, em seguida, execute o comando package para criar um arquivo tar 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ório server-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
  5. 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
  6. Em AWS OpsWorks Stacks, modifique sua pilha para usar o pacote que você enviou como fonte do livro de receitas.

    1. Defina a configuração Use custom Chef cookbooks como Yes.

    2. Defina Repository type como S3 Archive.

    3. 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

  1. 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.

  2. 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
  3. 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
  4. 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.

  1. 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.

  2. 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"
  3. 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
  4. 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.