SlideShare a Scribd company logo
Infrastructure as Code:
Manage your Architecture with Git
Danilo Poccia ‒ AWS Technical Evangelist
@danilop danilop
http://en.wikipedia.org/wiki/Multitier_architecture
Adrian Cockcroft, Technology Fellow at Battery Ventures
http://www.slideshare.net/adriancockcroft/goto-berlin
“A single website may now handle
as much traffic as the entire Internet
did less than a decade ago.”
What is Reactive Programming?
Kevin Webber
Infrastructure as Code
Writing Code to
Manage Configurations

and Automate Provisioning
of Infrastructure
Manage IT Infrastructure using
Tools and Practices
from Software Development
Infrastructure as Code
Version Control
Infrastructure as Code
Rollback
Infrastructure as Code
Testing
Infrastructure as Code
Small Deployments
Infrastructure as Code
Design Patterns
Application
Code
Infrastructure
CI
Continuous
Integration
Deploy
Application
Code
Infrastructure
Code
Cloud
Infrastructure
CI
Continuous
Integration
Build
+
Deploy
Application
Code
Infrastructure
Code
AWS
Elastic Beanstalk
Application
Code
Infrastructure
Code
AWS
CloudFormation
AWS Elastic Beastalk
An Easy-to-Use Service
for Deploying and Scaling
Web Applications and Services
Java
.NET
Node.js
PHP
Python
Ruby
Go
Docker
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
Application
Application
Version(s)
Application
Version(s)
Application
Version(s)
Application
Version(s)
Application
Version(s)Environment(s)
git branch
Environment
git commit
Application
Version
Application
Code
Infrastructure
Code
AWS Elastic Beanstalk
Application
Test
Environment
Production
Environment
develop
branch
master
branch
git commit + eb deploy
<demo>
…
</demo>
https://youtu.be/3lqz_YFXLF0
AWS CloudFormation
Create and Manage a Collection
of Related AWS Resources
CloudFormation
Template
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Infrastructure as Code - CloudFormation Demo",
"Parameters": {
"InstanceType": {
"Type": "String",
"AllowedValues": [
"t2.micro", "t2.small", “t2.medium", "m3.medium", "m3.large", "m3.xlarge", “m3.2xlarge”, "c3.large", “c3.xlarge",
"c3.2xlarge", "c3.4xlarge", “c3.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge",
"i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge"
],
"ConstraintDescription": "must be a valid EC2 instance type.",
"Default": "t2.micro",
"Description": "WebServer EC2 instance type"
},
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
"ConstraintDescription": "must be the name of an existing EC2 KeyPair.",
"Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Default": "danilop-keypair-eu-central-1"
},
"SSHLocation": {
"Type": "String",
"AllowedPattern": "(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2})",
"ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x.",
"Default": "0.0.0.0/0",
"Description": "The IP address range that can be used to SSH to the EC2 instances",
"MaxLength": "18",
"MinLength": "9"
}
},
"Resources": {
"ElasticLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": “" },
"CrossZone": "true",
"HealthCheck": { "HealthyThreshold": "2", "Interval": "10", "Target": "HTTP:80/", "Timeout": “5", "UnhealthyThreshold": “3" },
"Listeners": [ { "InstancePort": "80", "LoadBalancerPort": "80", "Protocol": “HTTP" } ],
"Tags": [ { "Key" : "Name", "Value" : “CFDemo" } ]
}
},
"InstanceSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Enable SSH access and HTTP access on the inbound port",
"SecurityGroupIngress": [
{
"FromPort": "80",
"IpProtocol": "tcp",
"SourceSecurityGroupName": { "Fn::GetAtt": [ "ElasticLoadBalancer", “SourceSecurityGroup.GroupName" ] },
"SourceSecurityGroupOwnerId": {"Fn::GetAtt": [ "ElasticLoadBalancer", “SourceSecurityGroup.OwnerAlias" ] },
"ToPort": "80"
},
{
"CidrIp": { "Ref": “SSHLocation" }, "FromPort": "22", "IpProtocol": "tcp", "ToPort": "22"
}
]
}
},
"LaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": "ami-a88bb6b5",
"InstanceType": { "Ref": “InstanceType" },
"KeyName": { "Ref": “KeyName" },
"SecurityGroups": [ { "Ref": “InstanceSecurityGroup" } ]
}
},
"WebServerGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": { "Fn::GetAZs": “" },
"LaunchConfigurationName": { "Ref": “LaunchConfig" },
"LoadBalancerNames": [ { "Ref": “ElasticLoadBalancer" } ],
"MinSize": "1",
"MaxSize": "4",
"DesiredCapacity": "1",
"Tags": [ { "Key" : "Name", "Value" : "CFDemo", "PropagateAtLaunch" : true } ]
}
}
},
"Outputs": {
"URL": {
"Description": "URL of the website",
"Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "ElasticLoadBalancer", "DNSName" ] } ] ] }
}
}
}
CloudFormation
Template
JSON Syntax
Parameters
Mappings
Resources
Outputs
{
	
  	
  "Description"	
  :	
  "Create	
  RDS	
  with	
  username	
  and	
  password",
	
  	
  "Resources"	
  :	
  {
	
  	
  	
  	
  "MyDB"	
  :	
  {
	
  	
  	
  	
  	
  	
  "Type"	
  :	
  "AWS::RDS::DBInstance",
	
  	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "AllocatedStorage"	
  :	
  "500",
	
  	
  	
  	
  	
  	
  	
  	
  "DBInstanceClass"	
  :	
  "db.t2.micro",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "Engine"	
  :	
  "MySQL",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "EngineVersion"	
  :	
  "5.6",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "MasterUsername"	
  :	
  "MyName",	
  
	
  	
  	
  	
  	
  	
  	
  	
  "MasterUserPassword"	
  :	
  "MyPassword"	
  
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  }}}
"AWS::CloudFormation::Init"	
  :	
  {	
  "config"	
  :	
  {
	
  	
  	
  	
  "packages"	
  :	
  {
	
  	
  	
  	
  	
  	
  "yum"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "mysql"	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "mysql-­‐server"	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "httpd"	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "php"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  [],
	
  	
  	
  	
  	
  	
  	
  	
  "php-­‐mysql"	
  	
  	
  	
  :	
  []
	
  	
  	
  	
  	
  	
  }},
	
  	
  	
  	
  "sources"	
  :	
  {
	
  	
  	
  	
  	
  	
  "/var/www/html"	
  :

	
  	
  	
  	
  	
  	
  	
  	
  	
  "https://my-­‐builds.s3.amazonaws.com/build-­‐v4.zip"
	
  	
  	
  	
  }}}
Template + Parameters
Stack
Template
Same for Multiple Stacks

(different environments)
Parameters
Specific for a Stack
(configuration management)
CloudFormer
Template Creation Tool
(from existing AWS resources)
Application
Code
Infrastructure
Code
AWS CloudFormation
Test
Stack
Production
Stack
create
update
create
update
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
<demo>
…
</demo>
http://aws.amazon.com/solutions/case-­‐studies/
Who is using Amazon CloudFormation?
https://youtu.be/Wk-­‐tOPicq78
Application + Infrastructure
Data + Code
Configuration Management
Application
+
Infrastructure
Configuration Management
Use a different repository

+ git submodule add ?
Any (better) idea

from the Git Community?
@danilop
danilop

More Related Content

Viewers also liked (16)

PPTX
Infrastructure as Code for Network
Damien Garros
 
PDF
Infrastructure as code
Axel Quack
 
PDF
Infrastructure as code might be literally impossible
ice799
 
PDF
Infrastructure as Code
Robert Greiner
 
PPTX
Infrastructure as Code (BBWorld/DevCon13)
Mike McGarr
 
PPTX
Ma tesol e609 approaches to discourse analysis lecture 3
Khalda Mohammed
 
PPTX
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
WinOps Conf
 
PDF
Building Cloud Virtual Topologies with Ravello and Ansible
Damien Garros
 
PDF
Infrastructure as Code Maturity Model v1
Gary Stafford
 
PPTX
Turning Containers into Cattle
Subbu Allamaraju
 
PDF
Building Event-Driven Serverless Applications - AWS - Danilo Poccia
IT Talent College
 
PDF
Building a Scalable and Highly Available Web Service with AWS: A Live Demo
Danilo Poccia
 
PDF
Get Value From Your Data
Danilo Poccia
 
PDF
Amazon API Gateway and AWS Lambda: Better Together
Danilo Poccia
 
PDF
Amazon Aurora Let's Talk About Performance
Danilo Poccia
 
PDF
Building Event-driven Serverless Apps
Danilo Poccia
 
Infrastructure as Code for Network
Damien Garros
 
Infrastructure as code
Axel Quack
 
Infrastructure as code might be literally impossible
ice799
 
Infrastructure as Code
Robert Greiner
 
Infrastructure as Code (BBWorld/DevCon13)
Mike McGarr
 
Ma tesol e609 approaches to discourse analysis lecture 3
Khalda Mohammed
 
WinOps Conf 2016 - Gael Colas - Configuration Management Theory: Why Idempote...
WinOps Conf
 
Building Cloud Virtual Topologies with Ravello and Ansible
Damien Garros
 
Infrastructure as Code Maturity Model v1
Gary Stafford
 
Turning Containers into Cattle
Subbu Allamaraju
 
Building Event-Driven Serverless Applications - AWS - Danilo Poccia
IT Talent College
 
Building a Scalable and Highly Available Web Service with AWS: A Live Demo
Danilo Poccia
 
Get Value From Your Data
Danilo Poccia
 
Amazon API Gateway and AWS Lambda: Better Together
Danilo Poccia
 
Amazon Aurora Let's Talk About Performance
Danilo Poccia
 
Building Event-driven Serverless Apps
Danilo Poccia
 

Similar to Infrastructure as Code: Manage your Architecture with Git (20)

PDF
Managing Infrastructure as Code
Allan Shone
 
PPTX
Introduction to DevOps on AWS
Shiva Narayanaswamy
 
PDF
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
PDF
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
PDF
Scalable and Fault-Tolerant Apps with AWS
Fernando Rodriguez
 
PDF
2013 05-openstack-israel-heat
Alex Heneveld
 
PPTX
Scaling horizontally on AWS
Bozhidar Bozhanov
 
PDF
DevOps Fest 2020. immutable infrastructure as code. True story.
Vlad Fedosov
 
PDF
Infrastructure-as-code: bridging the gap between Devs and Ops
Mykyta Protsenko
 
PDF
saa3_wk5.pdf
Michgo1
 
PPTX
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
PPTX
Running High Availability Websites with Acquia and AWS
Acquia
 
PDF
Getting Started with DevOps on AWS [Mar 2020]
Dhaval Nagar
 
PPTX
Dev & Test on AWS - Hebrew Webinar
Boaz Ziniman
 
PDF
Przemysław Iwanek - ABC AWS, budowanie infrastruktury przy pomocy Terraform
jzielinski_pl
 
PDF
2013 05-fite-club-working-models-cloud-growing-up
Alex Heneveld
 
PDF
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
PPTX
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
Chef
 
PDF
AWS in Practice
Anna Ruokonen
 
PPTX
DRILETT_AWS_VPC_Presentation_2MB
David Rilett
 
Managing Infrastructure as Code
Allan Shone
 
Introduction to DevOps on AWS
Shiva Narayanaswamy
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
Scalable and Fault-Tolerant Apps with AWS
Fernando Rodriguez
 
2013 05-openstack-israel-heat
Alex Heneveld
 
Scaling horizontally on AWS
Bozhidar Bozhanov
 
DevOps Fest 2020. immutable infrastructure as code. True story.
Vlad Fedosov
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Mykyta Protsenko
 
saa3_wk5.pdf
Michgo1
 
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
Running High Availability Websites with Acquia and AWS
Acquia
 
Getting Started with DevOps on AWS [Mar 2020]
Dhaval Nagar
 
Dev & Test on AWS - Hebrew Webinar
Boaz Ziniman
 
Przemysław Iwanek - ABC AWS, budowanie infrastruktury przy pomocy Terraform
jzielinski_pl
 
2013 05-fite-club-working-models-cloud-growing-up
Alex Heneveld
 
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
Chef
 
AWS in Practice
Anna Ruokonen
 
DRILETT_AWS_VPC_Presentation_2MB
David Rilett
 
Ad

More from Danilo Poccia (20)

PDF
Get Value from Your Data
Danilo Poccia
 
PDF
Building Event-Driven Serverless Applications
Danilo Poccia
 
PDF
Connecting the Unconnected: IoT Made Simple
Danilo Poccia
 
PDF
An Introduction to AWS IoT
Danilo Poccia
 
PDF
Event-driven (serverless) Applications
Danilo Poccia
 
PDF
Machine Learning for Developers
Danilo Poccia
 
PDF
Masterclass Advanced Usage of the AWS CLI
Danilo Poccia
 
PDF
Cloud-powered Mobile Apps
Danilo Poccia
 
PDF
Amazon Elastic File System (Amazon EFS)
Danilo Poccia
 
PDF
AWS Mobile Hub Overview
Danilo Poccia
 
PDF
Data Analytics on AWS
Danilo Poccia
 
PDF
Managing Containers at Scale
Danilo Poccia
 
PDF
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Danilo Poccia
 
PDF
Amazon Aurora: Amazon’s New Relational Database Engine
Danilo Poccia
 
PDF
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Danilo Poccia
 
PDF
Cloud-powered Cross-platform Mobile Apps on AWS
Danilo Poccia
 
PDF
Microservice Architecture on AWS using AWS Lambda and Docker Containers
Danilo Poccia
 
PDF
Microservices on AWS using AWS Lambda and Docker Containers
Danilo Poccia
 
PDF
AWS Lambda
Danilo Poccia
 
PDF
Building Cloud-powered Mobile Apps
Danilo Poccia
 
Get Value from Your Data
Danilo Poccia
 
Building Event-Driven Serverless Applications
Danilo Poccia
 
Connecting the Unconnected: IoT Made Simple
Danilo Poccia
 
An Introduction to AWS IoT
Danilo Poccia
 
Event-driven (serverless) Applications
Danilo Poccia
 
Machine Learning for Developers
Danilo Poccia
 
Masterclass Advanced Usage of the AWS CLI
Danilo Poccia
 
Cloud-powered Mobile Apps
Danilo Poccia
 
Amazon Elastic File System (Amazon EFS)
Danilo Poccia
 
AWS Mobile Hub Overview
Danilo Poccia
 
Data Analytics on AWS
Danilo Poccia
 
Managing Containers at Scale
Danilo Poccia
 
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Danilo Poccia
 
Amazon Aurora: Amazon’s New Relational Database Engine
Danilo Poccia
 
Build a Server-less Event-driven Backend with AWS Lambda and Amazon API Gateway
Danilo Poccia
 
Cloud-powered Cross-platform Mobile Apps on AWS
Danilo Poccia
 
Microservice Architecture on AWS using AWS Lambda and Docker Containers
Danilo Poccia
 
Microservices on AWS using AWS Lambda and Docker Containers
Danilo Poccia
 
AWS Lambda
Danilo Poccia
 
Building Cloud-powered Mobile Apps
Danilo Poccia
 
Ad

Recently uploaded (20)

PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Human Resources Information System (HRIS)
Amity University, Patna
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 

Infrastructure as Code: Manage your Architecture with Git