Implementação de receitas em pilhas do Chef 11.4 - 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á.

Implementação de receitas em pilhas do Chef 11.4

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.

Importante

Não reutilize nomes de livros de receitas integrados para livros de receitas personalizados ou da comunidade. Livros de receitas personalizados com o mesmo nome de livros de receitas integrados podem falhar. Para obter uma lista completa dos livros de receitas integrados que estão disponíveis com as pilhas Chef 11.10, 11.4 e 0.9, consulte o repositório opsworks-cookbooks em. GitHub

A principal limitação das pilhas do Chef 11.4 é que as receitas não podem usar a pesquisa ou os recipientes de dados do Chef. No entanto, o AWS OpsWorks Stacks instala os atributos de configuração e implantação da pilha em cada instância que contêm muitas das informações que você obteria com a pesquisa, incluindo as seguintes:

  • Dados definidos pelo usuário do console, como nomes de hosts ou de aplicativos.

  • Dados de configuração da pilha gerados pelo serviço AWS OpsWorks Stacks, como camadas, aplicativos e instâncias da pilha, e detalhes sobre cada instância, como o endereço IP.

  • Atributos de JSON personalizados que contêm dados fornecidos pelo usuário e podem servir ao mesmo propósito que os recipientes de dados.

AWS OpsWorks O Stacks instala uma versão atual dos atributos de configuração e implantação da pilha em cada instância para cada evento do ciclo de vida, antes de iniciar a execução do Chef do evento. Os dados estão disponíveis para as receitas com a sintaxe padrão node[:attribute][:child_attribute][...]. Por exemplo, os atributos de configuração e implantação da pilha incluem o nome da pilha, node[:opsworks][:stack][:name].

O trecho a seguir, extraído de uma das receitas integradas, obtém o nome da pilha e utiliza-o para criar um arquivo de configuração.

template '/etc/ganglia/gmetad.conf' do source 'gmetad.conf.erb' mode '0644' variables :stack_name => node[:opsworks][:stack][:name] notifies :restart, "service[gmetad]" end

Muitos dos valores de atributos de configuração e implantação da pilha contêm vários atributos. Você deve fazer a iteração nesses atributos para obter as informações de que precisa. O exemplo a seguir mostra um trecho com atributos de configuração e implantação da pilha, que são representados como objetos JSON por conveniência. Ele contém um atributo de nível superior deploy, que contém um atributo para cada um dos aplicativos da pilha, designados pelo nome abreviado do aplicativo.

{ ... "deploy": { "app1_shortname": { "document_root": "app1_root", "deploy_to": "deploy_directory", "application_type": "php", ... }, "app2_shortname": { "document_root": "app2_root", ... } }, ... }

Cada atributo de aplicativo contém um conjunto de atributos que caracterizam o aplicativo. Por exemplo, o atributo deploy_to representa o diretório de implantação aplicativo. O trecho a seguir define o usuário, o grupo e o caminho para o diretório de implantação de cada aplicativo.

node[:deploy].each do |application, deploy| opsworks_deploy_dir do user deploy[:user] group deploy[:group] path deploy[:deploy_to] end ... end

Para obter mais informações sobre os atributos de configuração e implantação da pilha, consulte Personalizando pilhas AWS OpsWorks. Para obter mais informações sobre a implantação de diretórios, consulte Receitas de implantação.

As pilhas do Chef 11.4 não são compatíveis com os recipientes de dados, mas você pode adicionar dados arbitrários aos atributos de configuração e implantação da stack especificando um JSON personalizado. Suas receitas podem, dessa forma, acessar os dados usando a sintaxe padrão do nó do Chef. Para obter mais informações, consulte Usar JSON personalizado.

Se você precisa da funcionalidade de um recipiente de dados criptografado, uma opção é armazenar os atributos confidenciais em um local seguro, como um bucket privado do Amazon S3. Suas receitas podem então usar o AWS Ruby SDK, que está instalado em todas as instâncias do AWS OpsWorks Stacks, para baixar os dados do bucket.

nota

Cada instância do AWS OpsWorks Stacks tem um perfil de instância. O perfil do IAM associado especifica quais recursos do AWS podem ser acessados por aplicativos que estão sendo executados na instância. Para que suas receitas possam acessar um bucket do Amazon S3, a política de atribuição do perfil deve incluir uma instrução semelhante à seguinte, que concede permissão para a recuperação de arquivos de um bucket especificado.

"Action": ["s3:GetObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",

Para obter mais informações sobre os perfis de instância, consulte Especificação de permissões para aplicativos executados em instâncias EC2 .