Simular os atributos de implantação e configuração de pilha no Vagrant - 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á.

Simular os atributos de implantação e configuração de pilha no Vagrant

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.

nota

Este tópico aplica-se apenas às instâncias do Linux. O Test Kitchen ainda não oferece suporte ao Windows, então você executará todos os exemplos do Windows em instâncias do AWS OpsWorks Stacks.

AWS OpsWorks O Stacks adiciona atributos de configuração e implantação da pilha ao objeto de nó de cada instância em sua pilha para cada evento do ciclo de vida. Esses atributos fornecem um snapshot da configuração da pilha, incluindo a configuração de cada camada e de suas instâncias online, a configuração de cada aplicativo implantado etc. Como esses atributos estão no objeto node, eles podem ser acessados por qualquer receita; a maioria das receitas para instâncias do AWS OpsWorks Stacks usa um ou mais desses atributos.

Uma instância executada em uma caixa Vagrant não é gerenciada pelo AWS OpsWorks Stacks, portanto, seu objeto de nó não inclui nenhuma configuração de pilha e atributos de implantação por padrão. No entanto, você pode adicionar um conjunto de atributos adequados ao ambiente do Test Kitchen. Em seguida, o Test Kitchen adiciona os atributos ao objeto node da instância, e suas receitas podem acessar os atributos da mesma forma que acessariam em uma instância do AWS OpsWorks Stacks.

Este tópico mostra como obter uma cópia de atributos de implantação e configuração de pilha apropriados, instalar os atributos em uma instância e acessá-los.

nota

Se você estiver usando o Test Kitchen para executar testes em suas receitas, fauxhai fornece uma maneira alternativa para simular JSON de configuração e implantação da pilha.

Para configurar o livro de receitas
  1. Crie um subdiretório de opsworks_cookbooks chamado printjson e navegue até ele.

  2. Inicialize e configure o Test Kitchen, conforme descrito em Exemplo 1: Instalação de pacotes.

  3. Adicione dois subdiretórios a printjson: recipes e environments.

É possível simular atributos de implantação e configuração de pilha adicionando um arquivo de atributos ao seu livro de receitas com as definições apropriadas, mas uma abordagem melhor é usar o ambiente do Test Kitchen. Há duas abordagens básicas:

  • Adicione definições de atributos a .kitchen.yml.

    Essa abordagem é útil se você tiver apenas alguns atributos. Para obter mais informações, consulte kitchen.yml.

  • Definir os atributos em um arquivo de ambiente e fazer referência ao arquivo em .kitchen.yml.

    Essa abordagem normalmente é preferível para atributos de implantação e configuração de pilha, porque o arquivo de ambiente já está no formato JSON. Você pode obter uma cópia dos atributos no formato JSON de uma instância adequada do AWS OpsWorks Stacks e simplesmente colá-la. Todos os exemplos usam um arquivo de ambiente.

A maneira mais simples de criar atributos de implantação e configuração de pilhapara seu livro de receitas é criar uma pilha devidamente configurada e copiar os atributos resultantes de uma instância como JSON. Para manter seu arquivo de ambiente do Test Kitchen gerenciável, edite o JSON para ter apenas os atributos de que suas receitas precisam. Os exemplos neste capítulo são baseados na pilha de Conceitos básicos das pilhas Linux do Chef 11, que é uma pilha de servidor de aplicativo PHP simples com um load balancer, servidores de aplicativos PHP e um servidor de banco de dados MySQL.

Para criar um JSON de configuração e implantação de pilha
  1. Crie MyStack conforme descrito emConceitos básicos das pilhas Linux do Chef 11, incluindo a implantação do SimplePHPApp. Se preferir, omita a segunda instância PHP App Server solicitada em Etapa 4: Dimensionar MyStack; os exemplos não usam esses atributos.

  2. Se você ainda não tiver feito isso, inicie a instância php-app1 e faça login com SSH.

  3. Na janela do terminal, execute o seguinte comando agent cli:

    sudo opsworks-agent-cli get_json

    Esse comando imprime os atributos de implantação e configuração de pilha mais recentes da instância na janela do terminal no formato JSON.

  4. Copie o JSON em um arquivo .json e salve-o em um local conveniente na sua estação de trabalho. Os detalhes dependem de seu cliente SSH. Por exemplo, se você estiver usando PuTTY no Windows, execute o comando Copy All to Clipboard, que copia todo o texto na janela do terminal para a área de transferência do Windows. Em seguida, cole o conteúdo em um arquivo .json e edite o arquivo para remover texto adicional.

  5. Edite o MyStack JSON conforme necessário. Os atributos de implantação e configuração de pilha são numerosos, mas os livros de receitas normalmente usam apenas um pequeno subconjunto deles. Para manter seu arquivo de ambiente gerenciável, edite o JSON para que ele mantenha a estrutura original, mas contenha apenas os atributos que seus livros de receitas efetivamente usam.

    Este exemplo usa uma versão altamente editada do MyStack JSON que inclui apenas dois ['opsworks']['stack'] atributos, ['id] e. ['name'] Crie uma versão editada do MyStack JSON parecida com a seguinte:

    { "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }

Para inserir esse JSON no objeto de nó da instância, é necessário adicioná-lo a um ambiente do Test Kitchen.

Para adicionar atributos de implantação e configuração de pilha ao ambiente do Test Kitchen
  1. Crie um arquivo de ambiente chamado test.json com o seguinte conteúdo e salve-o na pasta environments do livro de receitas.

    { "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }

    O arquivo de ambiente tem os seguintes elementos:

    • default_attributes: os atributos padrão no formato JSON.

      Esses atributos são adicionados ao objeto de nó com o tipo de atributo default, que é o tipo usado por todos os atributos JSON de configuração e implantação de pilha. Este exemplo usa a versão editada do JSON de configuração e implantação da pilha mostrado anteriormente.

    • chef_type: defina esse elemento como environment.

    • json_class: defina esse elemento como Chef::Environment.

  2. Edite .kitchen.yml para definir o ambiente do Test Kitchen da seguinte maneira.

    --- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:

    Para definir o ambiente, adicione os seguintes elementos ao .kitchen.yml padrão criado por kitchen init.

    provisioner

    Adicione os seguintes elementos.

    • name: defina esse elemento como chef_solo.

      Para replicar o ambiente AWS OpsWorks Stacks mais de perto, você pode usar o modo local do cliente Chef em vez do Chef solo. O modo local é uma opção do cliente do Chef que usa uma versão leve do servidor do Chef (Chef Zero) que é executada localmente na instância e não em um servidor remoto. Ele permite que suas receitas usem os recursos de servidor do Chef, como pesquisa ou recipientes de dados, sem a conexão a um servidor remoto.

    • environments_path: o subdiretório do livro de receitas que contém o arquivo de ambiente, ./environments, neste exemplo.

    suites:provisioner

    Adicione um elemento solo_rb com um conjunto de elementos environment ao nome do arquivo de ambiente, menos a extensão .json. Este exemplo define environment como test.

  3. Crie um arquivo de receitas designado default.rb com o seguinte conteúdo e salve-o no diretório recipes do livro de receitas.

    log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"

    Essa receita apenas registra os dois valores de configuração e implantação da pilha que você adicionou ao ambiente. Embora a receita esteja sendo executada localmente no Virtual Box, você faz referência a esses atributos usando a mesma sintaxe de nó que usaria se a receita estivesse sendo executada em uma instância do AWS OpsWorks Stacks.

  4. Executar kitchen converge. Você deve ver algo semelhante à seguinte saída de log.

    ... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...