Uma breve digressão: atributos de livros de receitas, receitas e pilhas AWS OpsWorks - 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á.

Uma breve digressão: atributos de livros de receitas, receitas e pilhas AWS OpsWorks

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.

Você agora tem servidores de aplicativos e de banco de dados, mas eles ainda não estão prontos para uso. Você ainda precisa configurar o banco de dados e definir as configurações de conexão do aplicativo. AWS OpsWorks O Stacks não executa essas tarefas automaticamente, mas oferece suporte aos livros de receitas, receitas e atributos dinâmicos do Chef. Você pode implementar duas receitas, uma para configurar o banco de dados e outra para definir as configurações de conexão do aplicativo, e fazer com que o AWS OpsWorks Stacks as execute para você.

O livro de receitas phpapp, que contém as receitas necessárias, já está implementado e pronto para ser usado; você pode ir direto para Etapa 3.3: Adicionar os livros de receitas personalizados ao MyStack, se preferir. Se você deseja saber mais, esta seção fornece algumas informações sobre livros de receitas e receitas, e descreve como elas funcionam. Para ver o livro de receitas em si, acesse o livro de receitas phpapp.

Receitas e atributos

Uma receita do Chef é basicamente um aplicativo Ruby especializado que executa tarefas em uma instância, como a instalação de pacotes, criação de arquivos de configuração e execução de comandos do shell, e assim por diante. Os grupos de receitas relacionadas são organizados em livros de receitas, que também contêm arquivos de suporte, como modelos para a criação de arquivos de configuração.

AWS OpsWorks Stacks tem um conjunto de livros de receitas que suportam as camadas integradas. Você também pode criar livros de receitas personalizados com suas próprias receitas para executar tarefas personalizadas em suas instâncias. Este tópico fornece uma breve introdução a receitas e mostra como usá-las para configurar o banco de dados e as definições de conexão do aplicativo. Para obter mais informações sobre livros de receitas e receitas, consulte Livros de receitas e receitas ou Personalizando pilhas AWS OpsWorks.

As receitas geralmente dependem dos atributos do Chef para a entrada de dados:

  • Alguns desses atributos são definidos pelo Chef e fornecem informações básicas sobre a instância, como o sistema operacional.

  • AWS OpsWorks As pilhas definem um conjunto de atributos que contêm informações sobre a pilha, como as configurações da camada, e sobre os aplicativos implantados, como o repositório do aplicativo.

    Você pode adicionar atributos personalizados a esse conjunto atribuindo atributos personalizados JSON à pilha ou à implantação.

  • Seus livros de receitas também podem definir atributos específicos do livro de receitas.

    Os atributos do livro de receitas phpapp são definidos em attributes/default.rb.

Para obter uma lista completa dos atributos do AWS OpsWorks Stacks, consulte Atributos de implantação e configuração de pilha: Linux e. Atributos de livros de receitas integrados Para obter mais informações, consulte Sobrepor atributos.

Os atributos são organizados em uma estrutura hierárquica, que pode ser representada como um JSON objeto.

Você incorpora esses dados em seu aplicativo usando a sintaxe de nó do Chef, da seguinte forma:

[:deploy][:simplephpapp][:database][:username]

O nó deploy tem um único nó de aplicativo, simplephpapp, que contém informações sobre o banco de dados do aplicativo, repositório Git, e assim por diante. Esse exemplo representa o valor do nome de usuário do banco de dados, que resulta em root.

Configuração do banco de dados

As receitas de configuração integradas da Minha SQL camada criam automaticamente um banco de dados para o aplicativo nomeado com o nome curto do aplicativo, portanto, neste exemplo, você já tem um banco de dados chamado simplephpapp. No entanto, você precisa concluir a configuração e criar uma tabela para o aplicativo a fim de armazenar seus dados. Você pode criar a tabela manualmente, mas uma abordagem melhor é implementar uma receita personalizada para lidar com a tarefa e fazer com que o AWS OpsWorks Stacks a execute para você. Esta seção descreve como a receita, dbsetup.rb, é implementada. O procedimento para fazer com que o AWS OpsWorks Stacks execute a receita é descrito posteriormente.

