Usar a pesquisa em uma pilha do Linux - 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á.

Usar a pesquisa em uma pilha do Linux

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.

Este exemplo é baseado em uma pilha do Linux com um único servidor de aplicativo PHP. Ele usa uma pesquisa do Chef para obter o endereço IP público do servidor e coloca o endereço em um arquivo no diretório /tmp. Ele recupera basicamente as mesmas informações do objeto de nó como em Obter valores de atributo diretamente , mas o código é muito mais simples e não depende dos detalhes da estrutura de atributos de implantação e configuração de pilha.

As instruções a seguir resumem o procedimento para criar a pilha neste exemplo. Para ter mais informações, consulte Criar uma nova pilha.

nota

Se você ainda não executou uma receita personalizada em uma instância do AWS OpsWorks Stacks, primeiro veja o Executar uma receita em uma instância Linux exemplo.

Criar uma pilha
  1. Abra o console do AWS OpsWorks Stacks e clique em Add Stack (Adicionar pilha).

  2. Especifique as seguintes configurações, aceite os padrões para as outras configurações e clique em Add Stack.

    • Nome: SearchJSON

    • Chave SSH padrão: um par de chaves do Amazon EC2

    Se for necessário criar um par de chaves do Amazon EC2, consulte Pares de chaves do Amazon EC2. Observe que o par de chaves deve pertencer a mesma região da AWS que a instância. O exemplo usa a região Oeste dos EUA (Oregon).

  3. Clique em Adicionar uma a camada e adicione uma camada do PHP App Server à pilha com configurações padrão.

  4. Adicione uma instância ininterrupta com as configurações padrão à camada e inicie-a.

Para configurar o livro de receitas
  1. Crie um diretório em opsworks_cookbooks chamado searchjson e navegue até ele.

  2. Crie um arquivo metadata.rb com o seguinte conteúdo e salve-o em opstest.

    name "searchjson" version "0.1.0"
  3. Criar um diretório recipes em searchjson.

  4. Crie um arquivo default.rb com a seguinte receita e salve-o no diretório recipes.

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    As pilhas do Linux oferecem suporte somente ao índice de pesquisa node. A receita usa esse índice para obter uma lista de instâncias na camada php-app. Como a layer tem somente uma instância, a receita atribui a primeira a phpserver. Se a camada tiver várias instâncias, você poderá enumerá-las para recuperar as informações necessárias. Cada item da lista é uma tabela de hash contendo um conjunto de atributos de instância. O atributo ip é definido como o endereço IP público da instância, então, você pode representar o endereço no código de receita subsequente como phpserver[:ip].

    Depois de adicionar uma mensagem ao log do Chef, a receita usa um recurso file para criar um arquivo denominado ip_addresses. O atributo content é definido como uma representação de string phpserver[:ip]. Quando o Chef cria ip_addresses, ele adiciona essa string ao arquivo.

  5. Crie um arquivo .zip de opsworks_cookbooks, faça upload do arquivo em um bucket do Amazon S3, torne o arquivo público e registre o URL do arquivo. Para obter mais informações sobre repositórios de livros de receitas, consulte Repositórios de livro de receitas.

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

Agora você pode instalar o livro de receitas e executar a receita.

Para executar a receita
  1. Edite a pilha para habilitar livros de receitas personalizados, e especifique as seguintes configurações.

    • Tipo de repositório: Arquivamento HTTP

    • URL do repositório: o URL do arquivo do livro de receitas que você registrou anteriormente

    Use os valores padrão nas outras configurações e clique em Save para atualizar a configuração da pilha.

  2. Edite a configuração da camada personalizada e searchjson::defaultatribua ao evento de configuração da camada. AWS OpsWorks As pilhas executarão a receita após a inicialização da instância ou se você acionar explicitamente o evento de configuração.

  3. Execute o comando de pilha Update Custom Cookbooks, que instala a versão atual de seu repositório de livro de receitas personalizado nas instâncias da pilha. Se uma versão mais antiga do repositório estiver presente, esse comando a substituirá.

  4. Execute a receita executando o comando de pilha Setup, que aciona um evento Setup na instância e executa searchjson::default. Deixe a Running command setup page aberta.

Após a execução com êxito da receita, você pode verificá-la.

Para verificar searchjson
  1. A primeira etapa é examinar no log do Chef o evento Setup mais recente. Na Running command setup page, clique em show na coluna Log da instância php-app1 para exibir o log. Role para baixo até localizar sua mensagem de log, geralmente na metade do arquivo, que será semelhante à seguinte.

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. Use SSH fazer login na instância e liste o conteúdo de /tmp, que deve incluir um arquivo chamado ip_addresses que contém o endereço IP.