Migrando do Chef Server para o Stacks AWS OpsWorks - 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á.

Migrando do Chef Server para o Stacks AWS OpsWorks

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.

Como o AWS OpsWorks Stacks é baseado no Chef, a migração do Chef Server para o AWS OpsWorks Stacks é relativamente simples. Este tópico oferece orientações para modificar o código do Chef Server para que ele funcione com o AWS OpsWorks Stacks.

nota

Não recomendamos a migração para pilhas que usam versões do Chef anteriores à 11.10, que são baseadas somente em Chef e não são compatíveis com pesquisa ou recipientes de dados.

Funções de mapeamento para camadas

O Chef Server usa funções para representar e gerenciar instâncias com a mesma finalidade e configuração, como um conjunto de instâncias em que cada uma hospeda um servidor de aplicativos Java. Uma camada do AWS OpsWorks Stacks tem essencialmente a mesma finalidade que uma função do Chef. Uma camada é um esquema para a criação de um conjunto de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) com a mesma configuração, pacotes instalados, procedimento de implantação de aplicativos, e assim por diante.

AWS OpsWorks As pilhas incluem um conjunto de camadas integradas para vários tipos de servidor de aplicativos, um balanceador de carga HAProxy, um mestre de banco de dados MySQL e um mestre de monitoramento Ganglia. Por exemplo, a camada Java App Server incorporada é um esquema para a criação de instâncias que hospedam um servidor Tomcat.

Para migrar para o AWS OpsWorks Stacks, você precisa associar cada função a uma camada que forneça funcionalidade equivalente. Para algumas funções, você pode simplesmente usar uma das camadas integradas. Outras funções podem exigir vários níveis de personalização. Inicie examinando a funcionalidade das camadas incorporadas, incluindo as receitas associadas a cada uma, para ver se alguma fornece pelo menos algumas das funcionalidades da função. Para obter mais informações sobre as camadas integradas, consulte Camadas e AWS OpsWorks Referência de camadas de pilhas. Para examinar as receitas integradas, consulte o GitHub repositório público AWS OpsWorks Stacks.

Como continuar depende do quanto você consegue corresponder uma camada para cada função, como do seguinte modo.

Uma camada integrada é compatível com todas as funcionalidades da função

Você pode usar a camada integrada diretamente, com pequenas personalizações, se necessário. Por exemplo, se um perfil é compatível com um servidor Tomcat, as receitas da camada Java App Server podem já processar todas as tarefas do perfil, talvez com uma pequena personalização. Por exemplo, você pode fazer as receitas incorporadas da camada usarem definições de configuração do Apache ou Tomcat personalizadas substituindo os atributos ou modelos apropriados.

Uma camada integrada é compatível com algumas funcionalidades da função, mas não com todas

Você pode usar uma camada integrada estendendo a camada. Isso normalmente envolve a implementação de receitas personalizadas para oferecer compatibilidade à funcionalidade ausente e a atribuição das receitas aos eventos de ciclo de vida da camada. Por exemplo, suponha que sua função instale um servidor Redis nas mesmas instâncias que hospedam um servidor Tomcat. Você pode estender a camada Java App Server para que ela corresponda à funcionalidade do perfil implementando uma receita personalizada para instalar o Redis nas instâncias da camada e atribuindo a receita ao evento de configuração da camada.

Nenhuma camada integrada é compatível de maneira adequada com a funcionalidade da função

Implemente uma camada personalizada. Por exemplo, suponha que sua função seja compatível com um servidor de banco de dados MongoDB, que não é compatível com nenhuma das camadas integradas. Você pode fornecer essa compatibilidade com a implementação de receitas para instalar os pacotes necessários, configurar o servidor, e assim por diante, e atribuir as receitas a uma camada personalizada de eventos de ciclo de vida. Normalmente, você pode usar pelo menos algumas das receitas da função para essa finalidade. Para obter mais informações sobre como implementar uma camada personalizada, consulte Criação de uma camada de servidor Tomcat personalizada.

Utilização de recipientes de dados