Para ver a receita no repositório, acesse dbsetup.rb. O exemplo a seguir mostra o código do dbsetup.rb.

O execute é um recurso do Chef que executa um comando especificado. Nesse caso, é um SQL comando Meu que cria uma tabela. A diretiva not_if assegura que o comando não será executado se a tabela especificada já existir. Para obter mais informações sobre os recursos do Chef, consulte Sobre recursos e provedores.

A receita insere valores de atributos na string de comando usando a sintaxe de nó abordada anteriormente. Por exemplo, o comando a seguir insere o nome do usuário do banco de dados.

#{deploy[:database][:username]}

Vamos destrinchar esse código um tanto enigmático:

  • Para cada iteração, o deploy é definido como o nó do aplicativo atual e tem como resultado [:deploy][:app_name]. Para este exemplo, o resultado é [:deploy][:simplephpapp].

  • Usando os valores de atributos de implantação mostrados anteriormente, o nó inteiro tem como resultado root.

  • Você encapsula o nó em #{ } para inseri-lo em uma string.

A maioria dos outros nós são resolvidos de maneira semelhante. A exceção é o #{node[:phpapp][:dbtable]}, que é definido pelo arquivo de atributos dos livros de receitas personalizados e tem como resultado o nome da tabela urler. Portanto, o comando real executado na SQL instância My é:

"/usr/bin/mysql -uroot -pvjud1hw5v8 simplephpapp -e'CREATE TABLE urler( id INT UNSIGNED NOT NULL AUTO_INCREMENT, author VARCHAR(63) NOT NULL, message TEXT, PRIMARY KEY (id))' "

Este comando cria uma tabela chamada urler com id, autor e campos de mensagens usando as credenciais e o nome do banco de dados dos atributos de implantação.

Conexão do aplicativo ao banco de dados

A segunda peça do quebra-cabeça é o aplicativo, que precisa de informações de conexão, como a senha do banco de dados para acessar a tabela. S implePHPApp efetivamente tem apenas um arquivo de trabalhoapp.php; tudo index.php o que eu faço é carregarapp.php.

O app.php inclui o db-connect.php, que lida com a conexão do banco de dados, mas esse arquivo não está no repositório. Não é possível criar o db-connect.php com antecedência porque ele define o banco de dados com base na instância específica. Em vez disso, a receita appsetup.rb gera o db-connect.php usando os dados de conexão dos atributos de implantação.

Para ver a receita no repositório, acesse appsetup.rb. O exemplo a seguir mostra o código do appsetup.rb.

Assim como ocorre com o dbsetup.rb, o appsetup.rb faz a iteração dos aplicativos do nó deploy, apenas simplephpapp novamente. Ele executa um bloco de código com um recurso script e um template.

O script recurso instala o Composer — um gerenciador de dependências para aplicativos. PHP Em seguida, ele executa o comando install do Composer para instalar as dependências para o aplicativo de amostra no diretório raiz do aplicativo.

O recurso template gera db-connect.php e o coloca que /srv/www/simplephpapp/current. Observe o seguinte:

  • A receita usa uma instrução condicional para especificar o proprietário do arquivo que depende do sistema operacional da instância.

  • A diretiva only_if determina ao Chef que gere o modelo somente se o diretório especificado existir.

O recurso template opera em um modelo que tem essencialmente o mesmo conteúdo e estrutura do arquivo associado, mas inclui espaços reservados para diversos valores de dados. O parâmetro source especifica o modelo db-connect.php.erb, que está no diretório templates/default do livro de receitas phpapp, e contém o seguinte:

Quando o Chef processa o modelo, ele substitui os espaços reservados <%= => pelos valores das variáveis correspondentes no recurso do modelo, que são, por sua vez, extraídos dos atributos de implantação. O arquivo gerado é, portanto: