SlideShare a Scribd company logo
1 of 84
Automating your infrastructure deployment with
CloudFormation and OpsWorks
Richard Busby, Solutions Architect
Amazon Web Services
Business
101 Technical
201 Technical
301 Technical
401 Technical
Session Grading
• Repeatable deployments
• Versioned Infrastructure as code
• Use-case specific deployments
• Management at scale
• Application automation
Why treat your infrastructure as code?
• Repeatable deployments
• Versioned Infrastructure as code
• Use-case specific deployments
• Management at scale
• Application automation
A love story
A Simple Wordpress deployment with CloudFormation
Users
Web Server RDS Database
security group security group
Automating instance configuration: using cfn-init
"Resources" : {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo "Demo" > test.txt"
}
}
},
"UserData" : {
"/opt/aws/bin/cfn-init -s<stackID>
-r<ResourceID> --region <Region>"
}
• Packages
• Groups
• Users
• Sources
• Files
• Commands
• Services
Automating instance configuration: using cfn-init
"Resources" : {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo "Demo" > test.txt"
}
}
},
"UserData" : {
"/opt/aws/bin/cfn-init -s<stackID>
-r<ResourceID> --region <Region>"
}
• Packages
• Groups
• Users
• Sources
• Files
• Commands
• Services
Automating instance configuration: using cfn-init
"Resources" : {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo "Demo" > test.txt"
}
}
},
"UserData" : {
"/opt/aws/bin/cfn-init -s<stackID>
-r<ResourceID> --region <Region>"
}
• Packages
• Groups
• Users
• Sources
• Files
• Commands
• Services
How cfn-init works
instancestack
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
AWS
CloudFormation
How cfn-init works
instancestack
#> cfn-init
-–stack <stackname>
--resource <resourcename>
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
AWS
CloudFormation
How cfn-init works
instancestack
#> cfn-init
-–stack <stackname>
--resource <resourcename>
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
Get metadata,
perform actions
AWS
CloudFormation
Signalling instance configuration: using
creationPolicy
"Resources" : {
"WebServer": {
"Type": "AWS::EC2::Instance",
"CreationPolicy": {
"ResourceSignal": {
"Count": "1",
"Timeout": "PT15M"
}
}
},
"Metadata" : {
"UserData" : {
"/opt/aws/bin/cfn-signal –-stack <stackID>
--resource <ResourceID> --success"
}
}
• Property of an EC2
instance or Auto Scaling
Group
• Inform CloudFormation
when configuration is
complete
Signalling instance configuration: using
creationPolicy
"Resources" : {
"WebServer": {
"Type": "AWS::EC2::Instance",
"CreationPolicy": {
"ResourceSignal": {
"Count": "1",
"Timeout": "PT15M"
}
}
},
"Metadata" : {
"UserData" : {
"/opt/aws/bin/cfn-signal –-stack <stackID>
--resource <ResourceID> --success"
}
}
• Property of an EC2
instance or Auto Scaling
Group
• Inform CloudFormation
when configuration is
complete
How creationPolicy works
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
instancestackAWS
CloudFormation
How creationPolicy works
#> cfn-signal --success
--stack <stackname>
--resource <resourcename>
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
instancestackAWS
CloudFormation
How creationPolicy works
#> cfn-signal --success
--stack <stackname>
--resource <resourcename>
Send completion
signal
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"httpd" : ["2.4.12"]
}
"commands" : {
"WriteDemoToFile" : {
"command" : "echo
"Demo" > test.txt"
}
}
}
}
instancestackAWS
CloudFormation
Completing instance configuration: using
waitCondition
"Resources" : {
"WaitCondition" : {
"Type" : "AWS::CloudFormation::WaitCondition",
"DependsOn" : "WebServer",
"Properties" : {
"Handle" : {"Ref" : "WaitHandle"},
"Timeout" : "600"
}
},
"WebServer": {
"Type": "AWS::EC2::Instance",
"Metadata" : {
"UserData" : {
"/opt/aws/bin/cfn-signal –success <waitconditionhandle>"
}
}
• A separate resource
Completing instance configuration: using
WaitCondition
Instance A
stackAWS
CloudFormation
Instance B
Completing instance configuration: using
WaitCondition
WaitCondition
Resource
"Count": "2"
Instance A
stackAWS
CloudFormation
Instance B
#> cfn-signal
–-success <URL>
#> cfn-signal
–-success <URL>
Completing instance configuration: using
WaitCondition
WaitCondition
Resource
"Count": "2"
Instance A
stackAWS
CloudFormation
Instance B
#> cfn-signal
–-success <URL>
Send
Completion signal
#> cfn-signal
–-success <URL>
Create Templates from your environment with CloudFormer
The love story so far...
The love story so far...
• Repeatable deployments
Versioning your infrastructure
Users
Web Server RDS Database
security group security groupRoute 53
Versioning your infrastructure
Users
Web Server RDS Database
security group security groupRoute 53
• Modify existing template
• Or create a new one
– Ensure all resources are present
• Infrastructure as Code:
– Store in version control
– Store with your code
– Git, Subversion, etc
Update your template, apply it to the stack
"Resources" : {
"BrandNewDNSrecord" : {
"Type" : "AWS::Route53::RecordSet",
"Properties" : {
"Comment" : "Demo for Summit 2015",
"HostedZoneId" : "ABC123BUZZY",
"Name" : "summit.buzzy.geek.nz.",
"TTL" : "60",
"Type" : "A"
}
}
}
Controlling stack updates: Resource updates
Controlling stack updates: Resource updates
• Prevent updates to
resources within the stack
• Explicitly override during
updates
– A temporary change of policy
Controlling stack updates: stack policies
{
"Statement" : [
{
"Effect" : "Deny",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*"
}
]
}
Updating a stack where Resource properties require
replacement
Updating a stack where Resource properties require
replacement
Updating a stack where Resource properties require
replacement
Controlling stack deletion: DeletionPolicy
"Resources" : {
"myS3Bucket" : {
"Type" : "AWS::S3::Bucket",
"DeletionPolicy" : "Retain"
}
}
Demo 1
The love story so far...
The love story so far...
• Repeatable deployments
• Versioned Infrastructure as code
Deploying different environments
• Multiple similar environments
– Production
– Test, Development
– Multiple AWS regions
• Avoid becoming a template factory
– Fewer, more adaptable templates
Example: Production or Dev?
stack
Auto Scaling
stack
Elastic Load

Balancing
template
Prod
Dev
Web Server
security group
RDS Database
security group security group
Instances
RDS Database
security group
• A parameter to specify
the kind of stack
Parameters and Conditions
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
}
"Conditions" : {
"UseProdCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"]
},
"UseDevCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"]
}
"Resources": {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Condition": "useDevCondition",
},
• A parameter to specify
the kind of stack
• Conditions that will be
evaluated
Parameters and Conditions
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
}
"Conditions" : {
"UseProdCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"]
},
"UseDevCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"]
}
"Resources": {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Condition": "UseDevCondition",
},
• A parameter to specify
the kind of stack
• Conditions that will be
evaluated
• Determines whether a
resource or property
should be created
Parameters and Conditions
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
}
"Conditions" : {
"UseProdCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"]
},
"UseDevCondition" : {
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"]
}
"Resources": {
"WebServer": {
"Type": "AWS::EC2::Instance",
"Condition": "UseDevCondition",
},
Example: Production or Dev?
stack
Auto Scaling
stack
Elastic Load

Balancing
template
Web Server
security group
RDS Database
security group security group
Instances
Parameter:
Prod or Dev
RDS Database
security group
• Logic about how a
resource will be created
Mappings
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
},
"Mappings" : {
"SourceAMI" : {
"Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" },
"Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" }
}
}
"Resources": {
"WebServer": {
"ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" },
{ "Ref" : "AWS::Region" ] }
• A mapping consists of two-
level key:value pairs
Mappings
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
},
"Mappings" : {
"SourceAMI" : {
"Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" },
"Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" }
}
}
"Resources": {
"WebServer": {
"ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" }, {
"Ref" : "AWS::Region" ] }
Looking up the mapping
"Parameters" : {
"EnvironmentType" : {
"Description" : "Production or Development environment",
"AllowedValues" : [ "Prod", "Dev" ],
"ConstraintDescription" : "Must be Prod or Dev"
},
"Mappings" : {
"SourceAMI" : {
"Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" },
"Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" }
}
}
"Resources": {
"WebServer": {
"ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" },
{ "Ref" : "AWS::Region" ] }
• Referenced by a property
Demo 2
The love story so far...
The love story so far...
• Repeatable deployments
• Versioned Infrastructure as code
• Use-case specific deployments
Expanding your use of CloudFormation: 

