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á.
Executando uma receita em um AWS OpsWorks Instância Linux Stacks
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
O Test Kitchen e o Vagrant fornecem uma maneira simples e eficiente de implementar livros de receitas, mas para verificar se as receitas de um livro de receitas funcionarão corretamente na produção, você deve executá-las em um AWS OpsWorks Instância de pilhas. Este tópico descreve como instalar um livro de receitas personalizado em um AWS OpsWorks Empilha a instância Linux e execute uma receita simples. O tópico também fornece algumas dicas para corrigir os bugs de receita eficientemente.
Para obter uma descrição de como executar receitas em instâncias do Windows, consulte Executar uma receita na instância Windows.
Tópicos
Criar e executar a receita
Primeiro, é necessário criar uma pilha. As instruções a seguir resumem o procedimento da criação de uma pilha neste exemplo. Para obter mais informações, consulte Criar uma nova pilha.
Para criar uma pilha do
-
Abra as AWS OpsWorks Console Stacks
e clique em Adicionar pilha. -
Especifique as seguintes configurações, aceite os padrões para as outras configurações e clique em Add Stack.
-
Nome — OpsTest
-
SSHChave padrão — Um par de EC2 chaves da Amazon
Se você precisar criar um par de EC2 chaves da Amazon, consulte Amazon EC2 Key Pairs. Observe que o par de chaves deve pertencer à mesma AWS região da instância. O exemplo usa a região padrão, Oeste dos EUA (Oregon).
-
-
Clique em Add a layer e adicione uma camada personalizada à pilha com as seguintes configurações.
-
Nome — OpsTest
-
Nome curto: opstest
Qualquer tipo de camada funcionará nas pilhas do Linux, mas o exemplo não exige nenhum dos pacotes instalados por outros tipos de camada, portanto, uma camada personalizada é a abordagem mais simples.
-
-
Adicione uma instância ininterrupta com as configurações padrão à camada e inicie-a.
Enquanto a instância está iniciando, o que geralmente demora vários minutos, você pode criar o livro de receitas. Este exemplo usa uma versão modificada de receita do Lógica condicional, que cria um diretório de dados cujo nome depende da plataforma.
Para configurar o livro de receitas
-
Crie um diretório em
opsworks_cookbooks
chamadoopstest
e navegue até ele. -
Crie um arquivo
metadata.rb
com o seguinte conteúdo e salve-o emopstest
.name "opstest" version "0.1.0"
-
Criar um diretório
recipes
emopstest
. -
Crie um arquivo
default.rb
com a seguinte receita e salve-o no diretóriorecipes
.Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) directory data_dir do mode 0755 owner 'root' group 'root' recursive true action :create end
Observe que a receita registra uma mensagem, designada
Chef::Log.info
. Neste exemplo, você não está usando o Test Kitchen e, por isso, o métodolog
não é útil.Chef::Log.info
coloca a mensagem no log do Chef, que você pode ler depois de concluída a execução do Chef. AWS OpsWorks O Stacks fornece uma maneira fácil de visualizar esses logs, conforme descrito posteriormente.nota
Os logs do Chef normalmente contêm uma grande quantidade de informações relativamente rotineiras e desinteressantes. Os caracteres '*' antes e depois da mensagem de texto facilitam sua localização.
-
Crie um arquivo
.zip
dosopsworks_cookbooks
. Para instalar seu livro de receitas em um AWS OpsWorks Instância de pilhas, você deve armazená-la em um repositório e fornecer AWS OpsWorks Compila as informações necessárias para baixar o livro de receitas para a instância. Você pode armazenar os livros de receitas em diversos tipos de repositório que possuem suporte. Este exemplo armazena um arquivo compactado contendo os livros de receitas em um bucket do Amazon S3. Para obter mais informações sobre repositórios de livros de receitas, consulte Repositórios de livro de receitas.nota
Para simplificar, este exemplo apenas arquiva todo o diretório
opsworks_cookbooks
. No entanto, isso significa que AWS OpsWorks O Stacks baixará todos os livros de receitasopsworks_cookbooks
para a instância, mesmo que você use apenas um deles. Para instalar somente o livro de receitas como exemplo, crie outro diretório pai e movaopstest
para esse diretório. Em seguida, crie um arquivo.zip
do diretório pai e use-o em vez deopsworks_cookbooks.zip
.O conteúdo entregue aos buckets do Amazon S3 pode conter conteúdo do cliente. Para obter mais informações sobre a remoção de dados confidenciais, consulte Como faço para esvaziar um bucket do S3? ou Como faço para excluir um bucket do S3?.
-
Faça o upload do arquivo em um bucket do Amazon S3, torne o arquivamento público e registre o arquivo. URL
Agora você pode instalar o livro de receitas e executar a receita.
Para executar a receita
-
Edite a pilha para habilitar livros de receitas personalizados, e especifique as seguintes configurações.
-
Tipo de repositório: Arquivamento do S3
-
Repositório URL — O arquivo do livro de receitas URL que você gravou anteriormente
Use os valores padrão nas outras configurações e clique em Save para atualizar a configuração da pilha.
-
-
Execute o comando de pilha Update Custom Cookbooks, que instala a versão atual de seus livros de receitas personalizados nas instâncias da pilha. Se uma versão mais antiga de seus livros de receitas estiver presente, este comando a sobrescreverá.
-
Execute a receita acionando o comando de stack Execute Recipes (Executar receitas) com a opção Recipes to execute (Receitas para executar) definida como
opstest::default
. Este comando inicia uma execução do Chef, com uma lista de execução que consiste emopstest::default
.
Após a receita ser executada com sucesso, verifique isso.
Para verificar opstest
-
A primeira etapa é examinar o log do Chef. Clique em show na coluna Log da instância opstest1 para exibir o log. Role para baixo e veja sua mensagem de log próxima à parte inferior.
... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
-
Use SSH para fazer login na instância e listar o conteúdo de
/srv/www/
.
Se você seguiu todas as etapas, verá /srv/www/config
em vez do diretório /srv/www/shared
que estava esperando. A seção a seguir fornece algumas diretrizes para corrigir rapidamente tais bugs.
Executar a receita automaticamente
O comando Execute Recipes é uma maneira conveniente de testar receitas personalizadas, por isso ele é usado na maioria dos exemplos. No entanto, na prática as receitas são executadas em pontos padrão em um de ciclo de vida de uma instância, assim como após a instância concluir a inicialização ou quando se implanta um aplicativo. AWS OpsWorks O Stacks simplifica a execução de receitas em sua instância oferecendo suporte a um conjunto de eventos de ciclo de vida para cada camada: Setup, Configure, Deploy, Undeploy e Shutdown. Você pode ter AWS OpsWorks As pilhas executam uma receita automaticamente nas instâncias de uma camada atribuindo a receita ao evento de ciclo de vida apropriado.
Normalmente, os diretórios são criados, assim que uma instância termina a inicialização, que corresponde à instalação do evento. Os procedimentos a seguir mostram como executar a receita de exemplo na configuração usando a mesma pilha criada anteriormente no exemplo. O mesmo procedimento pode ser usado para os outros eventos.
Para executar automaticamente uma receita na instalação
-
Escolha Camadas no painel de navegação e, em seguida, escolha o ícone de lápis ao lado do link Receitas da OpsTest camada.
-
Adicione
opstest::default
às receitas Setup (Instalação) da camada, clique em + para adicioná-lo à camada e selecione Save (Salvar) para salvar a configuração. -
Escolha Instances, adicione outra instância à layer e a inicie.
A instância deve ser designada
opstest2
. Depois de terminar a inicialização, AWS OpsWorks As pilhasopstest::default
funcionarão. -
Quando a instância
opstest2
estiver online, verifique se/srv/www/shared
está presente.
nota
Se você atribuiu as receitas para configurar ou implantar eventos, também é possível executá-las manualmente usando um comando de pilha (instalar e configurar) ou um comando de implante (Implantar) para acionar o evento. Observe que se você tiver várias receitas atribuídas a um evento, esses comandos executam todas elas.
Solucionar problemas e corrigir receitas
Se você não estiver recebendo os resultados esperados ou se suas receitas ainda não estão sendo executadas com sucesso, a solução de problemas começa normalmente, examinando o log do Chef. Ele contém uma descrição detalhada da execução e inclui quaisquer mensagens de log em linha de suas receitas. Os logs são particularmente úteis se sua receita simplesmente tiver falhado. Quando isso acontece, o Chef registra o erro, incluindo um rastreamento de pilha.
Se a receita tiver sido executada com sucesso como neste exemplo, o log do Chef não costuma ajuda muito. Neste caso, você pode descobrir o problema, examinando mais de perto a receita, especialmente as primeiras linhas:
Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...
CentOS é um substituto razoável para o Amazon Linux em testes de receitas em Vagrant, mas agora você está executando em uma instância do Amazon Linux. O valor da plataforma para o Amazon Linux é amazon
, que não está incluído na chamada value_for_platform
. Portanto, a receita cria /srv/www/config
por padrão. Para obter mais informações sobre solução de problemas, consulte Guia de depuração e solução de problemas.
Agora que você identificou o problema, atualize a receita e verifique a correção. É possível voltar aos arquivos originais, atualizar default.rb
, carregar um novo arquivo no Amazon S3 etc. No entanto, esse processo pode ser um pouco tedioso e demorado. As instruções a seguir mostram uma abordagem muito mais rápida, especialmente útil para os bugs de receita simples, como aquele do exemplo: edite a receita na instância.
Para editar uma receita em uma instância
-
Use SSH para fazer login na instância e, em seguida, execute
sudo su
para aumentar seus privilégios. É necessário ter privilégios de root para acessar os diretórios do livro de receitas. -
AWS OpsWorks O Stacks armazena seu livro de receitas
/opt/aws/opsworks/current/site-cookbooks
, então navegue até./opt/aws/opsworks/current/site-cookbooks/opstest/recipes
nota
AWS OpsWorks O Stacks também armazena uma cópia de seus livros de receitas em.
/opt/aws/opsworks/current/merged-cookbooks
Não edite aquele livro de receitas. Quando você executa a receita, AWS OpsWorks Stacks copia o livro de receitas de.../site-cookbooks
para.../merged-cookbooks
, portanto, todas as alterações feitas.../merged-cookbooks
serão sobrescritas. -
Use um editor de texto na instância para editar
default.rb
, e substituacentos
comamazon
. Agora, as configurações devem ser semelhantes a essas.Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "amazon" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...
Para verificar a correção, execute a receita executando o comando de pilha Execute Recipe novamente. Agora a instância deve ter um diretório /srv/www/shared
. Se você precisar fazer outras alterações em uma receita, é possível executar Execute Recipe sempre que desejar; não é necessário interromper e reiniciar a instância cada vez que você executar o comando. Quando você estiver satisfeito com a receita funcionando corretamente, não se esqueça de atualizar o código na fonte de seu livro de receitas.
nota
Se você atribuiu sua receita a um evento de ciclo de vida, então AWS OpsWorks O Stacks o executa automaticamente, você sempre pode usar Execute Recipe para executar novamente a receita. Você também pode executar novamente a receita quantas vezes quiser sem reiniciar a instância usando o AWS OpsWorks Compila o console para acionar manualmente o evento apropriado. No entanto, esta abordagem executa todas as receitas do evento. Lembrete:
-
Use um comando de pilha para acionar a instalação ou configuração de eventos.
-
Use um comando de implante para acionar eventos de implante ou desimplante.