

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

# Versões do Chef
<a name="workingcookbook-chef11"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

OpsWorks O Stacks suporta várias versões do Chef. Você seleciona a versão ao [criar a pilha](workingstacks-creating.md). OpsWorks O Stacks então instala essa versão do Chef em todas as instâncias da pilha junto com um conjunto de receitas integradas que são compatíveis com essa versão. Se você instalar uma ou mais receitas personalizadas, elas devem ser compatíveis com a versão do Chef usada pela pilha.

OpsWorks Atualmente, o Stacks oferece suporte às versões 12, 11.10, 11.4 e 0.9 do Chef para pilhas Linux e ao Chef 12.2 (atualmente Chef 12.22) para pilhas do Windows. Para sua conveniência, essas versões são geralmente chamadas apenas pelos números de versão maior e menor. Para pilhas do Linux, você pode usar o Gerenciador de configuração para especificar a versão do Chef que deseja utilizar quando [cria uma pilha](workingstacks-creating.md). As pilhas do Windows devem usar Chef 12.2. Para obter mais informações, incluindo as orientações necessárias para migrar pilhas para versões mais recentes do Chef, consulte [Versões do Chef](#workingcookbook-chef11). Para obter informações completas sobre as versões, consulte [OpsWorks Sistemas operacionais de pilha](workinginstances-os.md).

**Chef 12.2**  
O suporte ao Chef 12.2 foi introduzido em maio de 2015 e é usado somente por pilhas do Windows. A versão atual do Chef nas pilhas do Windows é o Chef 12.22. Ela é executada com o Ruby 2.3.6 e usa [o cliente do Chef no modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode) que executa um servidor do Chef na memória local chamado [chef-zero](https://docs.chef.io/ctl_chef_client.html#about-chef-zero). A presença desse servidor permite que as receitas utilizem a pesquisa e os recipientes de dados do Chef. O suporte apresenta algumas limitações que são descritas em [Implementação de receitas: Chef 12.2](workingcookbook-chef12.md), mas você pode executar vários livros de receitas da comunidade, sem alterações.

**Chef 12**  
O suporte ao Chef 12 foi introduzido em dezembro de 2015 e é usado somente por pilhas do Linux. Ele é executado com o Ruby 2.1.6 ou 2.2.3 e usa [o cliente do Chef no modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), o que permite que as receitas utilizem a pesquisa e os recipientes de dados do Chef. Para obter mais informações, consulte [OpsWorks Sistemas operacionais de pilha](workinginstances-os.md).

**Chef 11.10**  
O suporte ao Chef 11.10 foi introduzido em março de 2014, e é usado somente por pilhas do Linux. Ele é executado com o Ruby 2.0.0 e usa [o cliente do Chef no modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), o que permite que as receitas utilizem a pesquisa e os recipientes de dados do Chef. O suporte apresenta algumas limitações que são descritas em [Implementação de receitas: Chef 11.10](workingcookbook-chef11-10.md), mas você pode executar vários livros de receitas da comunidade, sem alterações. Você também pode usar o [Berkshelf](http://berkshelf.com/) para gerenciar suas dependências dos livros de receitas. As versões compatíveis do Berkshelf dependem do sistema operacional. Para obter mais informações, consulte [OpsWorks Sistemas operacionais de pilha](workinginstances-os.md). Não é possível criar pilhas do CentOS que usam o Chef 11.10.

**Chef 11.4**  
O suporte ao Chef 11.4 foi introduzido em julho de 2013 e é usado somente por pilhas do Linux. Ele é executado com o Ruby 1.8.7 e usa o [chef-solo](https://docs.chef.io/chef_solo.html), que não oferece suporte à pesquisa ou aos recipientes de dados do Chef. Muitas vezes, você pode usar livros de receitas da comunidade que dependem desses recursos com o OpsWorks Stacks, mas deve modificá-los conforme descrito em. [Migração para uma nova versão do Chef](workingcookbook-chef11-migrate.md) Não é possível criar pilhas do CentOS que usam o Chef 11.4. As pilhas do Chef 11.4 não são compatíveis com endpoints regionais fora do Leste dos EUA (N. da Virgínia).

**Chef 0.9**  
 O Chef 0.9 é usado somente por pilhas do Linux e não é mais compatível. Observe os seguintes detalhes:   
+ Não é possível usar o console para criar uma nova pilha do Chef 0.9.

  Você deve usar a CLI ou API, ou criar uma pilha usando uma versão diferente do Chef e, em seguida, editar a configuração da pilha.
+ Os novos recursos de OpsWorks pilhas não estão disponíveis para pilhas do Chef 0.9.
+ As novas versões de sistemas operacionais fornecerão apenas suporte limitado para pilhas do Chef 0.9.

  O Amazon Linux 2014.09 e suas versões posteriores não são compatíveis com as pilhas do Chef 0.9 com camadas Rails App Server que dependem do Ruby 1.8.7.
+ As novas regiões da AWS, incluindo a Europa (Frankfurt), não são compatíveis com as pilhas do Chef 0.9.
Não é recomendável usar o Chef 0.9 para novas pilhas. Você deve migrar as pilhas existentes para a última versão do Chef o mais rápido possível.

Se você quiser usar livros de receitas da comunidade com OpsWorks Stacks, recomendamos [que você especifique o Chef 12](workingstacks-creating.md) para novas pilhas Linux e migre suas pilhas Linux existentes para o Chef 12. Você pode usar o console, a API ou a CLI do OpsWorks Stacks para migrar suas pilhas existentes para uma versão mais recente do Chef. Para obter mais informações, consulte [Migração para uma nova versão do Chef](workingcookbook-chef11-migrate.md).

**Topics**
+ [Implementação de receitas em pilhas do Chef 12.2](workingcookbook-chef12.md)
+ [Implementação de receitas em pilhas do Chef 12](workingcookbook-chef12-linux.md)
+ [Implementação de receitas em pilhas do Chef 11.10](workingcookbook-chef11-10.md)
+ [Implementação de receitas em pilhas do Chef 11.4](workingcookbook-chef11-4.md)
+ [Migração de uma pilha existente do Linux para uma nova versão do Chef](workingcookbook-chef11-migrate.md)

# Implementação de receitas em pilhas do Chef 12.2
<a name="workingcookbook-chef12"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

Chef 12.2 (atualmente Chef 12.22) está disponível somente em pilhas do Windows, o qual deve executar essa versão do Chef.
+ As receitas devem usar atributos e recursos específicos do Windows para algumas finalidades.

  Para obter mais informações, consulte [Chef para Microsoft Windows](https://docs.chef.io/windows.html).
+ As execuções do Chef usam o Ruby 2.3.6 e, portanto, suas receitam podem usar a nova sintaxe do Ruby.
+ As receitas podem usar a pesquisa e os recipientes de dados do Chef.

  As pilhas do Chef 12.2 podem usar muitos livros de receitas da comunidade sem alterá-los. Para obter mais informações, consulte [Utilização da pesquisa do Chef](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search) e [Utilização de recipientes de dados](workingcookbook-chef11-10.md#workingcookbook-chef11-10-databag).
+ A maioria dos atributos de configuração e implantação de pilha descritos em [OpsWorks Referência do Stacks Data Bag](data-bags.md) e [Atributos de livros de receitas integrados](attributes-recipes.md) estão disponíveis nas receitas do Windows.

  Você pode usar a pesquisa do Chef para obter os valores desses atributos. Para ver um exemplo, consulte [Obter valores de atributo com a pesquisa do Chef](cookbooks-101-opsworks-opsworks-stack-config-search.md). Para obter uma lista de atributos, consulte [OpsWorks Referência do Stacks Data Bag](data-bags.md).

# Implementação de receitas em pilhas do Chef 12
<a name="workingcookbook-chef12-linux"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

As pilhas do Chef 12 apresentam as seguintes vantagens em relação às pilhas do Chef 11.10:
+ As execuções do Chef usam o Ruby 2.1.6 e, portanto, suas receitam podem usar a nova sintaxe do Ruby.
+ As pilhas do Chef 12 podem usar ainda mais livros de receitas da comunidade sem alterá-los. Com a ausência dos livros de receitas integrados, não há mais chance de conflito de nome entre os livros de receitas integrados e os livros de receitas personalizados. 
+ Você não está mais limitado às versões da Berkshelf para as quais o OpsWorks Stacks forneceu pacotes pré-construídos. O Berkshelf não está mais instalado nas instâncias do OpsWorks Stacks no Chef 12. Em vez disso, você pode usar qualquer versão do Berkshelf na sua estação de trabalho local. 
+ Agora há uma separação clara entre os livros de receitas integrados que o OpsWorks Stacks fornece com o Chef 12 (Elastic Load Balancing, Amazon RDS e Amazon ECS) e os livros de receitas personalizados. Isso torna mais fácil a solução de problemas em execuções com falha do Chef.

# Implementação de receitas em pilhas do Chef 11.10
<a name="workingcookbook-chef11-10"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

As pilhas do Chef 11.10 apresentam as seguintes vantagens em relação às stacks do Chef 11.4:
+ As execuções do Chef usam o Ruby 2.0.0 e, portanto, suas receitam podem usar a nova sintaxe do Ruby.
+ As receitas podem usar a pesquisa e os recipientes de dados do Chef.

  As pilhas do Chef 11.10 podem usar muitos livros de receitas da comunidade sem alterá-los.
+ Você pode usar o Berkshelf para gerenciar os livros de receitas.

  O Berkshelf oferece uma maneira muito mais flexível de gerenciar os seus livros de receitas personalizados e usar os livros de receitas da comunidade em uma pilha.
+ Os livros de receitas devem ter suas dependências declaradas no `metadata.rb`.

  Se o seu livro de receitas depende de outro livro de receitas, você deve incluir essa dependência no arquivo `metadata.rb` do livro de receitas. Por exemplo, se o seu livro de receitas inclui uma receita com a instrução `include_recipe anothercookbook::somerecipe`, o arquivo `metadata.rb` do livro de receitas deve incluir a seguinte linha: `depends "anothercookbook"`.
+ OpsWorks O Stacks instala um cliente MySQL nas instâncias de uma pilha somente se a pilha incluir uma camada MySQL.
+ OpsWorks O Stacks instala um cliente Ganglia nas instâncias de uma pilha somente se a pilha incluir uma camada Ganglia.
+ Se uma implantação executar a `bundle install` e a instalação falhar, a implantação também falha.

**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](https://github.com/aws/opsworks-cookbooks)  
Livros de receitas com caracteres não ASCII que são executados com êxito nas pilhas do Chef 0.9 e 11.4 podem falhar quando executados em uma pilha do Chef 11.10. Isso ocorre porque as pilhas do Chef 11.10 usam o Ruby 2.0.0 para execuções do Chef, que é muito mais rigoroso em relação à codificação do que o Ruby 1.8.7. Para garantir que os livros de receitas executem com êxito nas pilhas do Chef 11.10, todo arquivo que utiliza caracteres não ASCII deve ter um comentário na parte superior informando sobre a codificação. Por exemplo, para a codificação UTF-8, o comentário seria `# encoding: UTF-8`. Para obter mais informações sobre a codificação no Ruby 2.0.0, consulte [Codificação](http://www.ruby-doc.org/core-2.0.0/Encoding.html).

**Topics**
+ [Instalação e precedência em livros de receitas](#workingcookbook-chef11-10-override)
+ [Utilização da pesquisa do Chef](#workingcookbook-chef11-10-search)
+ [Utilização de recipientes de dados](#workingcookbook-chef11-10-databag)
+ [Utilização do Berkshelf](#workingcookbook-chef11-10-berkshelf)

## Instalação e precedência em livros de receitas
<a name="workingcookbook-chef11-10-override"></a>

O procedimento para instalar os livros de receitas do OpsWorks Stacks funciona de forma um pouco diferente para as pilhas do Chef 11.10 do que para as versões anteriores do Chef. Para pilhas do Chef 11.10, depois que o OpsWorks Stacks instala os livros de receitas integrados, personalizados e Berkshelf, ele os mescla em um diretório comum na seguinte ordem:

1. Livros de receitas integrados.

1. Livros de receitas do Berkshelf, se houver.

1. Livros de receitas personalizados, se houver. 

Quando o OpsWorks Stacks realiza essa mesclagem, ele copia todo o conteúdo dos diretórios, incluindo receitas. Se houver duplicatas, as seguintes regras se aplicam:
+ O conteúdo dos livros de receitas do Berkshelf tem preferência sobre os livros de receitas integrados.
+ O conteúdo dos livros de receitas personalizados tem preferência sobre os livros de receitas do Berkshelf.

Para ilustrar como esse processo funciona, considere o seguinte cenário, onde todos os três diretórios de livros de receitas contêm um livro de receitas chamado `mycookbook`:
+ Livros de receitas integrados: `mycookbook` inclui um arquivo de atributos chamado `someattributes.rb`, um arquivo de modelo chamado `sometemplate.erb` e uma receita chamada `somerecipe.rb`.
+ Livros de receitas do Berkshelf: `mycookbook` inclui `sometemplate.erb` e `somerecipe.rb`.
+ Livros de receitas personalizados: `mycookbook` inclui `somerecipe.rb`.

O livro de receitas mesclado contém o seguinte:
+ `someattributes.rb` do livro de receitas integrado.
+ `sometemplate.erb` do livro de receitas do Berkshelf.
+ `somerecipe.rb` do livro de receitas personalizado.

**Importante**  
Você não deve personalizar sua pilha do Chef 11.10 copiando um livro de receitas integrado inteiro para o repositório e, em seguida, modificando partes dele. Se fizer isso, você estará substituindo todo o livro de receitas integrado, incluindo as receitas. Se o OpsWorks Stacks atualizar esse livro de receitas, sua pilha não obterá os benefícios dessas atualizações, a menos que você atualize manualmente sua cópia privada. Para obter mais informações sobre como personalizar as pilhas, consulte [Personalizando pilhas OpsWorks](customizing.md).

## Utilização da pesquisa do Chef
<a name="workingcookbook-chef11-10-search"></a>

Você pode utilizar o método [http://docs.chef.io/dsl_recipe.html#search](http://docs.chef.io/dsl_recipe.html#search) do Chef em suas receitas para consultar os dados da pilha. Você usa a mesma sintaxe que usaria para o Chef Server, mas o OpsWorks Stacks obtém os dados do objeto do nó local em vez de consultar um servidor Chef. Esses dados incluem:
+ Os [atributos de configuração e implantação da pilha](workingstacks-json.md) da instância.
+ Os atributos dos arquivos de atributos dos livros de receitas integrados e personalizados da instância.
+ Os dados do sistema coletados pelo Ohai.

Os atributos de configuração e implantação da pilha contêm a maioria das informações que as receitas normalmente obtêm por meio da pesquisa, incluindo dados como nomes de host e endereços IP de cada instância on-line na pilha. OpsWorks As pilhas atualizam esses atributos para cada [evento do ciclo](workingcookbook-events.md) de vida, o que garante que eles reflitam com precisão o estado atual da pilha. Isso significa que você pode, muitas vezes, usar receitas da comunidade que sejam dependentes de pesquisa em sua pilha sem alterá-las. O método de pesquisa ainda retorna os dados apropriados; o que ocorre é que eles estão vindo dos atributos de configuração e implantação da pilha, em vez de um servidor.

A principal limitação da pesquisa de OpsWorks pilhas é que manipula somente os dados no objeto do nó local, em particular a configuração da pilha e os atributos de implantação. Por esse motivo, os seguintes tipos de dados podem não estar disponíveis por meio de pesquisa:
+ Atributos definidos localmente em outras instâncias.

  Se uma receita define um atributo localmente, essas informações não são reportadas ao serviço OpsWorks Stacks, então você não pode acessar esses dados de outras instâncias usando a pesquisa.
+ Atributos `deploy` personalizados.

  Você pode especificar um JSON personalizado quando [implanta um aplicativo](workingapps-deploying.md) e os atributos correspondentes são instalados nas instâncias da pilha para aquela implantação. No entanto, se você implantar apenas em instâncias selecionadas, os atributos são instalados apenas nessas instâncias. As consultas sobre esses atributos JSON personalizados falharão em todas as outras instâncias. Além disso, os atributos personalizados são incluídos no JSON de configuração e implantação da pilha apenas para essa implantação específica. Eles estarão acessíveis apenas até que o próximo evento de ciclo de vida instale um novo conjunto de atributos de configuração e implantação da pilha. Observe que quando você [especifica um JSON personalizado para a pilha](workingstacks-json.md), os atributos são instalados em cada instância para cada evento de ciclo de vida e estão sempre acessíveis por meio de pesquisa.
+ Dados do Ohai de outras instâncias.

  A [ferramenta Ohai](http://docs.chef.io/resource_ohai.html) do Chef obtém uma variedade de dados de sistema de uma instância e os adiciona ao objeto de nó. Esses dados são armazenados localmente e não são passados de volta ao serviço do OpsWorks Stacks, portanto a pesquisa não pode acessar os dados do Ohai a partir de outras instâncias. No entanto, alguns desses dados podem ser incluídos nos atributos de configuração e implantação da pilha.
+ Instâncias off-line.

  Os atributos de configuração e implantação da pilha somente contêm dados de instâncias online.

O trecho da receita a seguir mostra como obter o endereço IP privado de uma instância da camada de PHP usando a pesquisa. 

```
appserver = search(:node, "role:php-app").first
Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
```

**nota**  
Quando o OpsWorks Stacks adiciona os atributos de configuração e implantação da pilha ao objeto do nó, ele realmente cria dois conjuntos de atributos de camada, cada um com os mesmos dados. Um conjunto está no `layers` namespace, que é como o OpsWorks Stacks armazena os dados. O outro conjunto fica no namespace `role`, que é como o servidor Chef armazena os dados equivalentes. O objetivo do `role` namespace é permitir que o código de pesquisa que foi implementado para o Chef Server seja executado em uma instância do OpsWorks Stacks. Se você estiver escrevendo código especificamente para OpsWorks Stacks, poderá usar um `layers:php-app` ou `role:php-app` o exemplo anterior e `search` retornará o mesmo resultado.

## Utilização de recipientes de dados
<a name="workingcookbook-chef11-10-databag"></a>

Você pode usar o método [http://docs.chef.io/dsl_recipe.html#data-bag-item](http://docs.chef.io/dsl_recipe.html#data-bag-item) do Chef nas suas receitas para consultar informações em um recipiente de dados. A sintaxe usada é a mesma que você usaria para o servidor Chef, mas o OpsWorks Stacks obtém os dados dos atributos de configuração e implantação da pilha da instância. No entanto, o OpsWorks Stacks atualmente não oferece suporte aos ambientes do Chef, portanto, `node.chef_environment` sempre retorna`_default`.

Você pode criar um recipiente de dados usando um JSON personalizado para adicionar um ou mais atributos ao atributo `[:opsworks][:data_bags]`. O exemplo a seguir mostra o formato geral de criação de um recipiente de dados em um JSON personalizado.

**nota**  
Não é possível criar um recipiente de dados adicionando-o ao repositório de livros de receitas. Você deve usar um JSON personalizado.

```
{
  "opsworks": {
    "data_bags": {
      "bag_name1": {
        "item_name1: {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      "bag_name2": {
        "item_name1": {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      ...
    }
  }
}
```

Normalmente, você [especifica um JSON personalizado para a pilha](workingstacks-json.md), que instala os atributos personalizados em cada instância para cada evento de ciclo de vida subsequente. Você também pode especificar um JSON personalizado quando implanta um aplicativo, mas os atributos são instalados apenas para essa implantação e só podem ser instalados para um conjunto de instâncias selecionado. Para obter mais informações, consulte [Implementação de aplicativos](workingapps-deploying.md).

O seguinte exemplo de JSON personalizado cria um recipiente de dados chamado `myapp`. Ele possui um item `mysql` com dois pares de chave e valor.

```
{ "opsworks": {
    "data_bags": {
      "myapp": {
        "mysql": { 
          "username": "default-user",
          "password": "default-pass"
        }
      }
    }
  }
}
```

Para usar os dados em sua receita, você pode chamar o `data_bag_item` e passar para ele os nomes do recipiente de dados e do valor, como mostra o trecho a seguir.

```
mything = data_bag_item("myapp", "mysql")
Chef::Log.info("The username is '#{mything['username']}' ")
```

Para modificar os dados no recipiente de dados, basta modificar o JSON personalizado e ele será instalado nas instâncias da pilha para o próximo evento de ciclo de vida. 

## Utilização do Berkshelf
<a name="workingcookbook-chef11-10-berkshelf"></a>

Em pilhas do Chef 0.9 e Chef 11.4, você pode instalar apenas um repositório de livros de receitas personalizados. Em pilhas do Chef 11.10, você pode usar o [Berkshelf](http://berkshelf.com/) para gerenciar os livros de receitas e suas dependências, o que permite a você instalar livros de receitas de vários repositórios. (Para ter mais informações, consulte [Empacotar dependências do livro de receitas localmente](best-practices-packaging-cookbooks-locally.md).) Em particular, com o Berkshelf, você pode instalar livros de receitas da comunidade OpsWorks compatíveis com Stacks diretamente de seus repositórios, em vez de precisar copiá-los para seu repositório de livros de receitas personalizado. As versões compatíveis do Berkshelf dependem do sistema operacional. Para obter mais informações, consulte [OpsWorks Sistemas operacionais de pilha](workinginstances-os.md).

Para usar o Berkshelf, você deve habilitá-lo de forma explícita, conforme descrito em [Instalação de livros de receitas personalizados](workingcookbook-installingcustom-enable.md). Em seguida, inclua um arquivo `Berksfile` no diretório raiz do repositório do seu livro de receitas para especificar os livros de receitas a serem instalados. 

Para especificar a origem externa de um livros de receitas em um Berksfile, inclua um atributo de origem na parte superior do arquivo que especifica o URL do repositório padrão. A Berkshelf procurará os livros de receitas na fonte, a URLs menos que você especifique explicitamente um repositório. Em seguida, inclua uma linha para cada livro de receitas que você deseja instalar no seguinte formato: 

```
cookbook 'cookbook_name', ['>= cookbook_version'], [cookbook_options]
```

Os campos que vêm logo após `cookbook` especificam o livro de receitas específico.
+ *cookbook\$1name*— (Obrigatório) Especifica o nome do livro de receitas.

  Se você não incluir nenhum outro campo, a Berkshelf instala o livro de receitas a partir da fonte especificada. URLs
+ *cookbook\$1version*— (Opcional) Especifica a versão ou versões do livro de receitas.

  Você pode usar um prefixo como `=` ou `>=` para especificar uma versão específica ou um intervalo de versões aceitas. Se você não especificar uma versão, o Berkshelf instala a mais recente.
+ *cookbook\$1options*— (Opcional) O campo final é um hash contendo um ou mais pares de valores-chave que especificam opções como a localização do repositório.

  Por exemplo, você pode incluir uma chave `git` para designar um repositório Git específico e uma chave `tag` para designar uma ramificação específica do repositório. Especificar a ramificação do repositório é geralmente a melhor forma de garantir que você está instalando o livro de receitas de sua preferência.

**Importante**  
Não faça a declaração de livros de receitas incluindo uma linha de `metadata` em seu Berksfile ou incluindo a declaração das dependências do livro de receitas no `metadata.rb`. Para que isso funcione corretamente, ambos os arquivos devem estar no mesmo diretório. Com o OpsWorks Stacks, o Berksfile deve estar no diretório raiz do repositório, mas os `metadata.rb` arquivos devem estar em seus respectivos diretórios do livro de receitas. Em vez disso, você deve incluir as declarações explícitas dos livros de receitas externos no Berksfile.

Veja a seguir o exemplo de um Berksfile que mostra diferentes maneiras para especificar livros de receitas. Para obter mais informações sobre como criar um Berksfile, consulte [Berkshelf](http://berkshelf.com/).

```
source "https://supermarket.chef.io"

cookbook 'apt'
cookbook 'bluepill', '>= 2.3.1'
cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git'
cookbook 'build-essential', '>= 1.4.2', git: 'git://github.com/opscode-cookbooks/build-essential.git', tag: 'v1.4.2'
```

Este arquivo instala os seguintes livros de receitas:
+ A versão mais recente do `apt` do repositório de livros de receitas da comunidade.
+ A versão mais recente do `bluepill` dos livros de receitas da comunidade, desde que seja a versão 2.3.1 ou posterior.
+ A versão mais recente do `ark` de um repositório especificado.

  A URL deste exemplo é para um repositório público de livros de receitas da comunidade em GitHub, mas você pode instalar livros de receitas de outros repositórios, incluindo repositórios privados. Para obter mais informações, consulte [Berkshelf](http://berkshelf.com/).
+ O livro de receitas `build-essential` da ramificação v1.4.2 do repositório especificado.

Um repositório de livros de receitas personalizados pode conter livros de receitas personalizados, além de um Berksfile. Nesse caso, o OpsWorks Stacks instala os dois conjuntos de livros de receitas, o que significa que uma instância pode ter até três repositórios de livros de receitas. 
+ Os livros de receitas integrados são instalados em `/opt/aws/opsworks/current/cookbooks`.
+ Se o seu repositório de livros de receitas personalizados contém livros de receitas, eles estão instalados em `/opt/aws/opsworks/current/site-cookbooks`.
+ Se você habilitou o Berkshelf e seu repositório de livros de receitas personalizados contém um Berksfile, os livros de receitas especificados são instalados em `/opt/aws/opsworks/current/berkshelf-cookbooks`.

Os livros de receitas integrados e seus livros de receitas personalizados são instalados em cada instância durante a configuração e não são atualizados posteriormente, a menos que você execute manualmente o comando [**Atualizar pilha de livros de receitas personalizados**](workingstacks-commands.md). OpsWorks As pilhas são `berks install` executadas a cada execução do Chef, então seus livros de receitas da Berkshelf são atualizados para cada [evento do ciclo](workingcookbook-events.md) de vida, de acordo com as seguintes regras: 
+ Se você tiver uma nova versão de um livro de receitas no repositório, esta operação atualiza o livro de receitas do repositório.
+ Caso contrário, essa operação atualiza os livros de receitas do Berkshelf de um cache local.

**nota**  
A operação sobrescreve os livros de receitas do Berkshelf e, portanto, se você tiver modificado as cópias locais de quaisquer livros de receitas, essas alterações serão sobrescritas. Para obter mais informações, consulte [Berkshelf](http://berkshelf.com/)

Você também pode atualizar seus livros de receitas do Berkshelf executando o comando da pilha**Update Custom Cookbooks**, que atualiza ambos os livros de receitas do Berkshelf e personalizados.

# Implementação de receitas em pilhas do Chef 11.4
<a name="workingcookbook-chef11-4"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/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](https://github.com/aws/opsworks-cookbooks)

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 OpsWorks Stacks instala [os atributos de configuração e implantação da pilha](workingcookbook-json.md) 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 OpsWorks Stacks, como camadas, aplicativos e instâncias da pilha, além de 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.

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 OpsWorks](customizing.md). Para obter mais informações sobre a implantação de diretórios, consulte [Receitas de implantação](create-custom-deploy.md).

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](workingstacks-json.md). 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](workingcookbook-json-override.md).

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](https://aws.amazon.com/documentation/sdkforruby/), que está instalado em todas as instâncias do OpsWorks Stacks, para baixar os dados do bucket. 

**nota**  
Cada instância do OpsWorks Stacks tem um perfil de instância. O [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html) 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](opsworks-security-appsrole.md).

# Migração de uma pilha existente do Linux para uma nova versão do Chef
<a name="workingcookbook-chef11-migrate"></a>

**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](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

Você pode usar o console, a API ou a CLI do OpsWorks Stacks para migrar suas pilhas do Linux para uma versão mais recente do Chef. No entanto, pode ser necessário modificar suas receitas para que sejam compatíveis com a versão mais recente. Durante a preparação para a migração de uma pilha, considere o seguinte.
+ Você não pode alterar as versões da OpsWorks pilha de pilhas do Chef 11 para o Chef 12 editando ou clonando a pilha. A atualização de uma versão principal do Chef não pode ser executada usando os procedimentos desta seção. Para obter mais informações sobre a transição do Chef 11.10 para o Chef 12, consulte [Implementação de receitas: Chef 12](workingcookbook-chef12-linux.md).
+ A transição de uma versão do Chef para outra envolve uma série de alterações, e algumas delas são alterações interruptivas.

  Para obter mais informações sobre a transição do Chef 0.9 para o Chef 11.4, consulte [Migração para uma nova versão do Chef](#workingcookbook-chef11-migrate). Para obter mais informações sobre a transição do Chef 11.4 para o Chef 11.10, consulte [Implementação de receitas: Chef 11.10](workingcookbook-chef11-10.md). Para obter mais informações sobre a transição do Chef 11.10 para o Chef 12, consulte [Implementação de receitas: Chef 12](workingcookbook-chef12-linux.md).
+ As execuções do Chef usam versões diferentes do Ruby nas pilhas do Chef 0.9 e Chef 11.4 (Ruby 1.8.7), do Chef 11.10 (Ruby 2.0.0) e do Chef 12 (Ruby 2.1.6).

  Para obter mais informações, consulte [Versões do Ruby](workingcookbook-ruby.md).
+ As pilhas do Chef 11.10 lidam com a instalação de livros de receitas de forma diferente das pilhas do Chef 0.9 ou do Chef 11.4.

  Essa diferença pode causar problemas durante a migração de pilhas que usam livros de receitas personalizados para o Chef 11.10. Para obter mais informações, consulte [Instalação e precedência em livros de receitas](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override).

 Veja a seguir as diretrizes recomendadas para a migração de uma pilha do Chef para uma versão mais recente do Chef:

**Para migrar uma pilha para uma versão mais recente do Chef**

1. [Faça a clonagem da sua pilha de produção](workingstacks-cloning.md). Na página **Clone Stack**, clique em **Advanced>>** para exibir a seção **Configuration Management**, e mude **Chef version** para a próxima versão mais recente.
**nota**  
Se você estiver começando de uma pilha do Chef 0.9, não poderá fazer upgrade diretamente para o Chef 11.10. Primeiro, será necessário fazer upgrade para o Chef 11.4. Se quiser migrar sua pilha para o Chef 11.10 antes de testar suas receitas, aguarde 20 minutos para que a atualização seja executada e, em seguida, atualize a pilha de 11.4 para 11.10.

1. Adicione instâncias às camadas e teste os aplicativos e livros de receitas da pilha clonada em um sistema de teste ou de preparação. Para mais informações, consulte [Tudo sobre o Chef ...](https://docs.chef.io/index.html).

1. Quando os resultados dos testes forem satisfatórios, faça o seguinte:
   + Se esta for a versão desejada do Chef, você pode usar a pilha clonada como sua pilha de produção ou redefinir a versão do Chef em sua pilha de produção. 
   + Se você estiver fazendo a migração do Chef 0.9 para o Chef 11.10 em duas etapas, repita o processo para migrar a pilha do Chef 11.4 para o Chef 11.10.

**nota**  
Quando você está testando receitas, pode [usar o SSH para se conectar à](workinginstances-ssh.md) instância e, em seguida, usar o comando da [CLI do agente da instância](agent.md) [run\$1command](agent-run.md) para executar as receitas associadas aos vários eventos de ciclo de vida. A CLI do agente é especialmente útil para testar o Configurar receitas, pois você pode usá-la até mesmo quando a configuração falha e a instância não atinge o estado online. Você também pode usar o [comando Configurar pilha](workingstacks-commands.md) para executar novamente o comando Configurar receitas, mas esse comando só estará disponível se a configuração tiver êxito e a instância estiver online. 

É possível atualizar uma pilha em execução para uma nova versão do Chef.

**Para atualizar uma pilha em execução para uma nova versão do Chef**

1. [Edite a pilha](workingstacks-edit.md) para alterar a configuração **Chef version** dela.

1. Salve as novas configurações e espere que as OpsWorks pilhas atualizem as instâncias, o que normalmente leva de 15 a 20 minutos.

**Importante**  
OpsWorks O Stacks não sincroniza a atualização da versão do Chef com os eventos do ciclo de vida. Se você deseja atualizar a versão do Chef em uma pilha de produção, deve tomar cuidado para garantir que a atualização seja concluída antes que o próximo [evento de ciclo de vida](workingcookbook-events.md) ocorra. Quando ocorre um evento, normalmente um evento de configuração ou implantação, o agente da instância atualiza os livros de receitas personalizados e executa as receitas atribuídas a esse evento, esteja a atualização de versão concluída ou não. Não há uma maneira direta de se determinar quando uma atualização de versão está concluída, mas os logs de implantação incluem a versão do Chef.