Working with multiple templates
• An inevitability as you grow
– Stack limits (60 outputs, 200 resources, 51200 bytes)
– Segregation of duties
– Velocity of change
• Layers of stacks
– Identity
– Network
– Shared services
– Back end services
– Front end services
Nested stacks
stack
stack
template Amazon VPC
Auto Scaling
Elastic Load

Balancing
RDS Database
security group security group
Instances
Chaining stacks together
stacktemplate
”Outputs" : {
”VPCInfo" : {
”VPCName” : {
”Fn::GetAtt" :
{ ”VPC:Name”}
}
»VPCid" : {
”Fn::GetAtt" :
{ ”VPC::ID” }
}
}
Outputs
Amazon VPC
Chaining stacks together
stacktemplate
”Outputs" : {
”VPCInfo" : {
”VPCName” : {
”Fn::GetAtt" :
{ ”VPC:Name”}
}
»VPCid" : {
”Fn::GetAtt" :
{ ”VPC::ID” }
}
}
Outputs
#> DeployComputeStack.rb
Amazon VPC
Chaining stacks together
stack
stack
template
”Outputs" : {
”VPCInfo" : {
”VPCName” : {
”Fn::GetAtt" :
{ ”VPC:Name”}
}
»VPCid" : {
”Fn::GetAtt" :
{ ”VPC::ID” }
}
}
Outputs
#> DeployComputeStack.rb
Amazon VPC
Auto Scaling
Elastic Load

Balancing
security group
Instances
The love story so far...
The love story so far...
• Repeatable deployments
• Versioned Infrastructure as code
• Use-case specific deployments
• Management at scale
Hi!	
  I’m	
  Ben	
  Salt.
Senior	
  Solutions	
  Architect,
Platform	
  Services	
  Team,	
  Xero.
Xero
Leading small business cloud platform
Vision
Millions of people all over the
world love doing business on
Xero
Mission
Grow prosperity by connecting
people through beautifully
designed business software
Goal
Achieving scale and value by
winning one million+ customers
Technology at Xero
• Mostly a Microsoft shop
– Big SQL Server user
– Lots of .NET web applications