O Chef Server permite que você passe dados definidos pelo usuário para as receitas usando recipientes de dados.

  • Você armazena os dados com seus livros de receitas e o Chef os instala em cada instância.

  • Você pode usar recipientes de dados criptografados para dados confidenciais, como senhas.

AWS OpsWorks O Stacks suporta sacos de dados; as receitas podem recuperar os dados usando exatamente o mesmo código do Chef Server. No entanto, a compatibilidade tem as seguintes limitações e diferenças:

  • Os recipientes de dados são compatíveis apenas no Chef 11.10 Linux e pilhas posteriores.

    As pilhas do Windows e do Linux que executam versões anteriores do Chef não são compatíveis com recipientes de dados.

  • Você não armazena recipientes de dados no repositório do livro de receitas.

    Em vez disso, você usa JSON personalizado para gerenciar os dados dos recipientes de dados.

  • AWS OpsWorks O Stacks não suporta pacotes de dados criptografados.

    Se você precisar armazenar dados confidenciais de maneira criptografada, como senhas ou certificados, recomendamos armazená-los em um bucket do S3 privado. Você pode então criar uma receita personalizada que usa o Amazon SDK para Ruby para recuperar os dados. Para ver um exemplo, consulte Usar o SDK for Ruby.

Para ter mais informações, consulte Utilização de recipientes de dados.

O Chef Server armazena informações de configuração da pilha, como endereços IP e configurações de função, no servidor. As receitas usam a pesquisa do Chef para recuperar esses dados. AWS OpsWorks O Stacks usa uma abordagem um pouco diferente. Por exemplo, as pilhas do Linux do Chef 11.10 são baseadas no modo local do cliente do Chef, uma opção de cliente do Chef que executa uma versão leve do Chef Server (muitas vezes chamada de Chef Zero) localmente na instância. O Chef Zero é compatível com a pesquisa em relação aos dados armazenados no objeto do nó da instância.

Em vez de armazenar dados da pilha em um servidor remoto, o AWS OpsWorks Stacks adiciona um conjunto de atributos de configuração e implantação da pilha ao objeto de nó de cada instância para cada evento do ciclo de vida. Esses atributos representam um snapshot da configuração da pilha. Eles usam a mesma sintaxe do Chef Server e representam a maioria dos dados que as receitas precisam recuperar do servidor.

Muitas vezes, você não precisa modificar o código dependente da pesquisa de suas receitas para Stacks. AWS OpsWorks Como a pesquisa do Chef opera no objeto do nó, que inclui a configuração da pilha e os atributos de implantação, as consultas de pesquisa no AWS OpsWorks Stacks geralmente funcionam exatamente como funcionam com o Chef Server.

A principal exceção é causada pelo fato de que os atributos de configuração e implantação da pilha contêm somente dados que a AWS OpsWorks Stacks conhece quando instala os atributos na instância. Se você criar ou modificar um atributo localmente em uma instância específica, essas alterações não se propagarão de volta para AWS OpsWorks as pilhas e não serão incorporadas aos atributos de configuração e implantação da pilha que estão instalados nas outras instâncias. Você pode usar a pesquisa para recuperar o valor do atributo apenas para essa instância. Para ter mais informações, consulte Utilização da pesquisa do Chef.

Para compatibilidade com o Chef Server, o AWS OpsWorks Stacks adiciona um conjunto de role atributos ao objeto do nó, cada um contendo um dos atributos da camada da pilha. Se a receita usa roles como uma chave de pesquisa, você não precisa alterar o código de pesquisa. A consulta retorna automaticamente os dados para a camada correspondente. Por exemplo, ambas as consultas a seguir retornam os atributos da camada php-app.

phpserver = search(:node, "layers:php-app").first
phpserver = search(:node, "roles:php-app").first

Gerenciamento de livros de receitas e receitas

AWS OpsWorks O Stacks e o Chef Server lidam com livros de receitas e receitas de forma um pouco diferente. Com o Chef Server:

  • Você fornece todos os livros de receitas, implementando-os você mesmo ou usando livros de receitas da comunidade.

  • Você armazena livros de receitas no servidor.

  • Você executa receitas manualmente ou em uma programação regular.

