AWS CodeDeploy

20

Transcript of AWS CodeDeploy

Page 1: AWS CodeDeploy
Page 2: AWS CodeDeploy

AWSCodeDeploy

Page 3: AWS CodeDeploy

Agenda

1. Introduction to AWS CodeDeploy

2. Benefits

3. Understanding various Components and Workflow

4. Understanding AppSpec file A configuration file for AWS CodeDeploy

5. Demo Deploy a sample Web Application using AWS

CodeDeploy Deploy a next revision of Application, rollback to

previous revision

Page 4: AWS CodeDeploy

Introduction to AWS CodeDeploy

A service from AWS that automates code deployments

to Amazon EC2 instances

Easier for you to rapidly release new features, helps you avoid downtime during

deployment, and handles the complexity of updating your

applications

Automate deployments, eliminating the need for error- prone manual operations, and the service scales with your

infrastructure so you can easily deploy to one EC2 instance or

thousands

Page 5: AWS CodeDeploy

Benefits

Automated Deployments

CentralizedControl

Minimize Downtime

Easy To Adopt

Page 6: AWS CodeDeploy

Components and Workflow

Source : http://docs.aws.amazon.com

Page 7: AWS CodeDeploy

Workflow

Create Application

Specify Deploymen

t Group

Specify Deployment Configuratio

n

Upload RevisionDeployCheck Results

Redeploys as needed

Page 8: AWS CodeDeploy

How to deploy an application

Page 9: AWS CodeDeploy

Application – Lifecycle (with CodeDeploy)

Start

Application Stop

Download Bundle

Before Install Install

After Install

Application Start

Validate Service End

Page 10: AWS CodeDeploy

Directory structure of Application Bundle you will push to S3 or Github :

|--MyApp/|-- appspec.yml|-- scripts/| |-- install_dependencies.sh| |-- start_server.sh| |-- stop_server.sh|-- sub-directory/| |-- (various files...)|-- sub-directory/| |-- (various files...)|-- sub-directory/| |-- (various files...)|-- index.html|-- license.txt|-- readme.html|-- (other files...)

Note : appspec.yml file should be in root directory.The further directory Structure you can define in appspec.yml file.

Page 11: AWS CodeDeploy

Understanding AppSpec File

version: 0.0 os: linux files:- source: /index.htmldestination: /var/www/html/

hooks: BeforeInstall:- location: scripts/install_dependencies timeout: 300runas: root

- location: scripts/start_server timeout: 300runas: root

ApplicationStop:- location: scripts/stop_server timeout: 300runas: root

Page 12: AWS CodeDeploy

Understanding AppSpec File

Stop_server

#!/bin/bashyum install -y httpdrm -f /var/www/html/index.html

#!/bin/bash service httpd start

Install_dependencies

Start_server

#!/bin/bashisExistApp = `pgrep httpd` if [[ -n $isExistApp ]]; then

service httpd stopfi

Page 13: AWS CodeDeploy

Install or Upgrade, and

Configure, the AWS CLI

Pre-requisite for Configuring CodeDeploy

Create an IAM Instance Profile and

a Service Role

Install CodeDeploy Agent

Page 14: AWS CodeDeploy

IAM Role for instance

IAM Role for instance on which the code needs to be deployed

{"Statement":[{"Resource":"*","Action":["autoscaling:Describe*","cloudformation:Describe*","s3:Get*"],"Effect":"Allow"}]}

Edit Trust RelationShip :

{"Version": "2008-10-17","Statement": [{"Sid": "","Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"

},"Action": "sts:AssumeRole"

}]

}

Page 15: AWS CodeDeploy

IAM Role for Service side

IAM Role which needs to be attached at Service side

{"Statement":[{"Resource":["*"],"Action":["ec2:Describe*"],"Effect":"Allow"},{"Resource":["*"],"Action":[ "autoscaling:CompleteLifecycleAction","autoscaling:DeleteLifecycleHook","autoscaling:Describe LifecycleHooks","autoscaling:DescribeAutoScalingGroups","autoscaling:PutLifecycleHook","autos caling:RecordLifecycleActionHeartbeat"],"Effect":"Allow"}]}

Edit Trust Relationship :

{"Version": "2008-10-17","Statement": [{"Sid": "1","Effect": "Allow", "Principal": {"Service": ["codedeploy.us-west-2.amazonaws.com", "codedeploy.us-east-1.amazonaws.com"

]},"Action": "sts:AssumeRole"

}]

}

Page 16: AWS CodeDeploy

Installation on Ubuntu

Installing AWS CLI and AWS CodeDeploy Agent on Ubuntu 14.04 LTS

sudo apt-get updatesudo apt-get install awscli sudo apt-get install ruby2.0 cd /home/ubuntusudo aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1sudo chmod +x ./installsudo ./install auto

Page 17: AWS CodeDeploy

Commands to create and push application

Commands to create and push application to S3:

aws deploy create-application --application-name MyApp

aws deploy push \--application-name MyApp \--s3-location s3://CodeDeployDemoBucket/MyApp.zip \--ignore-hidden-files

Page 18: AWS CodeDeploy

Steps – Deploying code on Instances

Steps for deploying code on Instances / Auto Scaling Group

1.Create an Application

2.Create a Deployment Group• Specify the Instances / ASG by tags• Specify Service Role we created in early steps

3.Create a Deployment Configuration

4.Deploy a new Revision• Specify the Application, Deployment Group, and path of S3• In case of Git , connect using Git Credential• Enter Repository name, Commit ID and deployment description

5.Click on Deploy Now

To know more refer to the blog AWS CodeDeploy - A Sample Walkthrough

Page 19: AWS CodeDeploy

Troubleshooting and Limitations

Troubleshooting and LimitationsIf you do not see or cannot access specific applications, deployment groups, Amazon EC2 instances, or other deployment resources from either the AWS CLI or the AWS CodeDeployconsole, and you expect to see them, make sure that you're referencing one of thesupported regions

AWS CodeDeploy is currently supported only in the following regions:

• US East (N. Virginia) region (us-east-1)• US West (Oregon) region (us-west-2)

As this service is new, there are lots of limitation as of now: http://docs.aws.amazon.com/codedeploy/latest/userguide/limits.html

Checking Agent logs :

Log path: /var/log/aws/codedeploy-agent/codedeploy-agent.log

Page 20: AWS CodeDeploy

Contact us

Here’s how TOTHENEW uses AWS for better infrastructure management for your customers.

Click Here To Know More!

Have more queries on AWS? Talk to our AWS experts Now!

Talk To Our Experts!