working aws codedeploy devops tool
Tutorial sobre implantação automatizada usando AWS CodeDeploy:
No Parte 2 das ferramentas AWS DevOps , vimos como o serviço CodeBuild foi usado para construir o projeto J2EE usando Maven.
Neste tutorial, veremos como o arquivo WAR do artefato armazenado no bucket S3 pode ser usado para implementação no servidor de aplicativos Tomcat usando o serviço CodeDeploy.
Confira => Guia ideal sobre treinamento DevOps
AWS CodeDeploy é o serviço de implantação que automatiza a implantação do aplicativo nas instâncias do Amazon EC2 Linux ou Windows.
Este tutorial também explica como o Jenkins pode ser integrado ao CodeDeploy.
Pré-requisito:
- Conta com AWS de preferência um nível gratuito.
- Conexão de internet boa e rápida.
- Região AWS usada - Ásia Pacífico (Cingapura).
- Instância do Amazon Linux ou RHEL EC2.
- Tomcat instalado na instância EC2.
Observação: Para implantar o conteúdo, o repositório AWS CodeCommit não é compatível com o serviço CodeDeploy. Apenas S3 e GitHub são suportados.
O que você aprenderá:
- Configurar CodeDeploy
- Inicie a instância Amazon Linux EC2
- Integrando AWS CodeDeploy com S3
- Criar aplicativo CodeDeploy
- Integração Jenkins com AWS CodeDeploy
- Conclusão
- Leitura recomendada
Configurar CodeDeploy
O AWS CodeDeploy precisará trabalhar com duas entidades para acessar a instância EC2 e o bucket S3 onde os artefatos (arquivo WAR) são armazenados para implantação. Para fornecer permissão para o serviço CodeDeploy acessar esses IAM, as funções precisarão ser configuradas. As funções do IAM não são definidas para usuários do IAM, mas eles só têm acesso às entidades.
# 1) Crie o primeiro papel para o serviço CodeDeploy para acessar a instância EC2.
Abra o IAM e clique em Funções-> Criar função.
Sob Serviço AWS Clique em EC2 -> Selecione seu caso de uso -> EC2 e clique em Próximo-> Permissões.
Selecione os AWSCodeDeployRole sob o nome da política e clique em Próximo-> Revisão.
Insira um nome de função e clique em Criar papel.
Por último, edite o relacionamento de confiança para esta função para garantir que o serviço CodeDeploy esteja acessível em geral ou regiões / terminais específicos.
Clique na função e atualize a relação de confiança conforme mostrado abaixo.
Na política, mude EC2 para Codedeploy e clique em Atualizar política de confiança.
dois) Crie o segundo papel para a instância EC2 usando o serviço CodeDeploy para acessar o intervalo S3.
Repita as etapas acima para esta função e insira o seguinte:
- Vamos para IAM -> Funções -> Criar função.
- Em AWS Service, selecione EC2.
- Abaixo desse Selecione seu caso de uso novamente e clique em EC2 e clique no botão Próximo-> Permissões.
- Na tela anexar política de permissão, selecione AmazonS3ReadOnlyAccess e clique no botão Próximo-> Revisão.
- Nomeie a função HW-Codedeploy-EC2-S3 e clique no Criar papel.
Ambas as funções agora devem estar disponíveis.
Inicie a instância Amazon Linux EC2
Nesta seção, agora provisionamos a instância EC2.
Ao provisionar a instância, certifique-se de selecionar a função HW-Codedeploy-EC2-S3 no decorrer Configurar detalhes da instância degrau. Além disso, certifique-se de abrir a porta 8080.
Junto com isso, também precisaremos instalar Agente CodeDeploy e Tomcat como um servidor de aplicativos que será usado para a implantação de nosso aplicativo.
o gateway padrão não está disponível o Windows 10 continua acontecendo
# 1) Instale e configure o Agente CodeDeploy na instância Amazon Linux
O agente CodeDeploy ajuda nas implantações e deve ser instalado em cada instância (ambientes) onde a implantação será feita.
Faça login na instância do Linux e baixe o agente de acordo com a região em uso. Em nosso caso, é a região de Cingapura onde o identificador é ap-sudeste-1.
O comando para baixar o agente estaria no formato:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Instale o Tomcat na instância EC2
- Para instalar e executar o Tomcat, siga as etapas a seguir na ordem.
yum install tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Habilite o usuário tomcat para o gerenciador de aplicativos. Faça as mudanças conforme mostrado no arquivo /etc/tomcat7/tomcat-users.xml
- Por último, inicie o serviço Tomcat.
serviço tomcat7 start
- Lançar Tomcat Web Application Manager e verifique se está funcionando usando o URL http: //: 8080 / manager
Integrando AWS CodeDeploy com S3
Conforme mencionado na parte 2, o CodeDeploy suporta apenas S3 e GitHub como repositório de código que é usado para implantar as versões mais recentes do aplicativo. Como nosso arquivo WAR do aplicativo é armazenado no intervalo S3, precisamos garantir que o formato mantido seja um arquivo ZIP.
Isso significa que o arquivo WAR deve estar em um arquivo ZIP que é suportado pelo processo de implementação usando CodeDeploy.
- O AWS CLI (interface de linha de comando) também precisa ser instalado na instância do Linux. Por favor, consulte o URL para instalar.
- Execute as etapas a seguir na instância do Linux para baixar o WAR do intervalo S3. As etapas a seguir normalmente precisam ser executadas na máquina de construção.
definir AWS_ACCESS_KEY_ID =
definir AWS_SECRET_ACCESS_KEY =
definir AWS_DEFAULT_REGION = ap-sudeste-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy usa um appspec.yml arquivo que contém instruções de implantação para as instâncias EC2. Este arquivo deve estar na raiz de uma pasta onde o arquivo WAR do aplicativo é baixado.
Crie o arquivo appspec.yml e a pasta de scripts conforme mostrado abaixo:
Os eventos são executados na seguinte ordem durante a implantação.
# 1) ApplicationStop
# 2) Antes da instalação
# 3) Instalar (a seção de arquivos é chamada e o arquivo WAR copiado)
site que converte vídeos do youtube em mp3
# 4) ApplicationStart
- A hierarquia de pastas usada é
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
scripts
start_application
stop_application
uninstall_war_file
- Conteúdo dos scripts
stop_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
uninstall_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- Compacte o conteúdo e carregue o arquivo ZIP para o balde S3. Certifique-se de que VERSIONING esteja habilitado no intervalo.
zip –r AWS-HelloWorld-1.0.0.war.zip Scripts AWS-HelloWorld-1.0.0.war appspec.yml
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
O arquivo ZIP carregado para o intervalo S3 é visto na tela abaixo:
Em vez de executar os comandos um a um, você pode criar um script executável e incluir os comandos acima nele e executá-lo sempre que um novo arquivo WAR do aplicativo estiver disponível na construção.
Criar aplicativo CodeDeploy
O aplicativo CodeDeploy é criado para garantir que a revisão adequada do arquivo WAR seja implementada no ambiente apropriado que é a instância EC2.
Inicie o serviço CodeDeploy e clique no Criar aplicativo botão.
Digite o nome do aplicativo, grupo de implantação ( Exemplo: QA-Env) e selecione as instâncias EC2 em execução.
No final do formulário, selecione a função de serviço. Essa é a outra função criada anteriormente no tutorial.
Clique no Criar aplicativo botão.
Selecione o grupo de implantação (QA-Env) e selecione Ações -> Implementar nova revisão.
Como o arquivo ZIP está no intervalo S3, insira o local de revisão da seguinte maneira:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Clique no Implantar botão. A implantação foi bem-sucedida conforme mostrado abaixo.
O arquivo WAR é copiado com sucesso para o diretório tomcat webapps.
Navegue pela URL do aplicativo para garantir que o aplicativo seja implementado com sucesso.
Integração Jenkins com AWS CodeDeploy
Como vimos nos 2 tutoriais anteriores, Jenkins se integra muito bem com as ferramentas DevOps da AWS. Para integrar o Jenkins ao CodeDeploy, o plug-in precisa ser instalado. Clique aqui para baixar e instalar o plugin CodeDeploy.
Em primeiro lugar, insira a chave de acesso e secreta para o usuário IAM em Jenkins -> Configuração .
Conclusão
Até agora, vimos como o CodeDeploy pode ser usado para automatizar a implantação de um arquivo WAR de aplicativo J2EE armazenado no balde S3 para a instância EC2 que está executando o servidor de aplicativos tomcat.
A série dessas três ferramentas, ou seja, CodeCommit, CodeBuild e CodeDeploy, ajudam nos aspectos de Integração Contínua e Entrega Contínua do DevOps. Junto com essas três ferramentas, o AWS CodePipeline é outra ferramenta que ajuda na visualização de ponta a ponta da entrega do aplicativo.
Fique atento ao nosso próximo tutorial para saber mais sobre a implantação de aplicativos da web .NET para AWS usando Elastic Beanstalk.
PREV Tutorial | PRÓXIMO Tutorial
Leitura recomendada
- Principais ferramentas DevOps da AWS para criação e implantação em nuvem
- Implantação contínua em DevOps
- Tutorial do AWS CodeCommit para implementação de DevOps na nuvem
- Entrega contínua em DevOps
- Teste Contínuo em DevOps
- Importância de pequenos incrementos de entregas em DevOps
- Tutorial do AWS CodeBuild: Extraindo código do Maven Build
- Automação DevOps: como a automação é aplicada na prática DevOps