

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

# Exemplo 1: Instalação de pacotes
<a name="cookbooks-101-basics-packages"></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).

A instalação do pacote é um dos usos mais comuns de receitas e pode ser bem simples, dependendo do pacote. Por exemplo, a receita a seguir instala o Git em um sistema Linux.

```
package 'git' do
  action :install
end
```

O recurso [https://docs.chef.io/chef/resources.html#package](https://docs.chef.io/chef/resources.html#package) processa a instalação do pacote. Neste exemplo, você não precisa especificar nenhum atributo. O nome do recurso é o valor padrão do atributo `package_name`, que identifica o pacote. A ação `install` leva o provedor a instalar o pacote. Você pode simplificar ainda mais o código ignorando `install`; trata-se da ação padrão do recurso `package`. Quando você executa a receita, o Chef usa o provedor apropriado para instalar o pacote. No sistema Ubuntu que você usará para o exemplo, o provedor instala o Git chamando `apt-get`.

**nota**  
A instalação do software em um sistema Windows exige um procedimento um pouco diferente. Para obter mais informações, consulte [Instalar o softwares do Windows](cookbooks-101-opsworks-install-software.md).

Para usar o Test Kitchen a fim de executar essa receita no Vagrant, você primeiro precisa configurar um livro de receitas, além de inicializar e configurar o Test Kitchen. Este procedimento se destina um sistema Linux, mas é essencialmente igual para sistemas Windows e Macintosh. Comece abrindo uma janela Terminal; todos os exemplos deste capítulo usam ferramentas de linha de comando.

**Para preparar o livro de receitas**

1. No diretório inicial, crie um subdiretório chamado `opsworks_cookbooks`, que conterá todos os livros de receitas deste capítulo. Em seguida, crie um subdiretório para este livro de receitas chamado `installpkg` e navegue até ele.

1. Em `installpkg`, crie um arquivo chamado `metadata.rb` que contém o código a seguir.

   ```
   name "installpkg"
   version "0.1.0"
   ```

   Para simplificar, os exemplos deste capítulo apenas especificam o nome e a versão do livro de receitas, mas `metadata.rb` pode conter uma grande variedade de metadados sobre o livro de receitas. Para obter mais informações, consulte [Sobre metadados do livro de receitas](http://docs.chef.io/cookbook_repo.html#about-cookbook-metadata).
**nota**  
Não se esqueça de criar `metadata.rb` antes de inicializar o Test Kitchen; ele usa os dados para criar o arquivo de configuração padrão.

1. Em `installpkg`, execute `kitchen init`, que inicializa o Test Kitchen e instala o driver do Vagrant padrão.

1. O comando `kitchen init` cria um arquivo de configuração YAML em `installpkg` chamado `.kitchen.yml`. Abra o arquivo no editor de texto favorito. O arquivo `.kitchen.yml` inclui uma seção `platforms` que especifica em quais sistemas as receitas devem ser executadas. O Test Kitchen cria uma instância e executa as receitas especificadas em cada plataforma. 
**nota**  
Por padrão, o Test Kitchen executa receitas uma plataforma por vez. Se você adicionar um argumento `-p` a qualquer comando que cria uma instância, o Test Kitchen executará as receitas em todas as plataformas, em paralelo.

   Como uma única plataforma é suficiente para esse exemplo, edite `.kitchen.yml` para remover a plataforma `centos-6.4`. Seu arquivo `.kitchen.yml` deve se parecer com o seguinte:

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: default
       run_list:
         - recipe[installpkg::default]
       attributes:
   ```

   O Test Kitchen só executa as receitas que estejam na lista de execuções `.kitchen.yml`. Você identifica as receitas usando o `[cookbook_name::recipe_name]` formato, onde *recipe\$1name* omite a `.rb` extensão. Inicialmente, a lista de execuções `.kitchen.yml` contém a receita padrão do livro de receitas, `installpkg::default`. Como essa é a receita que implementará, você não precisa modificar a lista de execução.

1. Crie um subdiretório de `installpkg` chamado `recipes`.

   Caso um livro de receitas contenha receitas (a maioria deles contém), elas devem estar no subdiretório `recipes`.

Você já pode adicionar a receita ao livro de receitas e usar o Test Kitchen para executá-la em uma instância.

**Para executar a receita**

1. Crie um arquivo chamado `default.rb` que contenha o código de exemplo de instalação do Git no início da seção o salve no subdiretório `recipes`.

1. No diretório `installpkg`, execute `kitchen converge`. Este comando inicia uma nova instância do Ubuntu no Vagrant, copia os livros de receitas para a instância e inicia uma execução do Chef para realizar as receitas na lista de execução `.kitchen.yml`.

1. Para verificar se a receita foi bem-sucedida, execute `kitchen login`, que abre uma conexão SSH para a instância. Em seguida, execute `git --version` para verificar se o Git foi instalado com êxito. Para retornar à estação de trabalho, execute `exit`.

1. Quando terminar, execute `kitchen destroy` para desligar a instância. O exemplo a seguir usa um livro de receitas diferente.

Este exemplo foi uma boa maneira de começar, mas é especialmente simples. A instalação de outros pacotes pode ser mais complicada; talvez você possa precisar seguir uma ou todas as seguintes opções:
+ Crie e configure um usuário.
+ Crie um ou mais diretórios para dados, logs etc.
+ Instale um ou mais arquivos de configuração.
+ Especifique um nome de pacote ou valores de atributo diferentes para sistemas operacionais distintos.
+ Inicie um serviço e o reinicie, conforme necessário.

Os exemplos a seguir descrevem como resolver esses problemas, além de algumas outras operações úteis.