Com AWS OpsWorks pilhas:

  • AWS OpsWorks O Stacks fornece um ou mais livros de receitas para cada uma das camadas integradas. Esses livros de receitas processam tarefas padrão, como instalação e configuração de um software da camada integrada e implantação de aplicativos.

    Para processar tarefas que não são realizadas pelos livros de receitas incorporados, você adiciona livros de receitas personalizados à pilha ou usa livros de receitas da comunidade.

  • Você armazena livros de receitas do AWS OpsWorks Stacks em um repositório remoto, como um bucket S3 ou um repositório Git.

    Para ter mais informações, consulte Como armazenar livros de receitas.

  • Você pode executar receitas manualmente, mas normalmente AWS OpsWorks as pilhas executam receitas para você em resposta a um conjunto de eventos do ciclo de vida que ocorrem em pontos-chave durante o ciclo de vida de uma instância.

    Para ter mais informações, consulte Execução de receitas.

  • AWS OpsWorks Stacks suporta Berkshelf somente em pilhas do Chef 11.10. Se você usa Berkshelf para gerenciar as dependências dos livros de receitas, não pode usar as pilhas que executam o Chef 11.4 ou versões anteriores.

    Para ter mais informações, consulte Utilização do Berkshelf.

Como armazenar livros de receitas

Com o Chef Server, você armazena os livros de receitas no servidor e os implanta do servidor para as instâncias. Com o AWS OpsWorks Stacks, você armazena livros de receitas em um repositório — um arquivo S3 ou HTTP ou um repositório Git ou Subversion. Você especifica as informações que o AWS OpsWorks Stacks precisa para baixar o código do repositório para as instâncias de uma pilha ao instalar livros de receitas.

Para migrar do Chef Server, você precisa colocar os livros de receitas em um desses repositórios. Para obter informações sobre como estruturar um repositório de livros de receitas, consulte Repositórios de livro de receitas.

Execução de receitas

No AWS OpsWorks Stacks, cada camada tem um conjunto de eventos de ciclo de vida — configuração, configuração, implantação, desimplantação e desligamento — cada um deles ocorre em um ponto-chave durante o ciclo de vida de uma instância. Para executar uma receita personalizada, você normalmente a atribui ao evento apropriado na camada apropriada. Quando o evento ocorre, o AWS OpsWorks Stacks executa as receitas associadas. Por exemplo, o evento de Instalação ocorre após uma instância terminar a inicialização, de modo que você normalmente atribui receitas a esse evento que executam tarefas como instalar e configurar pacotes e iniciar serviços.

Você pode executar receitas manualmente usando o comando de pilha Executar receitas. Esse comando é útil para desenvolvimento e testes, mas você também pode usá-lo para executar receitas que não são mapeadas para um evento de ciclo de vida. Você também pode usar o comando Executar receitas para acionar manualmente os eventos Instalar e Configurar.

Além do console AWS OpsWorks Stacks, você pode usar o AWS CLI ou SDKs para executar receitas. Essas ferramentas são compatíveis com todas as ações da API do AWS OpsWorks Stacks, mas são mais simples de usar do que a API. Use o comando da CLI create-deployment para acionar um evento de ciclo de vida, que executa todas as receitas associadas. Você também pode usar esse comando para executar uma ou mais receitas sem acionar um evento. O código SDK equivalente depende da linguagem específica, mas geralmente é semelhante ao comando CLI.

Os exemplos a seguir descrevem duas maneiras de usar o comando do CLI create-deployment para automatizar a implantação de aplicativos.

  • Implemente seu aplicativo em uma programação regular adicionando uma camada personalizada com uma única instância à pilha.

    Adicione uma receita Instalar personalizada à camada que cria um trabalho cron na instância para executar o comando em uma programação especificada. Para obter um exemplo de como usar uma receita para criar um trabalho cron, consulte Execução de trabalhos cron em instâncias do Linux.

  • Adicione uma tarefa ao pipeline de integração contínuo que usa o comando do CLI create-deployment para implementar o aplicativo.

Como usar ambientes do Chef

AWS OpsWorks O Stacks não suporta ambientes Chef; node.chef_environment sempre retorna_default.