Etapa 2.3: Implementar um livro de receitas personalizado - 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á.

Etapa 2.3: Implementar um livro de receitas personalizado

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.

Apesar de uma pilha ser basicamente um contêiner de instâncias, você não adiciona instâncias diretamente à pilha. Você pode adicionar uma ou mais camadas, cada uma representando um grupo de instâncias relacionadas, e então adicionar instâncias às camadas.

Uma camada é basicamente um modelo que o AWS OpsWorks Stacks usa para criar um conjunto de instâncias do Amazon EC2 com a mesma configuração. Uma instância começa com uma versão base do sistema operacional, e a camada da instância executa uma variedade de tarefas na instância para implementar o esquema, que podem incluir:

  • Criação de diretórios e arquivos

  • Gerenciamento de usuários

  • Instalação e configuração de software

  • Iniciar ou interromper servidores

  • Implantação de código de aplicativo e arquivos relacionados.

Uma camada executa tarefas em instâncias ao executar receitas do Chef, receitas, para abreviar. Uma receita é um aplicativo Ruby que usa uma linguagem específica de domínio (DSL) do Chef para descrever o estado final da instância. Com o AWS OpsWorks Stacks, cada receita geralmente é atribuída a um dos eventos do ciclo de vida da camada: instalação, configuração, implantação, desimplantação e desativação. Quando ocorre um evento de ciclo de vida em uma instância, o AWS OpsWorks Stacks executa as receitas do evento para realizar as tarefas apropriadas. Por exemplo, o evento Setup ocorre após a conclusão da inicialização de uma instância. AWS OpsWorks Em seguida, o Stacks executa as receitas de instalação, que normalmente executam tarefas como instalar e configurar o software do servidor e iniciar serviços relacionados.

AWS OpsWorks O Stacks fornece a cada camada um conjunto de receitas integradas que executam tarefas padrão. Você pode estender a funcionalidade de uma camada ao implementar receitas personalizadas para realizar tarefas adicionais e atribuí-las aos eventos de ciclo de vida da camada. As pilhas do Windows são compatíveis com camadas personalizadas, que têm um conjunto mínimo de receitas que executam apenas algumas tarefas básicas. Para adicionar funcionalidade às suas instâncias do Windows, você deve implementar as receitas personalizadas para instalar software, implantar aplicativos e assim por diante. Este tópico descreve como criar uma camada personalizada simples para dar suporte a instâncias do IIS.

Uma rápida introdução aos livros de receitas e às receitas

Uma receita define um ou mais aspectos do estado esperado de uma instância: quais diretórios ela deve ter, quais pacotes de software devem estar instalados, quais aplicativos devem ser implantados e assim por diante. As receitas são empacotadas em um livro de receitas, que normalmente contém uma ou mais receitas relacionadas, além de arquivos associados, como modelos para a criação de arquivos de configuração.

Este tópico é uma introdução básica às receitas, apenas o suficiente para mostrar como implementar um livro de receitas para dar suporte a uma camada do IIS personalizada simples. Para obter uma introdução mais geral aos livros de receitas, consulte Livros de receitas e receitas. Para um tutorial detalhado de introdução à implementação de livros de receitas, incluindo alguns tópicos específicos do Windows, consulte Introdução a livros de receitas.

Tecnicamente, as receitas do Chef são aplicativos Ruby, mas a maior parte do código está no Chef DSL. O DSL é composto principalmente de um conjunto de recursos, que você pode usar para especificar de forma declarativa um aspecto do estado das instâncias. Por exemplo, um directory recurso define um diretório a ser adicionado ao sistema. O exemplo a seguir define um diretório C:\data com direitos de controle total que pertence ao usuário especificado e não herda direitos do diretório pai.

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Quando o Chef executa uma receita, ele executa cada recurso ao passar os dados para um provedor associado, um objeto Ruby que lida com os detalhes da modificação do estado da instância. Neste caso, o fornecedor cria um novo diretório com a configuração especificada.