• Linux is used for some functionality
– Redis
– Cassandra
– Elastic Search
Our Journey – In the beginning
Our Journey – Introducing CloudFormation
• Started Small
– A single template
– Provisioned a VPC, Subnets, Internet Gateway, NAT instance
and Windows box!
• Then – we added more...
– Added some more network configuration
– Provisioned some more Windows boxes
Our Journey – Introducing CloudFormation
• But, we ran into some problems
– There is a file size limit – 460,800 bytes
– JSON syntax validation
– Lots of changes, engineers starting to overwrite each other
– Other limits, in particular
• 60 parameters
• 60 outputs
Our Journey – Tooling
• JSON Syntax Validation
– We wrote a Powershell JSON validation script
– Recently expanded it validate parameters
• Source Control
– Placed CloudFormation scripts in Source Control
– Wrote a “Sync to S3” script
• Visual Studio
– Helped with syntax
– AWS Tools for Visual Studio are a must!
Our Journey – Nested Stacks
• To get around the file size and parameter issue:
– Split the stack into a number of components
– AWS::CloudFormation::Stack
– Parameters made parts of the stack reusable
• VPC Formation
• Web Server Provisioning
Our Journey – Fun with Parameters
• String
• Number
• List<Number>
• CommaDelimitedList
• AWS::EC2::KeyPair::KeyName
• AWS::EC2::SecurityGroup::Id
• AWS::EC2::VPC::Id
• List<AWS::EC2::VPC::Id>
• List<AWS::EC2::SecurityGroup::Id>
• List<AWS::EC2::Subnet::Id>
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
Our Journey – Fun with Parameters
"Parameters" : {
"ipProxyPublic1" : {
"Description" : "Public IP Address for Proxy1",
"Type" : "String”
},
"SecurityGroupForProxy" : {
"Description" : "Comma Delimited String of Security Groups...”,
"Type" : "List<AWS::EC2::SecurityGroup::Id>”
}
}
Our Journey – Fun with Parameters
"DeployProxy": {
"Type" : "AWS::CloudFormation::Stack”,
"Properties" : {
"TemplateURL" : "proxy.template",
"Parameters" : {
"ipProxyPublic1" :
{ "Fn::GetAtt" : [ "CreateElasticIPs", "Outputs.eipProxyPublicAddress1" ] },
"SecurityGroupForProxy" :
{"Fn::Join" : [ ",",
[ { "Fn::GetAtt" : [ "CreateSecurityGroups", "Outputs.sgAllowELBAccess" ] },
{ "Fn::GetAtt" : [ "CreateSecurityGroups", "Outputs.sgManagementAccess"] }
]]}
}
}
}
Our Journey – What we ended up with
Main Stack
DeployNetwork
>DeployVPC1
>DeployVPC2
>DeployVPC3
VPCPeering
>DeploySubnetsforVPC1
>DeploySubnetsforVPC2
>DeploySubnetsforVPC3
DeployCoreInfrastructure
CreateElasticIPs
>CreateSecurityGroups
>DeployProxy
>FirstDomainController
>SubsequentDomainController
>FirstDNSServer
>SubsequentDNSServer
>RemoteDesktopServers
DeployApplicationStack
...
Our Journey – Nested Stacks
Our Journey – What’s Next?
• CI / CD
– Automates the creation and updates of the stack
• Decomposing the Nested Stack
– Let CI assist with the orchestration
• Implement an Infrastructure Testing Framework
– Infrastructure as code is great – but how do you test it?
OpsWorks
OpsWorks: model your application
OpsWorks lifecycle events
setup configure deploy undeploy shutdown
Chef recipe
+
Metadata
=
Command
execute "mysql-connect" do
command "/usr/bin/mysql
-u#{node[:deploy][:myphpapp][:database][:username]}
-p#{node[:deploy][:myphpapp][:database][:password]}
#{node[:deploy][:myphpapp][:database][:database]}
…
"deploy": {
"myphpapp": {
"database": {
"username": "root",
"password": "abcxyz",
…
"/usr/bin/mysql -uroot –pabcxyz myphpapp …
Configure with Chef recipes
Setup Configure Deploy Execute recipes Shutdown
Attach recipes to events
App Server
Setup Configure Deploy Execute recipes Shutdown
Attach recipes to events
Setup Configure Deploy
App Server
RDS Database
Setup Configure Deploy Execute recipes Shutdown
Attach recipes to events
Setup Configure Deploy
Setup Configure
App Server
RDS Database
Setup Configure Deploy Execute recipes Shutdown
Attach recipes to events
Setup Configure Deploy
Setup Configure
Configure
App Server
RDS Database
Setup Configure Deploy Execute recipes Shutdown
App Server
Attach recipes to events
Setup Configure Deploy
Setup Configure
Configure
App Server
RDS Database
Setup Configure Deploy Execute recipes Shutdown
App Server
Attach recipes to events
Setup Configure Deploy
Change
permissions
Setup Configure
Configure
• OpsWorks items as
CloudFormation resources
• Automate deployment with
CloudFormation
• Automate "Day 2"
management tasks with
OpsWorks
Combining OpsWorks and CloudFormation
"Resources" : {
"WordPressStack" : {
"Type" : "AWS::OpsWorks::Stack",
"Properties" : {
"Name" : "MyWordPressStack",
"ServiceRoleArn" : "arn:aws:iam::0123456789:role/service-role",
"DefaultSshKeyName" : {"Ref":"KeyName"}
}
},
"myLayer": {
"Type": "AWS::OpsWorks::Layer",
"Properties": {
"StackId": {"Ref": "WordPressStack"},
"Name": "PHP App Server",
"Type": "php-app"
}
}
The love story so far...
The love story so far...
• Repeatable deployments
• Versioned Infrastructure as code
• Use-case specific deployments
• Management at scale
• Application automation
Next steps
• Get the templates used in this session:
http://s3.buzzy.geek.nz/summit2015
• Experiment!
Automating infrastructure deployments with CloudFormation and OpsWorks

More Related Content

What's hot

Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...Edureka!
 
Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Harish Ganesan
 
AWS 101: Introduction to AWS
AWS 101: Introduction to AWSAWS 101: Introduction to AWS
AWS 101: Introduction to AWSIan Massingham
 
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트Amazon Web Services Korea
 
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & ProcessesAmazon Web Services
 
Intro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesIntro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesAmazon Web Services
 
AWS Incident Response Cheat Sheet.pdf
AWS Incident Response Cheat Sheet.pdfAWS Incident Response Cheat Sheet.pdf
AWS Incident Response Cheat Sheet.pdfChristopher Doman
 
Building a well-engaged and secure AWS account access management - FND207-R ...
 Building a well-engaged and secure AWS account access management - FND207-R ... Building a well-engaged and secure AWS account access management - FND207-R ...
Building a well-engaged and secure AWS account access management - FND207-R ...Amazon Web Services
 
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar Series
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar SeriesBest Practices for Running MongoDB on AWS - AWS May 2016 Webinar Series
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar SeriesAmazon Web Services
 
AWS solution Architect Associate study material
AWS solution Architect Associate study materialAWS solution Architect Associate study material
AWS solution Architect Associate study materialNagesh Ramamoorthy
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architectureJanakiram MSV
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationAmazon Web Services
 
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인Amazon Web Services Korea
 
Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Pedro Sousa
 
Azure security architecture
Azure security architectureAzure security architecture
Azure security architectureKarl Ots
 
(DVO306) AWS CodeDeploy: Automating Your Software Deployments
(DVO306) AWS CodeDeploy: Automating Your Software Deployments(DVO306) AWS CodeDeploy: Automating Your Software Deployments
(DVO306) AWS CodeDeploy: Automating Your Software DeploymentsAmazon Web Services
 

What's hot (20)

Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
 
Aws config
Aws configAws config
Aws config
 
Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )
 
AWS 101: Introduction to AWS
AWS 101: Introduction to AWSAWS 101: Introduction to AWS
AWS 101: Introduction to AWS
 
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
 
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
 
Intro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesIntro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute Services
 
AWS Incident Response Cheat Sheet.pdf
AWS Incident Response Cheat Sheet.pdfAWS Incident Response Cheat Sheet.pdf
AWS Incident Response Cheat Sheet.pdf
 
Building a well-engaged and secure AWS account access management - FND207-R ...
 Building a well-engaged and secure AWS account access management - FND207-R ... Building a well-engaged and secure AWS account access management - FND207-R ...
Building a well-engaged and secure AWS account access management - FND207-R ...
 
AWS Code-Deploy
AWS Code-DeployAWS Code-Deploy
AWS Code-Deploy
 
Deep Dive into AWS SAM
Deep Dive into AWS SAMDeep Dive into AWS SAM
Deep Dive into AWS SAM
 
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar Series
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar SeriesBest Practices for Running MongoDB on AWS - AWS May 2016 Webinar Series
Best Practices for Running MongoDB on AWS - AWS May 2016 Webinar Series
 
AWS solution Architect Associate study material
AWS solution Architect Associate study materialAWS solution Architect Associate study material
AWS solution Architect Associate study material
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architecture
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormation
 
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
AWS Control Tower를 통한 클라우드 보안 및 거버넌스 설계 - 김학민 :: AWS 클라우드 마이그레이션 온라인
 
Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)
 
Azure security architecture
Azure security architectureAzure security architecture
Azure security architecture
 
Intro to AWS Lambda
Intro to AWS Lambda Intro to AWS Lambda
Intro to AWS Lambda
 
(DVO306) AWS CodeDeploy: Automating Your Software Deployments
(DVO306) AWS CodeDeploy: Automating Your Software Deployments(DVO306) AWS CodeDeploy: Automating Your Software Deployments
(DVO306) AWS CodeDeploy: Automating Your Software Deployments
 

Viewers also liked

(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best PracticesAmazon Web Services
 
AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAmazon Web Services
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationAmazon Web Services
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Amazon Web Services
 
Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Amazon Web Services
 
(DVO401) Deep Dive into Blue/Green Deployments on AWS
(DVO401) Deep Dive into Blue/Green Deployments on AWS(DVO401) Deep Dive into Blue/Green Deployments on AWS
(DVO401) Deep Dive into Blue/Green Deployments on AWSAmazon Web Services
 
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...Amazon Web Services
 
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013Amazon Web Services
 
Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Amazon Web Services
 
AWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment ComplexityAWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment ComplexityAmazon Web Services
 
Financial Programmer - How to break into investment banks for java developers
Financial Programmer - How to break into investment banks for java developersFinancial Programmer - How to break into investment banks for java developers
Financial Programmer - How to break into investment banks for java developersArmel Nene
 
Building Automated Control Systems for Your AWS Infrastructure
Building Automated Control Systems for Your AWS InfrastructureBuilding Automated Control Systems for Your AWS Infrastructure
Building Automated Control Systems for Your AWS InfrastructureAmazon Web Services
 
Microservices
MicroservicesMicroservices
MicroservicesIdeyatech
 
Perl and Elasticsearch
Perl and ElasticsearchPerl and Elasticsearch
Perl and ElasticsearchDean Hamstead
 
Hadoop For Enterprises
Hadoop For EnterprisesHadoop For Enterprises
Hadoop For Enterprisesnvvrajesh
 
Test-Driven Infrastructure with CloudFormation and Cucumber.
Test-Driven Infrastructure with CloudFormation and Cucumber. Test-Driven Infrastructure with CloudFormation and Cucumber.
Test-Driven Infrastructure with CloudFormation and Cucumber. Stelligent
 

Viewers also liked (20)

AWS CloudFormation Masterclass
AWS CloudFormation MasterclassAWS CloudFormation Masterclass
AWS CloudFormation Masterclass
 
(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices
 
AWS CloudFormation Best Practices
AWS CloudFormation Best PracticesAWS CloudFormation Best Practices
AWS CloudFormation Best Practices
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormation
 
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...
 
Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...Continuous Deployment Practices, with Production, Test and Development Enviro...
Continuous Deployment Practices, with Production, Test and Development Enviro...
 
(DVO401) Deep Dive into Blue/Green Deployments on AWS
(DVO401) Deep Dive into Blue/Green Deployments on AWS(DVO401) Deep Dive into Blue/Green Deployments on AWS
(DVO401) Deep Dive into Blue/Green Deployments on AWS
 
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
 
Deep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormationDeep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormation
 
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013
AWS CloudFormation under the Hood (DMG303) | AWS re:Invent 2013
 
Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)
 
AWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment ComplexityAWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment Complexity
 
Financial Programmer - How to break into investment banks for java developers
Financial Programmer - How to break into investment banks for java developersFinancial Programmer - How to break into investment banks for java developers
Financial Programmer - How to break into investment banks for java developers
 
Building Automated Control Systems for Your AWS Infrastructure
Building Automated Control Systems for Your AWS InfrastructureBuilding Automated Control Systems for Your AWS Infrastructure
Building Automated Control Systems for Your AWS Infrastructure
 
Microservices
MicroservicesMicroservices
Microservices
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Perl and Elasticsearch
Perl and ElasticsearchPerl and Elasticsearch
Perl and Elasticsearch
 
Hadoop For Enterprises
Hadoop For EnterprisesHadoop For Enterprises
Hadoop For Enterprises
 
Bankcore ID
Bankcore IDBankcore ID
Bankcore ID
 
Test-Driven Infrastructure with CloudFormation and Cucumber.
Test-Driven Infrastructure with CloudFormation and Cucumber. Test-Driven Infrastructure with CloudFormation and Cucumber.
Test-Driven Infrastructure with CloudFormation and Cucumber.
 

Similar to Automating infrastructure deployments with CloudFormation and OpsWorks

Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...
 Automating your Infrastructure Deployment with CloudFormation and OpsWorks –... Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...
Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...Amazon Web Services
 
Deep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeDeep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeAmazon Web Services
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeAmazon Web Services
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeAmazon Web Services
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeAmazon Web Services
 
AWS May Webinar Series - Deep Dive: Infrastructure as Code
AWS May Webinar Series - Deep Dive: Infrastructure as CodeAWS May Webinar Series - Deep Dive: Infrastructure as Code
AWS May Webinar Series - Deep Dive: Infrastructure as CodeAmazon Web Services
 
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015Chef
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursAmazon Web Services
 
Managing the Life Cycle of IT Products
Managing the Life Cycle of IT ProductsManaging the Life Cycle of IT Products
Managing the Life Cycle of IT ProductsAmazon Web Services
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivAmazon Web Services
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitDanilo Poccia
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Amazon Web Services
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAmazon Web Services
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitDanilo Poccia
 
Automating Security in your IaC Pipeline
Automating Security in your IaC PipelineAutomating Security in your IaC Pipeline
Automating Security in your IaC PipelineAmazon Web Services
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSFernando Rodriguez
 
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...Amazon Web Services
 
Managing Your Infrastructure as Code
Managing Your Infrastructure as CodeManaging Your Infrastructure as Code
Managing Your Infrastructure as CodeAmazon Web Services
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Amazon Web Services
 

Similar to Automating infrastructure deployments with CloudFormation and OpsWorks (20)

Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...
 Automating your Infrastructure Deployment with CloudFormation and OpsWorks –... Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...
Automating your Infrastructure Deployment with CloudFormation and OpsWorks –...
 
Deep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeDeep Dive - Infrastructure as Code
Deep Dive - Infrastructure as Code
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as Code
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as Code
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as Code
 
AWS May Webinar Series - Deep Dive: Infrastructure as Code
AWS May Webinar Series - Deep Dive: Infrastructure as CodeAWS May Webinar Series - Deep Dive: Infrastructure as Code
AWS May Webinar Series - Deep Dive: Infrastructure as Code
 
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
AWS Presents: Infrastructure as Code on AWS - ChefConf 2015
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office Hours
 
Managing the Life Cycle of IT Products
Managing the Life Cycle of IT ProductsManaging the Life Cycle of IT Products
Managing the Life Cycle of IT Products
 
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel AvivSelf Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
Self Service Agile Infrastructure for Product Teams - Pop-up Loft Tel Aviv
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar Series
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
 
Automating Security in your IaC Pipeline
Automating Security in your IaC PipelineAutomating Security in your IaC Pipeline
Automating Security in your IaC Pipeline
 
infrastructure as code
infrastructure as codeinfrastructure as code
infrastructure as code
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWS
 
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...
Managing Your Infrastructure as Code by Travis Williams, Solutions Architect,...
 
Managing Your Infrastructure as Code
Managing Your Infrastructure as CodeManaging Your Infrastructure as Code
Managing Your Infrastructure as Code
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
 

More from Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Automating infrastructure deployments with CloudFormation and OpsWorks

  • 1. Automating your infrastructure deployment with CloudFormation and OpsWorks Richard Busby, Solutions Architect Amazon Web Services
  • 2. Business 101 Technical 201 Technical 301 Technical 401 Technical Session Grading
  • 3. • Repeatable deployments • Versioned Infrastructure as code • Use-case specific deployments • Management at scale • Application automation Why treat your infrastructure as code?
  • 4. • Repeatable deployments • Versioned Infrastructure as code • Use-case specific deployments • Management at scale • Application automation A love story
  • 5. A Simple Wordpress deployment with CloudFormation Users Web Server RDS Database security group security group
  • 6. Automating instance configuration: using cfn-init "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } }, "UserData" : { "/opt/aws/bin/cfn-init -s<stackID> -r<ResourceID> --region <Region>" } • Packages • Groups • Users • Sources • Files • Commands • Services
  • 7. Automating instance configuration: using cfn-init "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } }, "UserData" : { "/opt/aws/bin/cfn-init -s<stackID> -r<ResourceID> --region <Region>" } • Packages • Groups • Users • Sources • Files • Commands • Services
  • 8. Automating instance configuration: using cfn-init "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } }, "UserData" : { "/opt/aws/bin/cfn-init -s<stackID> -r<ResourceID> --region <Region>" } • Packages • Groups • Users • Sources • Files • Commands • Services
  • 9. How cfn-init works instancestack "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } AWS CloudFormation
  • 10. How cfn-init works instancestack #> cfn-init -–stack <stackname> --resource <resourcename> "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } AWS CloudFormation
  • 11. How cfn-init works instancestack #> cfn-init -–stack <stackname> --resource <resourcename> "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } Get metadata, perform actions AWS CloudFormation
  • 12. Signalling instance configuration: using creationPolicy "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "CreationPolicy": { "ResourceSignal": { "Count": "1", "Timeout": "PT15M" } } }, "Metadata" : { "UserData" : { "/opt/aws/bin/cfn-signal –-stack <stackID> --resource <ResourceID> --success" } } • Property of an EC2 instance or Auto Scaling Group • Inform CloudFormation when configuration is complete
  • 13. Signalling instance configuration: using creationPolicy "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "CreationPolicy": { "ResourceSignal": { "Count": "1", "Timeout": "PT15M" } } }, "Metadata" : { "UserData" : { "/opt/aws/bin/cfn-signal –-stack <stackID> --resource <ResourceID> --success" } } • Property of an EC2 instance or Auto Scaling Group • Inform CloudFormation when configuration is complete
  • 14. How creationPolicy works "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } instancestackAWS CloudFormation
  • 15. How creationPolicy works #> cfn-signal --success --stack <stackname> --resource <resourcename> "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } instancestackAWS CloudFormation
  • 16. How creationPolicy works #> cfn-signal --success --stack <stackname> --resource <resourcename> Send completion signal "AWS::CloudFormation::Init" : { "config" : { "packages" : { "httpd" : ["2.4.12"] } "commands" : { "WriteDemoToFile" : { "command" : "echo "Demo" > test.txt" } } } } instancestackAWS CloudFormation
  • 17. Completing instance configuration: using waitCondition "Resources" : { "WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "WebServer", "Properties" : { "Handle" : {"Ref" : "WaitHandle"}, "Timeout" : "600" } }, "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "UserData" : { "/opt/aws/bin/cfn-signal –success <waitconditionhandle>" } } • A separate resource
  • 18. Completing instance configuration: using WaitCondition Instance A stackAWS CloudFormation Instance B
  • 19. Completing instance configuration: using WaitCondition WaitCondition Resource "Count": "2" Instance A stackAWS CloudFormation Instance B #> cfn-signal –-success <URL> #> cfn-signal –-success <URL>
  • 20. Completing instance configuration: using WaitCondition WaitCondition Resource "Count": "2" Instance A stackAWS CloudFormation Instance B #> cfn-signal –-success <URL> Send Completion signal #> cfn-signal –-success <URL>
  • 21. Create Templates from your environment with CloudFormer
  • 22. The love story so far...
  • 23. The love story so far... • Repeatable deployments
  • 24. Versioning your infrastructure Users Web Server RDS Database security group security groupRoute 53
  • 25. Versioning your infrastructure Users Web Server RDS Database security group security groupRoute 53
  • 26. • Modify existing template • Or create a new one – Ensure all resources are present • Infrastructure as Code: – Store in version control – Store with your code – Git, Subversion, etc Update your template, apply it to the stack "Resources" : { "BrandNewDNSrecord" : { "Type" : "AWS::Route53::RecordSet", "Properties" : { "Comment" : "Demo for Summit 2015", "HostedZoneId" : "ABC123BUZZY", "Name" : "summit.buzzy.geek.nz.", "TTL" : "60", "Type" : "A" } } }
  • 27. Controlling stack updates: Resource updates
  • 28. Controlling stack updates: Resource updates
  • 29. • Prevent updates to resources within the stack • Explicitly override during updates – A temporary change of policy Controlling stack updates: stack policies { "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
  • 30. Updating a stack where Resource properties require replacement
  • 31. Updating a stack where Resource properties require replacement
  • 32. Updating a stack where Resource properties require replacement
  • 33. Controlling stack deletion: DeletionPolicy "Resources" : { "myS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain" } }
  • 35. The love story so far...
  • 36. The love story so far... • Repeatable deployments • Versioned Infrastructure as code
  • 37. Deploying different environments • Multiple similar environments – Production – Test, Development – Multiple AWS regions • Avoid becoming a template factory – Fewer, more adaptable templates
  • 38. Example: Production or Dev? stack Auto Scaling stack Elastic Load Balancing template Prod Dev Web Server security group RDS Database security group security group Instances RDS Database security group
  • 39. • A parameter to specify the kind of stack Parameters and Conditions "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" } "Conditions" : { "UseProdCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"] }, "UseDevCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"] } "Resources": { "WebServer": { "Type": "AWS::EC2::Instance", "Condition": "useDevCondition", },
  • 40. • A parameter to specify the kind of stack • Conditions that will be evaluated Parameters and Conditions "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" } "Conditions" : { "UseProdCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"] }, "UseDevCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"] } "Resources": { "WebServer": { "Type": "AWS::EC2::Instance", "Condition": "UseDevCondition", },
  • 41. • A parameter to specify the kind of stack • Conditions that will be evaluated • Determines whether a resource or property should be created Parameters and Conditions "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" } "Conditions" : { "UseProdCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Prod"] }, "UseDevCondition" : { "Fn::Equals" : [{"Ref" : "EnvironmentType"}, "Dev"] } "Resources": { "WebServer": { "Type": "AWS::EC2::Instance", "Condition": "UseDevCondition", },
  • 42. Example: Production or Dev? stack Auto Scaling stack Elastic Load Balancing template Web Server security group RDS Database security group security group Instances Parameter: Prod or Dev RDS Database security group
  • 43. • Logic about how a resource will be created Mappings "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" }, "Mappings" : { "SourceAMI" : { "Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" }, "Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" } } } "Resources": { "WebServer": { "ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" }, { "Ref" : "AWS::Region" ] }
  • 44. • A mapping consists of two- level key:value pairs Mappings "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" }, "Mappings" : { "SourceAMI" : { "Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" }, "Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" } } } "Resources": { "WebServer": { "ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" }, { "Ref" : "AWS::Region" ] }
  • 45. Looking up the mapping "Parameters" : { "EnvironmentType" : { "Description" : "Production or Development environment", "AllowedValues" : [ "Prod", "Dev" ], "ConstraintDescription" : "Must be Prod or Dev" }, "Mappings" : { "SourceAMI" : { "Prod" : { "ap-southeast-1" : "ami-d34db33f", "us-east-1" : "ami-12345678" }, "Dev" : { "ap-southeast-1" : "ami-d5f8fc0d", "us-east-1" : "ami-b6c63d8f" } } } "Resources": { "WebServer": { "ImageID" : { "Fn::FindInMap" : [ "SourceAMI", { "Ref" : "EnvironmentType" }, { "Ref" : "AWS::Region" ] } • Referenced by a property
  • 47. The love story so far...
  • 48. The love story so far... • Repeatable deployments • Versioned Infrastructure as code • Use-case specific deployments
  • 49. Expanding your use of CloudFormation: 
 Working with multiple templates • An inevitability as you grow – Stack limits (60 outputs, 200 resources, 51200 bytes) – Segregation of duties – Velocity of change • Layers of stacks – Identity – Network – Shared services – Back end services – Front end services
  • 50. Nested stacks stack stack template Amazon VPC Auto Scaling Elastic Load Balancing RDS Database security group security group Instances
  • 51. Chaining stacks together stacktemplate ”Outputs" : { ”VPCInfo" : { ”VPCName” : { ”Fn::GetAtt" : { ”VPC:Name”} } »VPCid" : { ”Fn::GetAtt" : { ”VPC::ID” } } } Outputs Amazon VPC
  • 52. Chaining stacks together stacktemplate ”Outputs" : { ”VPCInfo" : { ”VPCName” : { ”Fn::GetAtt" : { ”VPC:Name”} } »VPCid" : { ”Fn::GetAtt" : { ”VPC::ID” } } } Outputs #> DeployComputeStack.rb Amazon VPC
  • 53. Chaining stacks together stack stack template ”Outputs" : { ”VPCInfo" : { ”VPCName” : { ”Fn::GetAtt" : { ”VPC:Name”} } »VPCid" : { ”Fn::GetAtt" : { ”VPC::ID” } } } Outputs #> DeployComputeStack.rb Amazon VPC Auto Scaling Elastic Load Balancing security group Instances
  • 54. The love story so far...
  • 55. The love story so far... • Repeatable deployments • Versioned Infrastructure as code • Use-case specific deployments • Management at scale
  • 56. Hi!  I’m  Ben  Salt. Senior  Solutions  Architect, Platform  Services  Team,  Xero.
  • 57. Xero Leading small business cloud platform Vision Millions of people all over the world love doing business on Xero Mission Grow prosperity by connecting people through beautifully designed business software Goal Achieving scale and value by winning one million+ customers
  • 58. Technology at Xero • Mostly a Microsoft shop – Big SQL Server user – Lots of .NET web applications
 • Linux is used for some functionality – Redis – Cassandra – Elastic Search
  • 59. Our Journey – In the beginning
  • 60. Our Journey – Introducing CloudFormation • Started Small – A single template – Provisioned a VPC, Subnets, Internet Gateway, NAT instance and Windows box! • Then – we added more... – Added some more network configuration – Provisioned some more Windows boxes
  • 61. Our Journey – Introducing CloudFormation • But, we ran into some problems – There is a file size limit – 460,800 bytes – JSON syntax validation – Lots of changes, engineers starting to overwrite each other – Other limits, in particular • 60 parameters • 60 outputs
  • 62. Our Journey – Tooling • JSON Syntax Validation – We wrote a Powershell JSON validation script – Recently expanded it validate parameters • Source Control – Placed CloudFormation scripts in Source Control – Wrote a “Sync to S3” script • Visual Studio – Helped with syntax – AWS Tools for Visual Studio are a must!
  • 63. Our Journey – Nested Stacks • To get around the file size and parameter issue: – Split the stack into a number of components – AWS::CloudFormation::Stack – Parameters made parts of the stack reusable • VPC Formation • Web Server Provisioning
  • 64. Our Journey – Fun with Parameters • String • Number • List<Number> • CommaDelimitedList • AWS::EC2::KeyPair::KeyName • AWS::EC2::SecurityGroup::Id • AWS::EC2::VPC::Id • List<AWS::EC2::VPC::Id> • List<AWS::EC2::SecurityGroup::Id> • List<AWS::EC2::Subnet::Id> http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
  • 65. Our Journey – Fun with Parameters "Parameters" : { "ipProxyPublic1" : { "Description" : "Public IP Address for Proxy1", "Type" : "String” }, "SecurityGroupForProxy" : { "Description" : "Comma Delimited String of Security Groups...”, "Type" : "List<AWS::EC2::SecurityGroup::Id>” } }
  • 66. Our Journey – Fun with Parameters "DeployProxy": { "Type" : "AWS::CloudFormation::Stack”, "Properties" : { "TemplateURL" : "proxy.template", "Parameters" : { "ipProxyPublic1" : { "Fn::GetAtt" : [ "CreateElasticIPs", "Outputs.eipProxyPublicAddress1" ] }, "SecurityGroupForProxy" : {"Fn::Join" : [ ",", [ { "Fn::GetAtt" : [ "CreateSecurityGroups", "Outputs.sgAllowELBAccess" ] }, { "Fn::GetAtt" : [ "CreateSecurityGroups", "Outputs.sgManagementAccess"] } ]]} } } }
  • 67. Our Journey – What we ended up with Main Stack DeployNetwork >DeployVPC1 >DeployVPC2 >DeployVPC3 VPCPeering >DeploySubnetsforVPC1 >DeploySubnetsforVPC2 >DeploySubnetsforVPC3 DeployCoreInfrastructure CreateElasticIPs >CreateSecurityGroups >DeployProxy >FirstDomainController >SubsequentDomainController >FirstDNSServer >SubsequentDNSServer >RemoteDesktopServers DeployApplicationStack ...
  • 68. Our Journey – Nested Stacks
  • 69. Our Journey – What’s Next? • CI / CD – Automates the creation and updates of the stack • Decomposing the Nested Stack – Let CI assist with the orchestration • Implement an Infrastructure Testing Framework – Infrastructure as code is great – but how do you test it?
  • 71. OpsWorks: model your application
  • 72. OpsWorks lifecycle events setup configure deploy undeploy shutdown
  • 73. Chef recipe + Metadata = Command execute "mysql-connect" do command "/usr/bin/mysql -u#{node[:deploy][:myphpapp][:database][:username]} -p#{node[:deploy][:myphpapp][:database][:password]} #{node[:deploy][:myphpapp][:database][:database]} … "deploy": { "myphpapp": { "database": { "username": "root", "password": "abcxyz", … "/usr/bin/mysql -uroot –pabcxyz myphpapp … Configure with Chef recipes
  • 74. Setup Configure Deploy Execute recipes Shutdown Attach recipes to events
  • 75. App Server Setup Configure Deploy Execute recipes Shutdown Attach recipes to events Setup Configure Deploy
  • 76. App Server RDS Database Setup Configure Deploy Execute recipes Shutdown Attach recipes to events Setup Configure Deploy Setup Configure
  • 77. App Server RDS Database Setup Configure Deploy Execute recipes Shutdown Attach recipes to events Setup Configure Deploy Setup Configure Configure
  • 78. App Server RDS Database Setup Configure Deploy Execute recipes Shutdown App Server Attach recipes to events Setup Configure Deploy Setup Configure Configure
  • 79. App Server RDS Database Setup Configure Deploy Execute recipes Shutdown App Server Attach recipes to events Setup Configure Deploy Change permissions Setup Configure Configure
  • 80. • OpsWorks items as CloudFormation resources • Automate deployment with CloudFormation • Automate "Day 2" management tasks with OpsWorks Combining OpsWorks and CloudFormation "Resources" : { "WordPressStack" : { "Type" : "AWS::OpsWorks::Stack", "Properties" : { "Name" : "MyWordPressStack", "ServiceRoleArn" : "arn:aws:iam::0123456789:role/service-role", "DefaultSshKeyName" : {"Ref":"KeyName"} } }, "myLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "StackId": {"Ref": "WordPressStack"}, "Name": "PHP App Server", "Type": "php-app" } }
  • 81. The love story so far...
  • 82. The love story so far... • Repeatable deployments • Versioned Infrastructure as code • Use-case specific deployments • Management at scale • Application automation
  • 83. Next steps • Get the templates used in this session: http://s3.buzzy.geek.nz/summit2015 • Experiment!