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á.
Etapa 2.5: Implantar um aplicativo
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
A IIS instalação cria um C:\inetpub\wwwroot
diretório para o código do seu aplicativo e os arquivos relacionados. A próxima etapa é instalar um aplicativo nesse diretório. Neste exemplo, você instalará uma página HTML inicial estática,default.html
, emC:\inetpub\wwwroot
. Você pode estender facilmente a abordagem geral para lidar com cenários mais complexos, comoASP. NETaplicações.
Você poderia incluir os arquivos do aplicativo em seu livro de receitas e fazer install.rb
copiá-los para C:\inetpub\wwwroot
. Para obter exemplos de como fazer isso, consulte Exemplo 6: Criação de arquivos. No entanto, essa abordagem não é muito flexível ou eficiente, e normalmente é melhor para separar o desenvolvimento do livro de receitas do desenvolvimento de aplicativos.
A solução preferida é implementar uma receita de implantação separada que recupere o código do aplicativo e os arquivos relacionados de um repositório — qualquer repositório de sua preferência, não apenas o repositório do livro de receitas — e o instale em cada instância do servidor. IIS Essa abordagem separa o desenvolvimento de receitas do desenvolvimento de aplicativos e, quando você precisar atualizar o aplicativo, ela permite que você simplesmente execute a receita de implantação novamente sem precisar atualizar seus livros de receitas.
Este tópico mostra como implementar uma receita de implantação simples que é default.htm
implantada em seu IIS servidor. Você pode facilmente estender este exemplo para aplicativos mais complexos.
Tópicos
Criar o aplicativo e armazená-lo em um repositório
Você pode usar qualquer repositório que preferir para seus aplicativos. Para simplificar, este exemplo armazena default.htm
em um bucket público do S3.
Para criar o aplicativo
-
Crie um diretório chamado
iis-application
em um local conveniente na sua estação de trabalho. -
Adicione um arquivo
default.htm
aiis-application
, com o seguinte conteúdo.<!DOCTYPE html> <html> <head> <title>IIS Example</title> </head> <body> <h1>Hello World!</h1> </body> </html>
-
Crie um bucket do S3, faça o upload
default.htm
para o bucket e grave-o URL para uso posterior. Para simplificar, torne o arquivo público.nota
Este é um aplicativo muito simples, mas você pode estender os princípios básicos para lidar com aplicativos de nível de produção.
-
Para aplicativos mais complexos com vários arquivos, geralmente é mais simples criar um arquivo .zip de
iis-application
e fazer o upload dele para seu bucket do S3.Você poderá então fazer download do arquivo .zip e extrair o conteúdo para o diretório apropriado. Não há necessidade de fazer download de vários arquivos, criar uma estrutura de diretório e assim por diante.
-
Para um aplicativo de produção, provavelmente será melhor manter seus arquivos privados. Para obter um exemplo de como fazer com que uma receita faça download dos arquivos de um bucket privado do S3, consulte Usando o SDK for Ruby em um AWS OpsWorks Instância do Windows Stacks.
-
Você pode armazenar seu aplicativo em qualquer repositório adequado.
Normalmente, você baixa o aplicativo usando o público API de um repositório. Este exemplo usa o Amazon S3API. Se, por exemplo, você armazenar seu aplicativo em GitHub, poderá usar GitHub API
o.
-
Implemente uma receita para implantar o aplicativo
Adicione uma receita chamada deploy.rb
ao diretório iis-cookbook
recipes
com o seguinte conteúdo.
chef_gem "aws-sdk-s3" do compile_time false action :install end ruby_block "download-object" do block do require 'aws-sdk-s3' #1 # Aws.config[:ssl_ca_bundle] = 'C:\ProgramData\Git\bin\curl-ca-bundle.crt' Aws.use_bundled_cert! #2 query = Chef::Search::Query.new app = query.search(:aws_opsworks_app, "type:other").first s3region = app[0][:environment][:S3REGION] s3bucket = app[0][:environment][:BUCKET] s3filename = app[0][:environment][:FILENAME] #3 s3_client = Aws::S3::Client.new(region: s3region) s3_client.get_object(bucket: s3bucket, key: s3filename, response_target: 'C:\inetpub\wwwroot\default.htm') end action :run end
Este SDKexemplo usa o Ruby v2 para baixar o arquivo. No entanto, AWS OpsWorks O Stacks não instala isso SDK em instâncias do Windows, então a receita começa com o chef_gem
nota
O recurso chef_gem
instala gems na versão do Ruby dedicada do Chef, que é a versão usada pelas receitas. Se você quiser instalar um gem para uma versão do Ruby para todo o sistema, use o recurso gem_package
A maior parte da receita é um ruby_block
default.htm
O código no ruby_block
pode ser dividido nas seguintes seções, que correspondem aos comentários numerados no exemplo de código.
- 1: Especificar um pacote de certificados
-
O Amazon S3 usaSSL, então você precisa de um certificado apropriado para baixar objetos de um bucket do S3. SDKpara Ruby v2 não inclui um pacote de certificados, então você deve fornecer um e configurar o SDK para que o Ruby o use. AWS OpsWorks O Stacks não instala um pacote de certificados, mas instala o Git, que inclui um pacote de certificados (
curl-ca-bundle.crt
). Por conveniência, este exemplo configura o SDK for Ruby para usar o pacote de certificados Git. SSL Você também pode instalar seu próprio pacote e configurá-lo SDK adequadamente. - 2: Recuperar os dados do repositório
-
Para baixar um objeto do Amazon S3, você precisa da AWS região, do nome do bucket e do nome da chave. Conforme descrito posteriormente, este exemplo fornece essas informações ao associar um conjunto de variáveis de ambiente ao aplicativo. Quando você implanta um aplicativo, AWS OpsWorks O Stacks adiciona um conjunto de atributos ao objeto node da instância. Esses atributos são basicamente uma tabela de hash que contém a configuração do aplicativo, incluindo as variáveis de ambiente. Os atributos do aplicativo serão parecidos com os seguintes, em JSON formato.
{ "app_id": "8f71a9b5-de7f-451c-8505-3f35086e5bb3", "app_source": { "password": null, "revision": null, "ssh_key": null, "type": "other", "url": null, "user": null }, "attributes": { "auto_bundle_on_deploy": true, "aws_flow_ruby_settings": {}, "document_root": null, "rails_env": null }, "data_sources": [{"type": "None"}], "domains": ["iis_example_app"], "enable_ssl": false, "environment": { "S3REGION": "us-west-2", "BUCKET": "windows-example-app", "FILENAME": "default.htm" }, "name": "IIS-Example-App", "shortname": "iis_example_app", "ssl_configuration": { "certificate": null, "private_key": null, "chain": null }, "type": "other", "deploy": true }
As variáveis de ambiente do aplicativo são armazenadas no atributo
[:environment]
. Para recuperá-las, use uma consulta de pesquisa do Chef para recuperar a tabela de hash do aplicativo, que está no nóaws_opsworks_app
. Este aplicativo será definido como o tipoother
, para que a consulta pesquise aplicativos desse tipo. A receita aproveita o fato de que há apenas um aplicativo nesta instância e, portanto, a tabela de hash de interesse é simplesmenteapp[0]
. Para sua conveniência, a receita então atribui a região, o bucket e os nomes de arquivo às variáveis.Para obter mais informações sobre como usar o Chef, consulte.Obter valores de atributo com a pesquisa do Chef
- 3: Fazer download do arquivo
-
A terceira parte da receita cria um objeto de cliente do S3 e usa seu método
get_object
para fazer download dedefault.htm
para o diretórioC:\inetpub\wwwroot
da instância.
nota
Uma receita é um aplicativo Ruby e, portanto, o código Ruby não precisa estar necessariamente em um ruby_block
. No entanto, o código no corpo da receita é executado primeiro, seguido pelos recursos, na ordem. Neste exemplo, se você colocar o código de download no corpo da receita, ele falhará porque o chef_gem
recurso ainda não teria instalado o SDK para Ruby. O código no ruby_block
recurso é executado quando o recurso é executado, após a instalação do chef_gem
recurso SDK para Ruby.
Atualizar os livros de receitas da instância
AWS OpsWorks O Stacks instala automaticamente livros de receitas personalizados em novas instâncias. No entanto, você está trabalhando com uma instância existente e, portanto, deve atualizar seu livro de receitas manualmente.
Para atualizar os livros de receitas da instância
-
Crie um arquivo
.zip
deiis-cookbook
e faça upload dele em um bucket do S3.Isso sobrescreve o livro de receitas existente, mas URL permanece o mesmo, então você não precisa atualizar a configuração da pilha.
-
Se a sua instância não estiver online, reinicie-a.
-
Depois que a instância estiver online, escolha Stack no painel de navegação e, em seguida, Run Command.
-
Para Command, escolha Update Custom Cookbooks. Esse comando instala o livro de receitas atualizado na instância.
-
Escolha Update Custom Cookbooks. Esse comando pode levar alguns minutos para ser concluído.
Adicione a receita à IIS camada personalizada
Assim como ocorre com install.rb
, a forma preferencial de lidar com a implantação é atribuir deploy.rb
ao evento de ciclo de vida apropriado. Em geral, você atribui as receitas de implantação ao evento Implantar, e elas são chamadas coletivamente como Implantar receitas. A atribuição de uma receita ao evento implantar não aciona o evento. Em vez disso:
-
Para novas instâncias, AWS OpsWorks O Stacks executa automaticamente as receitas de implantação após a conclusão das receitas de configuração, para que as novas instâncias tenham automaticamente a versão atual do aplicativo.
-
Para as instâncias online, você usa um comando de implantação para instalar manualmente os aplicativos novos ou atualizados.
Este comando aciona um evento de Implantação nas instâncias da pilha, que executa o Implantar receitas.
Para atribuir deploy.rb ao evento Implantar da camada
-
Escolha Camadas no painel de navegação e, em seguida, escolha Receitas em IISExampleCamada.
-
Em Custom Chef Recipes (Receitas do Chef personalizadas), adicione
iis-cookbook::deploy
à caixa de receitas Deploy (Implantação) e escolha + para adicionar a receita à camada. -
Escolha Save para salvar a nova configuração. O Implantar receitas personalizado agora deve incluir
iis-cookbook::deploy
.
Adicionar um aplicativo
A tarefa final é adicionar um aplicativo à pilha para representar seu aplicativo no AWS OpsWorks Ambiente de pilhas. Um aplicativo inclui metadados, como o nome de exibição do aplicativo, e os dados necessários para fazer o download do aplicativo de seu repositório.
Para adicionar o aplicativo à pilha
-
No painel de navegação, escolha Apps (Aplicativos) e depois Add an app (Adicionar um aplicativo).
-
Configure o aplicativo com as definições a seguir.
-
Nome: I
IIS-Example-App
-
Tipo de repositório: outro
-
Variáveis de ambiente: adicione estas três variáveis de ambiente:
-
S3REGION
: a região do bucket (neste caso,us-west-1
). -
BUCKET
: o nome do bucket, comowindows-example-app
. -
FILENAME
: o nome do arquivo:default.htm
.
-
-
-
Aceite os valores padrão para as demais configurações e escolha Add App (Adicionar aplicativo) para adicionar o aplicativo à pilha.
nota
Este exemplo usa variáveis de ambiente para fornecer os dados de download. Uma abordagem alternativa é usar um tipo de repositório do S3 Archive e fornecer os arquivos. URL AWS OpsWorks O Stacks adiciona as informações, junto com dados opcionais, como suas AWS credenciais, ao atributo do app_source
aplicativo. Sua receita de implantação deve obter os atributos URL do aplicativo e analisá-los para extrair a região, o nome do bucket e o nome do arquivo.
Implantar o aplicativo e abrir o aplicativo
AWS OpsWorks O Stacks implanta aplicativos automaticamente em novas instâncias, mas não em instâncias on-line. Como sua instância já está em execução, será necessário implantar o aplicativo manualmente.
Para implantar o aplicativo
-
Escolha Apps (Aplicativos) no painel de navegação e escolha deploy (implantar) na coluna Actions (Ações) do aplicativo.
-
Command (Comando) deve ser definido como Deploy (Implantar). Escolha Deploy (Implantar) no canto inferior direito da página Deploy App (Implantar aplicativo). Esse comando pode levar alguns minutos para ser concluído.
Depois que a implantação for concluída, você retornará para a página Apps (Aplicativos). O indicador Status mostrará successful (bem-sucedido) em verde, e o nome do aplicativo terá uma marca de verificação verde próxima a ele para indicar uma implantação bem-sucedida.
nota
Os aplicativos do Windows são sempre o tipo de aplicativo Other (Outros) e, portanto, a implantação do aplicativo faz o seguinte:
-
Adiciona os dados do aplicativo aos atributos de configuração e de implantação da pilha, conforme descrito anteriormente.
-
Aciona um evento Implantar nas instâncias da pilha, que executa seu Implantar receitas personalizado.
nota
Para obter mais informações sobre como solucionar falhas nas implantações ou nos aplicativos, consulte Depurar receitas.
O aplicativo está instalado. Você pode abri-lo ao escolher Instances no painel Navigation e, em seguida, o endereço IP público da instância. Isso envia uma HTTP solicitação para a instância, e você deve ver algo parecido com o seguinte em seu navegador.