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
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
Para configurar o livro de receitas
-
Crie um subdiretório de
opsworks_cookbooks
chamadoprintjson
e navegue até ele. -
Inicialize e configure o Test Kitchen, conforme descrito em Exemplo 1: Instalação de pacotes.
-
Adicione dois subdiretórios a
printjson
:recipes
eenvironments
.
É 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
-
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.
-
Se você ainda não tiver feito isso, inicie a
php-app1
instância e faça login com SSH. -
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.
-
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 oCopy 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. -
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
-
Crie um arquivo de ambiente chamado
test.json
com o seguinte conteúdo e salve-o na pastaenvironments
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 comoenvironment
. -
json_class
: defina esse elemento comoChef::Environment
.
-
-
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 porkitchen init
.- provisioner
-
Adicione os seguintes elementos.
-
name
: defina esse elemento comochef_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 elementosenvironment
ao nome do arquivo de ambiente, menos a extensão .json. Este exemplo defineenvironment
comotest
.
-
Crie um arquivo de receitas designado
default.rb
com o seguinte conteúdo e salve-o no diretóriorecipes
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.
-
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 ...