O livro de receitas personalizado para a camada personalizada do IIS deve realizar as seguintes tarefas:

  • Instalar o recurso IIS e iniciar o serviço.

    Você normalmente realiza essa tarefa durante a instalação, logo após o término da inicialização da instância.

  • Implantar um aplicativo na instância, uma página HTML simples para este exemplo.

    Você normalmente realiza esta tarefa durante a instalação. No entanto, os aplicativos geralmente precisam ser atualizados regularmente e, portanto, você também precisa implantar as atualizações enquanto a instância está online.

Você poderia ter uma única receita para realizar todas essas tarefas. No entanto, a abordagem preferencial é ter receitas separadas para as tarefas de instalação e de implantação. Dessa maneira, você pode implantar as atualizações de aplicativo a qualquer momento, sem que seja necessário executar o código de instalação também. A seguir, como configurar um livro de receitas para dar suporte a uma camada personalizada do IIS. Os tópicos subsequentes mostrarão como implementar as receitas.

Para começar
  1. Crie um diretório chamado iis-cookbook em um local conveniente na sua estação de trabalho.

  2. Adicione um arquivo metadata.rb com o seguinte conteúdo a iis-cookbook.

    name "iis-cookbook" version "0.1.0"

    Este exemplo usa um metadata.rb mínimo. Para obter mais informações sobre como você pode usar este arquivo, consulte metadata.rb.

  3. Adicione um diretório recipes a iis-cookbook.

    Esse diretório, que deve ser nomeado como recipes, contém as receitas do livro de receitas.

Em geral, os livros de receitas podem conter uma variedade de outros diretórios. Por exemplo, se uma receita usar um modelo para criar um arquivo de configuração, o modelo geralmente ficará no diretório templates\default. O livro de receitas para este exemplo consiste inteiramente em receitas e, portanto, não precisará de outros diretórios. Além disso, este exemplo usa um único livro de receitas, mas você pode usar a quantidade necessária; com frequência, é preferível usar vários livros de receitas para projetos complexos. Por exemplo, você pode ter livros de receitas separados para as tarefas de instalação e de implementação. Para obter mais exemplos de livros de receitas, consulte Livros de receitas e receitas.

Implementar uma receita para instalar e iniciar o IIS

O IIS é um recurso do Windows, uma de um conjunto de componentes opcionais do sistema que você pode instalar no Windows Server. Você pode fazer uma receita instalar o IIS de uma das seguintes formas:

nota

O powershell_script está entre os recursos mais úteis para receitas do Windows. Você pode usá-lo para realizar várias tarefas em uma instância executando um PowerShell script ou cmdlet. Ele é especialmente útil para as tarefas que não são compatíveis com recursos do Chef.

Este exemplo executa um PowerShell script para instalar e iniciar o Servidor Web (IIS). O livro de receitas do windows será descrito mais tarde. Para obter um exemplo de como usar o windows_feature para instalar o IIS, consulte Instalar um recurso do Windows: IIS.

Adicione uma receita chamada install.rb com o conteúdo a seguir ao diretório recipes do livro de receitas.

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

A receita contém dois recursos.

powershell_script

powershell_scriptexecuta o PowerShell script ou cmdlet especificado. O exemplo tem as seguintes configurações de atributo:

  • code— Os PowerShell cmdlets a serem executados.

    Este exemplo executa um cmdlet Install-WindowsFeature, que instala o servidor web (IIS). Em geral, o atributo code pode ter qualquer número de linhas para que você possa executar quantos cmdlets precisar.

  • not-if: um atributo guard que garante que a receita só instalará o IIS se ele ainda não tiver sido instalado.

    Você geralmente deseja que as receitas sejam idempotentes, de forma que elas não percam tempo realizando a mesma tarefa mais de uma vez.

Cada recurso tem uma ação, que especifica a ação que o provedor deve realizar. Não há nenhuma ação explícita neste exemplo, então o provedor executa a :run ação padrão, que executa o PowerShell script especificado. Para ter mais informações, consulte Executando um PowerShell script do Windows.

serviço

Um service gerencia um serviço, neste caso, o serviço Servidor web IIS (W3SVC). O exemplo usa atributos padrão e especifica duas ações, :start e :enable, as quais iniciam e ativam o IIS.

