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

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.

Este exemplo é baseado em uma pilha Linux com um único servidor de PHP aplicativos. 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 obter mais informações, consulte Criar uma nova pilha.

nota

Se você não executou uma receita personalizada em um AWS OpsWorks No exemplo anterior do Stacks, você deve primeiro examinar o Executar uma receita em uma instância Linux exemplo.

Criar uma pilha
  1. Abra as AWS OpsWorks Console Stacks e clique em Adicionar pilha.

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

    • Nome — Pesquisar JSON

    • 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 Oeste dos EUA (Oregon).

  3. Clique em Adicionar uma camada e adicione uma camada do PHP App Server à pilha com as 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 .zip arquivo deopsworks_cookbooks, faça o upload do arquivo em um bucket do Amazon S3, torne o arquivo público e registre o arquivo. URL 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

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

  2. Edite a configuração da camada personalizada e atribua searchjson::default ao evento Setup da layer. AWS OpsWorks O Stacks executa a receita após a inicialização da instância ou se você acionar explicitamente o evento Setup.

  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 para fazer login na instância e listar o conteúdo de/tmp, que deve incluir um arquivo chamado ip_addresses que contenha o endereço IP.