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

A ferramenta AWS OpsWorks Stacks o 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 o AWS Support Equipe em AWS Re:post ou através de AWS Premium 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 no AWS OpsWorks Instâncias de pilhas.

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 AWS OpsWorks As instâncias do Stacks usam um ou mais desses atributos.

Uma instância em execução em uma caixa Vagrant não é gerenciada por AWS OpsWorks Pilhas, 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 fariam em um AWS OpsWorks Instância de pilhas.

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, o fauxhai fornece uma maneira alternativa de simular a configuração e a implantação da pilha. JSON

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 geralmente é preferível para a configuração da pilha e os atributos de implantação porque o arquivo do ambiente já está em JSON formato. Você pode obter uma cópia dos atributos em JSON formato de um aplicativo adequado AWS OpsWorks Empilha a instância e basta colá-la. Todos os exemplos usam um arquivo de ambiente.

A maneira mais simples de criar uma configuração de pilha e atributos de implantação para seu livro de receitas é criar uma pilha configurada adequadamente e copiar os atributos resultantes de uma instância como. JSON Para manter o arquivo do ambiente Test Kitchen gerenciável, você pode então editá-lo JSON para ter apenas os atributos de que suas receitas precisam. Os exemplos neste capítulo são baseados na pilha deConceitos básicos das pilhas Linux do Chef 11, que é uma pilha simples de servidores de PHP aplicativos com um balanceador de carga, servidores de PHP aplicativos e um servidor My SQL database.

Para criar uma configuração e implantação de pilha JSON
  1. Crie MyStack conforme descrito emConceitos básicos das pilhas Linux do Chef 11, incluindo a implantação de S. implePHPApp Se preferir, você pode omitir a segunda instância do PHP App Server solicitada emEtapa 4: Dimensionar MyStack; os exemplos não usam esses atributos.

  2. Se você ainda não tiver feito isso, inicie a php-app1 instância 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 a configuração de pilha e os atributos de implantação mais recentes da instância na janela do terminal em JSON formato.

  4. Copie JSON o em um .json arquivo e salve-o em um local conveniente na sua estação de trabalho. Os detalhes dependem do seu SSH cliente. Por exemplo, se você estiver usando o Pu TTY no Windows, poderá executar o Copy All to Clipboard comando, 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 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, você pode editá-lo JSON para que ele retenha a estrutura original, mas contenha somente os atributos que seus livros de receitas realmente usam.

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

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

Para JSON colocar isso no objeto node da instância, você precisa adicioná-lo a um ambiente 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 JSON formato.

      Esses atributos são adicionados ao objeto do nó com o tipo de default atributo, que é o tipo usado por todos os JSON atributos de configuração e implantação da pilha. Este exemplo usa a versão editada da configuração e implantação da pilha JSON mostrada 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 AWS OpsWorks Compila o ambiente 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 um AWS OpsWorks Instância de pilhas.

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