nota

Se você quiser instalar software que use um instalador de pacotes, como o MSI, use um recurso windows_package. Para ter mais informações, consulte Instalar um pacote.

Ativar o livro de receitas personalizado

AWS OpsWorks O Stacks executa receitas de um cache local em cada instância. Para executar suas receitas personalizadas, você deve fazer o seguinte:

  • Armazene o livro de receitas em um repositório remoto.

    AWS OpsWorks O Stacks baixa os livros de receitas desse repositório para o cache local de cada instância.

  • Edite a pilha para ativar os livros de receitas personalizados.

    Os livros de receitas personalizados estão desativados por padrão; portanto, você deve ativar os livros de receitas personalizados para a pilha e fornecer o URL do repositório e as informações relacionadas.

AWS OpsWorks O Stacks oferece suporte a arquivos S3 e repositórios Git para livros de receitas personalizados; este exemplo usa um arquivo S3. Para ter mais informações, consulte Repositórios de livro de receitas.

Para usar um arquivo do S3
  1. Crie um arquivo .zip do diretório iis-cookbook.

    AWS OpsWorks As pilhas também oferecem suporte a arquivos .tgz (tar compactado com gzip) para pilhas do Windows.

  2. Faça upload do arquivo para um bucket do S3 na região Oeste dos EUA (N. da Califórnia) e torne o arquivo público. Você também pode usar arquivos privados do S3, mas os arquivos públicos são suficientes para este exemplo e um pouco mais simples de trabalhar.

    1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

    2. Se você ainda não tiver um bucket na us-west-1, escolha Criar bucket e crie um bucket na região Oeste dos EUA (N. da Califórnia).

    3. Na lista de buckets, clique no nome do bucket para o qual você deseja fazer upload do arquivo e clique em Upload (Fazer upload).

    4. Escolha Adicionar arquivos.

    5. Selecione o arquivo para fazer upload e escolha Open (Abrir).

    6. Na parte inferior da caixa de diálogo Upload - Select Files and Folders (Fazer upload — Selecionar arquivos e pastas), escolha Set Details (Definir detalhes).

    7. Na parte inferior da caixa de diálogo Set Details, escolha Set Permissions.

    8. Na caia de diálogo Set Permissions, escolha Make everything public.

    9. Na parte inferior da caixa de diálogo Set Permissions (Definir permissões), escolha Start Upload (Iniciar upload). Quando o upload for concluído, o arquivo iis-cookbook.zip será exibido em seu bucket.

    10. Escolha o bucket e escolha a guia Properties (Propriedades) para o bucket. Ao lado de Link, registre o URL do arquivo para uso posterior.

    Para obter mais informações sobre o upload de arquivos para um bucket do Amazon S3, consulte Como fazer upload de arquivos e pastas para um bucket do S3? no Guia do usuário do console do Amazon S3.

Importante

Até agora, a demonstração só custou a você um pouco de tempo, o serviço AWS OpsWorks Stacks é gratuito. No entanto, você deverá pagar por qualquer recurso da AWS que utilizar, como o armazenamento no Amazon S3. Assim que você fizer o upload do arquivo, começará a ser cobrado. Para obter mais informações, consulte Definição de preço da AWS.

Para ativar os livros de receitas personalizados para a pilha
  1. No console AWS OpsWorks Stacks, escolha Stack no painel de navegação e, em seguida, escolha Stack Settings no canto superior direito.

  2. Na parte superior direita da página Settings, escolha Edit.

  3. Na página Settings, defina Use custom Chef cookbooks como Yes e insira as seguintes informações:

    • Tipo de repositório: Arquivamento do S3.

    • URL do repositório: o URL do S3 do arquivo do livro de receitas registrado anteriormente.

  4. Escolha Save (Salvar) para atualizar a configuração da pilha.

AWS OpsWorks O Stacks instala seu livro de receitas personalizado em todas as novas instâncias. Observe que o AWS OpsWorks Stacks não instala ou atualiza automaticamente os livros de receitas personalizadas em instâncias online. Você pode fazer isso manualmente, conforme descrito posteriormente.