SlideShare a Scribd company logo
1 of 40
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Scott McDonald, Sr. Consultant
4/2/2015
Infrastructure as Code on AWS
Example of Using CloudFormation to
Deploy Chef Server 12 and
Automatically Bootstrap Clients in AWS
Infrastructure as Code is….
• A technical domain revolving around building and managing
infrastructure programmatically.
• A way to enable the reconstruction of the business from
nothing but a source code repository, an application data
backup, and bare metal resources.
• Your primary constraint should be the amount of time it
takes to restore your application data.
AWS CloudFormation: Infrastructure as Code
AWS CloudFormation gives developers and systems
administrators an easy way to create and manage a
collection of related AWS resources, provisioning and
updating them in an orderly and predictable fashion
First released in 2010
Amazon CloudFormation
• Infrastructure as Code
• Integrates with version control
• JSON formatted documents
• Templates for repeatable infrastructure
• Stacks of resources
• Supports AWS resource types
AWS CloudFormation
AWS CloudFormation: Infrastructure as Code
Document, version control, and share your applications
and infrastructure as a JSON document
Provision app and other AWS resources (VPC,
DynamoDB, RDS< EC2, Security Groups,) from a template
Repeatable, reliable deployments for test/dev/prod in
any AWS Region
Resource Property Types
• AutoScaling
• CloudFront
• CloudWatch
• DynamoDB
• EC2
• Elastic Beanstalk
• Elastic Load Balancer
• IAM
• RDS
• S3
• SNS/SQS
AWS CloudFormation: Application stack example
(continue)
Template File
Defining Stack
Git
Subversion
Mercurial
Dev
Test
Prod
The entire application can be
represented in an AWS
CloudFormation template.
Use the version
control system of
your choice to store
and track changes to
this template
Build out multiple
environments, such
as for Development,
Test, and Production
using the template
This Example requires precreating IAM Roles
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Example CloudFormation to install Chef 12 Server using RHEL 6.5 ami in us-east-1. This template creates and starts
a Chef 12 Server with the Web Management module (for up to 10 hosts), initializes knife in ec2-user account, and then uploads the
aws cookbook to the running Chef 12 Server. Roles are used to create a private s3 bucket and upload a client validation key. A
WaitCondition is used to pause the stack creation until the server is completely deployed. **WARNING** This template creates one or
more Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.",
"Parameters": {
"KeyName": {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the Chef Server",
"Type": "String",
"MinLength": "1",
"MaxLength": "255",
"AllowedPattern" : "[x20-x7E]*",
"ConstraintDescription" : "can contain only ASCII characters."
},
"InstanceType" : {
"Description" : "Chef 12 Server EC2 instance type",
"Type" : "String",
"Default" : "m3.large",
"AllowedValues" : [ "t2.micro","t2.medium","m3.medium","m3.large","m3.xlarge","m3.2xlarge"],
"ConstraintDescription" : "must be a valid EC2 instance type."
},
CloudFormation Chef Server 12 Example 1/7
"ChefServerRole" : {
"Description" : "Pre-create a Role - it needs at least S3 put/get",
"Type" : "String"
},
"SourceLocation" : {
"Description" : "Source IP address range allowed SSH/Web to the Chef Server",
"Type": "String",
"MinLength": "9",
"MaxLength": "18",
"Default": "0.0.0.0/0",
"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."
}
},
"Mappings" : {
"AWSRegion2AMI" : {
"us-east-1" : { "id" : "ami-00a11e68" }
}
},
CloudFormation Chef Server 12 Example 2/7
"Resources" : {
"ChefServer": {
"Type": "AWS::EC2::Instance",
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"files" : {
"/root/.aws/config" : {
"content" : { "Fn::Join" : ["", [
"[default]n",
"region = us-east-1n"
]]},
"mode" : "000600",
"owner" : "root",
"group" : "root"
}
}
}
}
},
CloudFormation Chef Server 12 Example 3/7
"Properties": {
"SecurityGroups": [ { "Ref": "ChefServerSecurityGroup" } ],
"IamInstanceProfile" : { "Ref" : "ChefServerRole" },
"ImageId": { "Fn::FindInMap": [ "AWSRegion2AMI", { "Ref": "AWS::Region" }, "id" ] },
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bashn",
"export PATH=$PATH:/usr/local/bin:/opt/aws/binn",
"function error_exitn",
"{n",
" cfn-signal -e 1 -r "$1" '", { "Ref" : "ChefServerWaitHandle" }, "'n",
" exit 1n",
"}n",
"curl https://bootstrap.pypa.io/ez_setup.py -o - | pythonn",
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gzn",
"cfn-init --region ", { "Ref" : "AWS::Region" },
" -s ", { "Ref" : "AWS::StackId" }, " -r ChefServer ", "|| error_exit 'Failed to run cfn-init'n",
"# Bootstrap chefn",
"cd /home/ec2-user n",
"wget https://s3.amazonaws.com/awshat-chefcon2015/install-chef-aws.sh >> /tmp/install-chef-aws.log 2>&1 n",
"chmod +x /home/ec2-user/install-chef-aws.sh n",
"/home/ec2-user/install-chef-aws.sh >> /tmp/install-chef-aws.log 2>&1 n",
"# Setup awscli on redhatn",
"curl https://bootstrap.pypa.io/get-pip.py -o - | pythonn",
"pip install awsclin”,
CloudFormation Chef Server 12 Example 4/7
"# use awscli to copy validation key to S3 bucketn",
"/usr/bin/aws s3 cp /home/ec2-user/.chef/chef-validator.pem s3://", {"Ref" : "ChefKeyBucket" } ,"/chef-validator.pemn",
"# If all went well, signal successn",
"cfn-signal -e $? -r 'Chef Server configuration' '", { "Ref" : "ChefServerWaitHandle" }, "'n"
]]}},
"KeyName": { "Ref": "KeyName" },
"InstanceType": { "Ref": "InstanceType" }
}
},
"ChefServerSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Open up SSH/Web access to Chef Server from allowed Group and Source IP range",
"SecurityGroupIngress" : [
{ "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": { "Ref" : "SourceLocation"} },
{ "IpProtocol": "tcp", "FromPort": "443", "ToPort": "443", "SourceSecurityGroupName": { "Ref" :"ChefClientSecurityGroup" }},
{ "IpProtocol": "tcp", "FromPort": "443", "ToPort": "443", "CidrIp": { "Ref" : "SourceLocation"} }
]
}
},
CloudFormation Chef Server 12 Example 5/7
"ChefClientSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Group with client access to Chef Server",
"SecurityGroupIngress" : [
{ "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": { "Ref" : "SourceLocation"} },
{ "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": { "Ref" : "SourceLocation"} }
]
}
},
"ChefKeyBucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"AccessControl" : "Private"
},
"DeletionPolicy" : "Delete"
},
"ChefServerWaitHandle" : {
"Type" : "AWS::CloudFormation::WaitConditionHandle"
},
CloudFormation Chef Server 12 Example 6/7
"ChefServerWaitCondition" : {
"Type" : "AWS::CloudFormation::WaitCondition",
"DependsOn" : "ChefServer",
"Properties" : {
"Handle" : { "Ref" : "ChefServerWaitHandle" },
"Timeout" : "7200"
}
}
},
"Outputs" : {
"ServerURL" : {
"Description" : "URL of newly created Chef 12 server - login and change password",
"Value" : { "Fn::Join" : ["", ["https://", {"Fn::GetAtt" : [ "ChefServer", "PublicDnsName" ]}, ":443/organizations/chef"]]}
},
"ChefKeyBucket" : {
"Description" : "Private S3 bucket with validation key for client bootstrap automation:",
"Value" : {"Ref" : "ChefKeyBucket" }
},
"ChefSecurityGroup" : {
"Description" : "EC2 Security Group for access to Chef 12 Server",
"Value" : { "Ref" :"ChefClientSecurityGroup" }
}
}
}
CloudFormation Chef Server 12 Example 7/7
Run CloudFormation template in AWS Console
Enter parameters for CloudFormation template
Using CloudFormation from the CLI
685b358e3054:ChefCon2015 smcdon$ pwd
/Users/smcdon/Documents/ChefCon2015
685b358e3054:ChefCon2015 smcdon$ cat add.server
aws cloudformation create-stack --stack-name chef12-server5 --template-
body file://./server.cfn --disable-rollback --parameters 
ParameterKey=InstanceType,ParameterValue=m3.2xlarge 
ParameterKey=KeyName,ParameterValue=awshat_key01 
ParameterKey=ChefServerRole,ParameterValue=devops
Deploying Chef Server 12 via CloudFormation
685b358e3054:ChefCon2015 smcdon$ ./add.server
{
"StackId": "arn:aws:cloudformation:us-east-
1:162012790422:stack/chef12-server5/f30bbc20-d48c-11e4-a271-50443313686e"
}
685b358e3054:ChefCon2015 smcdon$
Infrastructure as Code under Version Control!
685b358e3054:ChefCon2015 smcdon$ git commit -m "ChefCon2015 presentation commit example"
[master ccf204b] ChefCon2015 presentation commit example
1 file changed, 1 insertion(+), 1 deletion(-)
685b358e3054:ChefCon2015 smcdon$ git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 316 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://github.com/awshat/chefcon2015.git
190668d..ccf204b master -> master
685b358e3054:ChefCon2015 smcdon$
Watch CloudFormation build in AWS Console
CloudFormation Outputs when Completed
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Sample template to bring up a redhat linux ec2 instance and bootstrap a client node to be managed by an existing Chef
Server. **WARNING** This template creates an EC2 instance. You will be billed for the AWS resources used if you create a stack from
this template.",
"Parameters": {
"KeyName": {
"Type": "String",
"Description" : "EC2 KeyPair to enable SSH access to the client instance"
},
"InstanceType": {
"Default": "m3.medium",
"Description" : "Type of EC2 instance for the client node",
"Type": "String",
"AllowedValues" : [ "t2.micro", "t2.medium", "m3.small", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge"],
"ConstraintDescription" : "must contain only alphanumeric characters."
},
CloudFormation for Chef Clients in AWS 1/3
"ServerURL" : {
"Description" : "Chef 12 Server URL",
"Type": "String"
},
"ChefSecurityGroup" : {
"Description" : "Security group for clients to get access to Chef Server",
"Type": "String"
},
"S3Role" : {
"Description" : "IAM S3 Role with Get access for chef client bootstrapping automation",
"Type" : "String"
},
"ChefKeyBucket" : {
"Description" : "S3 bucket with validation key",
"Type": "String"
},
"ChefClientEnv" : {
"Description" : "Environment setting for deployed instances",
"Type": "String",
"Default" : "_default"
}
},
CloudFormation for Chef Clients in AWS 2/3
"Mappings" : {
"AWSRegion2AMI" : {
"us-east-1" : { "id" : "ami-00a11e68" }
}
},
"Resources" : {
"ChefClient": {
"Type": "AWS::EC2::Instance",
"Properties": {
"SecurityGroups": [ { "Ref": "ChefSecurityGroup" } ],
"IamInstanceProfile" : { "Ref" : "S3Role" },
"ImageId": { "Fn::FindInMap": [ "AWSRegion2AMI", { "Ref": "AWS::Region" }, "id" ] },
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bashn",
"# Bootstrap chef clientn",
"cd /home/ec2-user n",
"wget https://s3.amazonaws.com/awshat-chefcon2015/install-chef-client.sh >> /tmp/install-chef-amzn.log 2>&1 n",
"chmod +x /home/ec2-user/install-chef-client.sh n",
"/home/ec2-user/install-chef-client.sh ", {"Ref" : "ChefKeyBucket" } ," ", {"Ref" : "ServerURL" } ," ", {"Ref" : "ChefClientEnv" } ,"
>> /tmp/install-chef-amzn.log 2>&1 n"
]]}},
"KeyName": { "Ref": "KeyName" },
"InstanceType": { "Ref": "InstanceType" }
}
}
}
}
CloudFormation for Chef Clients in AWS 3/3
Enter parameters for CloudFormation in GUI
Create a Version Controlled Client Script
685b358e3054:ChefCon2015 smcdon$ cp add.client4 add.client5
685b358e3054:ChefCon2015 smcdon$ vi add.client5
685b358e3054:ChefCon2015 smcdon$ cat add.client5
aws cloudformation create-stack --stack-name $1 --template-body file://./client.cfn --disable-rollback --parameters 
ParameterKey=KeyName,ParameterValue=awshat_key01 
ParameterKey=InstanceType,ParameterValue=m3.large 
ParameterKey=ServerURL,ParameterValue=https://ec2-52-1-228-71.compute-1.amazonaws.com:443/organizations/chef 
ParameterKey=ChefKeyBucket,ParameterValue=chef12-server5-chefkeybucket-zut8xoz6apsn 
ParameterKey=ChefSecurityGroup,ParameterValue=chef12-server5-ChefClientSecurityGroup-NIR4XTVU1POF 
ParameterKey=S3Role,ParameterValue=s3access
685b358e3054:ChefCon2015 smcdon$ git add -A
685b358e3054:ChefCon2015 smcdon$ git commit -m "ChefCon2015 example client script for presentation"
[master f655195] ChefCon2015 example client script for presentation
1 file changed, 8 insertions(+)
create mode 100755 add.client5
685b358e3054:ChefCon2015 smcdon$ git push origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 599 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/awshat/chefcon2015.git
ccf204b..f655195 master -> master
Use CloudFormation to Bootstrap Clients
685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client1
{
"StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5-
client1/73936ff0-d497-11e4-8f0c-50e2416294a8"
}
685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client2
{
"StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5-
client2/75a5fc40-d497-11e4-bf18-50e24162947c"
}
685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client3
{
"StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5-
client3/77368750-d497-11e4-adea-50018ffe9e62"
}
Watch CloudFormation for Clients in Console
Watch Clients show up in Chef 12 Webmanager
CloudFormation = Easy Teardown
• Fully automated
• Delete resources
• Complete teardown
• Entire stacks are disposable
• For this Chef 12 Example – Deleting clients in
CloudFormation automatically deregisters nodes
from Chef Server managementAWS CloudFormation
Teardown Chef Server via CloudFormation
Watch Teardown in CloudFormation Console
Confirm deleted resources gone in console
Teardown for Chef Clients in AWS Console
Teardown both easily in AWS Console
Example Code: https://github.com/awshat/chefcon2015
Thank you & Have fun!
Scott McDonald - smcdon@amazon.com

More Related Content

What's hot

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
 
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)Amazon Web Services
 
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012ARC204 AWS Infrastructure Automation - AWS re: Invent 2012
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012Amazon 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
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Amazon 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
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings Adam Book
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationAmazon Web Services
 
Infrastructure as Code in AWS using Cloudformation
Infrastructure as Code in AWS using CloudformationInfrastructure as Code in AWS using Cloudformation
Infrastructure as Code in AWS using CloudformationJohn Reilly Pospos
 
2013 05-fite-club-working-models-cloud-growing-up
2013 05-fite-club-working-models-cloud-growing-up2013 05-fite-club-working-models-cloud-growing-up
2013 05-fite-club-working-models-cloud-growing-upAlex Heneveld
 
Programando sua infraestrutura com o AWS CloudFormation
Programando sua infraestrutura com o AWS CloudFormationProgramando sua infraestrutura com o AWS CloudFormation
Programando sua infraestrutura com o AWS CloudFormationAmazon Web Services LATAM
 
Getting Started with ElastiCache for Redis
Getting Started with ElastiCache for RedisGetting Started with ElastiCache for Redis
Getting Started with ElastiCache for RedisAmazon Web Services
 
Hands-on Lab: Amazon ElastiCache
Hands-on Lab: Amazon ElastiCacheHands-on Lab: Amazon ElastiCache
Hands-on Lab: Amazon ElastiCacheAmazon 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
 
Dev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudDev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudAmazon Web Services
 
Infrastructure as Code for Beginners
Infrastructure as Code for BeginnersInfrastructure as Code for Beginners
Infrastructure as Code for BeginnersDavid Völkel
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeAmazon Web Services
 
More Cache for Less Cash
More Cache for Less CashMore Cache for Less Cash
More Cache for Less CashMichael Collier
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of ComputingAmazon Web Services
 

What's hot (20)

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
 
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
AWS re:Invent 2016: The Effective AWS CLI User (DEV402)
 
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012ARC204 AWS Infrastructure Automation - AWS re: Invent 2012
ARC204 AWS Infrastructure Automation - AWS re: Invent 2012
 
(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...
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
 
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
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings
 
Masterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormationMasterclass Webinar - AWS CloudFormation
Masterclass Webinar - AWS CloudFormation
 
Deep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormationDeep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormation
 
Infrastructure as Code in AWS using Cloudformation
Infrastructure as Code in AWS using CloudformationInfrastructure as Code in AWS using Cloudformation
Infrastructure as Code in AWS using Cloudformation
 
2013 05-fite-club-working-models-cloud-growing-up
2013 05-fite-club-working-models-cloud-growing-up2013 05-fite-club-working-models-cloud-growing-up
2013 05-fite-club-working-models-cloud-growing-up
 
Programando sua infraestrutura com o AWS CloudFormation
Programando sua infraestrutura com o AWS CloudFormationProgramando sua infraestrutura com o AWS CloudFormation
Programando sua infraestrutura com o AWS CloudFormation
 
Getting Started with ElastiCache for Redis
Getting Started with ElastiCache for RedisGetting Started with ElastiCache for Redis
Getting Started with ElastiCache for Redis
 
Hands-on Lab: Amazon ElastiCache
Hands-on Lab: Amazon ElastiCacheHands-on Lab: Amazon ElastiCache
Hands-on Lab: Amazon ElastiCache
 
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
 
Dev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudDev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the Cloud
 
Infrastructure as Code for Beginners
Infrastructure as Code for BeginnersInfrastructure as Code for Beginners
Infrastructure as Code for Beginners
 
Deep Dive: Infrastructure as Code
Deep Dive: Infrastructure as CodeDeep Dive: Infrastructure as Code
Deep Dive: Infrastructure as Code
 
More Cache for Less Cash
More Cache for Less CashMore Cache for Less Cash
More Cache for Less Cash
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of Computing
 

Similar to AWS Presents: Infrastructure as Code on AWS - ChefConf 2015

Deep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeDeep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeAmazon Web Services
 
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
 
Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationJeremy Przygode
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDanilo Poccia
 
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and moreScaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and moreDropsolid
 
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
 
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San Francisco
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San FranciscoDeep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San Francisco
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San FranciscoAmazon 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
 
2013 05-openstack-israel-heat
2013 05-openstack-israel-heat2013 05-openstack-israel-heat
2013 05-openstack-israel-heatAlex Heneveld
 
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoDevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoAmazon Web Services
 
AWS Elastic Container Service - DockerHN
AWS Elastic Container Service - DockerHNAWS Elastic Container Service - DockerHN
AWS Elastic Container Service - DockerHNNguyen Anh Tu
 
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
 
Dev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarDev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarAmazon Web Services
 
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
 
Dev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudDev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudIan Massingham
 

Similar to AWS Presents: Infrastructure as Code on AWS - ChefConf 2015 (20)

Deep Dive - Infrastructure as Code
Deep Dive - Infrastructure as CodeDeep Dive - Infrastructure as Code
Deep Dive - Infrastructure as Code
 
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 –...
 
AWS Serverless Workshop
AWS Serverless WorkshopAWS Serverless Workshop
AWS Serverless Workshop
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration Presentation
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
 
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and moreScaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
Scaling Drupal in AWS Using AutoScaling, Cloudformation, RDS and more
 
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
 
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San Francisco
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San FranciscoDeep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San Francisco
Deep Dive into AWS SAM: re:Invent 2018 Recap at the AWS Loft - San Francisco
 
Deep Dive into AWS SAM
Deep Dive into AWS SAMDeep Dive into AWS SAM
Deep Dive into AWS SAM
 
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
 
2013 05-openstack-israel-heat
2013 05-openstack-israel-heat2013 05-openstack-israel-heat
2013 05-openstack-israel-heat
 
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - TorontoDevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
DevOps on AWS: Deep Dive on Infrastructure as Code - Toronto
 
AWS Elastic Container Service - DockerHN
AWS Elastic Container Service - DockerHNAWS Elastic Container Service - DockerHN
AWS Elastic Container Service - DockerHN
 
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
 
Dev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL WebinarDev & Test on AWS Webinar October 2017 - IL Webinar
Dev & Test on AWS Webinar October 2017 - IL Webinar
 
infrastructure as code
infrastructure as codeinfrastructure as code
infrastructure as code
 
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
 
Dev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the CloudDev & Test on AWS - Journey Through the Cloud
Dev & Test on AWS - Journey Through the Cloud
 

More from Chef

Habitat Managed Chef
Habitat Managed ChefHabitat Managed Chef
Habitat Managed ChefChef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps TourChef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps TourChef
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation WorkshopChef
 
London Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef ComplianceLondon Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef ComplianceChef
 
Learning from Configuration Management
Learning from Configuration Management Learning from Configuration Management
Learning from Configuration Management Chef
 
London Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef StuffLondon Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef StuffChef
 
London Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBetLondon Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBetChef
 
London Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to AuthorshipLondon Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to AuthorshipChef
 
London Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef AutomateLondon Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef AutomateChef
 
London Community Summit 2016 - Community Update
London Community Summit 2016 - Community UpdateLondon Community Summit 2016 - Community Update
London Community Summit 2016 - Community UpdateChef
 
London Community Summit 2016 - Habitat
London Community Summit 2016 -  HabitatLondon Community Summit 2016 -  Habitat
London Community Summit 2016 - HabitatChef
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Chef
 
Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3Chef
 
Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2Chef
 
Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1Chef
 
Application Automation with Habitat
Application Automation with HabitatApplication Automation with Habitat
Application Automation with HabitatChef
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateChef
 
Nike pop up habitat
Nike pop up   habitatNike pop up   habitat
Nike pop up habitatChef
 
Nike popup compliance workshop
Nike popup compliance workshopNike popup compliance workshop
Nike popup compliance workshopChef
 

More from Chef (20)

Habitat Managed Chef
Habitat Managed ChefHabitat Managed Chef
Habitat Managed Chef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation Workshop
 
London Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef ComplianceLondon Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef Compliance
 
Learning from Configuration Management
Learning from Configuration Management Learning from Configuration Management
Learning from Configuration Management
 
London Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef StuffLondon Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef Stuff
 
London Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBetLondon Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBet
 
London Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to AuthorshipLondon Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to Authorship
 
London Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef AutomateLondon Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef Automate
 
London Community Summit 2016 - Community Update
London Community Summit 2016 - Community UpdateLondon Community Summit 2016 - Community Update
London Community Summit 2016 - Community Update
 
London Community Summit 2016 - Habitat
London Community Summit 2016 -  HabitatLondon Community Summit 2016 -  Habitat
London Community Summit 2016 - Habitat
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4
 
Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3
 
Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2
 
Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1
 
Application Automation with Habitat
Application Automation with HabitatApplication Automation with Habitat
Application Automation with Habitat
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
 
Nike pop up habitat
Nike pop up   habitatNike pop up   habitat
Nike pop up habitat
 
Nike popup compliance workshop
Nike popup compliance workshopNike popup compliance workshop
Nike popup compliance workshop
 

Recently uploaded

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Recently uploaded (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

AWS Presents: Infrastructure as Code on AWS - ChefConf 2015

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Scott McDonald, Sr. Consultant 4/2/2015 Infrastructure as Code on AWS Example of Using CloudFormation to Deploy Chef Server 12 and Automatically Bootstrap Clients in AWS
  • 2.
  • 3. Infrastructure as Code is…. • A technical domain revolving around building and managing infrastructure programmatically. • A way to enable the reconstruction of the business from nothing but a source code repository, an application data backup, and bare metal resources. • Your primary constraint should be the amount of time it takes to restore your application data.
  • 4. AWS CloudFormation: Infrastructure as Code AWS CloudFormation gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion First released in 2010
  • 5. Amazon CloudFormation • Infrastructure as Code • Integrates with version control • JSON formatted documents • Templates for repeatable infrastructure • Stacks of resources • Supports AWS resource types AWS CloudFormation
  • 6. AWS CloudFormation: Infrastructure as Code Document, version control, and share your applications and infrastructure as a JSON document Provision app and other AWS resources (VPC, DynamoDB, RDS< EC2, Security Groups,) from a template Repeatable, reliable deployments for test/dev/prod in any AWS Region
  • 7. Resource Property Types • AutoScaling • CloudFront • CloudWatch • DynamoDB • EC2 • Elastic Beanstalk • Elastic Load Balancer • IAM • RDS • S3 • SNS/SQS
  • 8. AWS CloudFormation: Application stack example (continue) Template File Defining Stack Git Subversion Mercurial Dev Test Prod The entire application can be represented in an AWS CloudFormation template. Use the version control system of your choice to store and track changes to this template Build out multiple environments, such as for Development, Test, and Production using the template
  • 9.
  • 10. This Example requires precreating IAM Roles
  • 11. { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Example CloudFormation to install Chef 12 Server using RHEL 6.5 ami in us-east-1. This template creates and starts a Chef 12 Server with the Web Management module (for up to 10 hosts), initializes knife in ec2-user account, and then uploads the aws cookbook to the running Chef 12 Server. Roles are used to create a private s3 bucket and upload a client validation key. A WaitCondition is used to pause the stack creation until the server is completely deployed. **WARNING** This template creates one or more Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": { "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the Chef Server", "Type": "String", "MinLength": "1", "MaxLength": "255", "AllowedPattern" : "[x20-x7E]*", "ConstraintDescription" : "can contain only ASCII characters." }, "InstanceType" : { "Description" : "Chef 12 Server EC2 instance type", "Type" : "String", "Default" : "m3.large", "AllowedValues" : [ "t2.micro","t2.medium","m3.medium","m3.large","m3.xlarge","m3.2xlarge"], "ConstraintDescription" : "must be a valid EC2 instance type." }, CloudFormation Chef Server 12 Example 1/7
  • 12. "ChefServerRole" : { "Description" : "Pre-create a Role - it needs at least S3 put/get", "Type" : "String" }, "SourceLocation" : { "Description" : "Source IP address range allowed SSH/Web to the Chef Server", "Type": "String", "MinLength": "9", "MaxLength": "18", "Default": "0.0.0.0/0", "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." } }, "Mappings" : { "AWSRegion2AMI" : { "us-east-1" : { "id" : "ami-00a11e68" } } }, CloudFormation Chef Server 12 Example 2/7
  • 13. "Resources" : { "ChefServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "files" : { "/root/.aws/config" : { "content" : { "Fn::Join" : ["", [ "[default]n", "region = us-east-1n" ]]}, "mode" : "000600", "owner" : "root", "group" : "root" } } } } }, CloudFormation Chef Server 12 Example 3/7
  • 14. "Properties": { "SecurityGroups": [ { "Ref": "ChefServerSecurityGroup" } ], "IamInstanceProfile" : { "Ref" : "ChefServerRole" }, "ImageId": { "Fn::FindInMap": [ "AWSRegion2AMI", { "Ref": "AWS::Region" }, "id" ] }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bashn", "export PATH=$PATH:/usr/local/bin:/opt/aws/binn", "function error_exitn", "{n", " cfn-signal -e 1 -r "$1" '", { "Ref" : "ChefServerWaitHandle" }, "'n", " exit 1n", "}n", "curl https://bootstrap.pypa.io/ez_setup.py -o - | pythonn", "easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gzn", "cfn-init --region ", { "Ref" : "AWS::Region" }, " -s ", { "Ref" : "AWS::StackId" }, " -r ChefServer ", "|| error_exit 'Failed to run cfn-init'n", "# Bootstrap chefn", "cd /home/ec2-user n", "wget https://s3.amazonaws.com/awshat-chefcon2015/install-chef-aws.sh >> /tmp/install-chef-aws.log 2>&1 n", "chmod +x /home/ec2-user/install-chef-aws.sh n", "/home/ec2-user/install-chef-aws.sh >> /tmp/install-chef-aws.log 2>&1 n", "# Setup awscli on redhatn", "curl https://bootstrap.pypa.io/get-pip.py -o - | pythonn", "pip install awsclin”, CloudFormation Chef Server 12 Example 4/7
  • 15. "# use awscli to copy validation key to S3 bucketn", "/usr/bin/aws s3 cp /home/ec2-user/.chef/chef-validator.pem s3://", {"Ref" : "ChefKeyBucket" } ,"/chef-validator.pemn", "# If all went well, signal successn", "cfn-signal -e $? -r 'Chef Server configuration' '", { "Ref" : "ChefServerWaitHandle" }, "'n" ]]}}, "KeyName": { "Ref": "KeyName" }, "InstanceType": { "Ref": "InstanceType" } } }, "ChefServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Open up SSH/Web access to Chef Server from allowed Group and Source IP range", "SecurityGroupIngress" : [ { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": { "Ref" : "SourceLocation"} }, { "IpProtocol": "tcp", "FromPort": "443", "ToPort": "443", "SourceSecurityGroupName": { "Ref" :"ChefClientSecurityGroup" }}, { "IpProtocol": "tcp", "FromPort": "443", "ToPort": "443", "CidrIp": { "Ref" : "SourceLocation"} } ] } }, CloudFormation Chef Server 12 Example 5/7
  • 16. "ChefClientSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Group with client access to Chef Server", "SecurityGroupIngress" : [ { "IpProtocol": "tcp", "FromPort": "22", "ToPort": "22", "CidrIp": { "Ref" : "SourceLocation"} }, { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": { "Ref" : "SourceLocation"} } ] } }, "ChefKeyBucket" : { "Type" : "AWS::S3::Bucket", "Properties" : { "AccessControl" : "Private" }, "DeletionPolicy" : "Delete" }, "ChefServerWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, CloudFormation Chef Server 12 Example 6/7
  • 17. "ChefServerWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "ChefServer", "Properties" : { "Handle" : { "Ref" : "ChefServerWaitHandle" }, "Timeout" : "7200" } } }, "Outputs" : { "ServerURL" : { "Description" : "URL of newly created Chef 12 server - login and change password", "Value" : { "Fn::Join" : ["", ["https://", {"Fn::GetAtt" : [ "ChefServer", "PublicDnsName" ]}, ":443/organizations/chef"]]} }, "ChefKeyBucket" : { "Description" : "Private S3 bucket with validation key for client bootstrap automation:", "Value" : {"Ref" : "ChefKeyBucket" } }, "ChefSecurityGroup" : { "Description" : "EC2 Security Group for access to Chef 12 Server", "Value" : { "Ref" :"ChefClientSecurityGroup" } } } } CloudFormation Chef Server 12 Example 7/7
  • 18. Run CloudFormation template in AWS Console
  • 19. Enter parameters for CloudFormation template
  • 20. Using CloudFormation from the CLI 685b358e3054:ChefCon2015 smcdon$ pwd /Users/smcdon/Documents/ChefCon2015 685b358e3054:ChefCon2015 smcdon$ cat add.server aws cloudformation create-stack --stack-name chef12-server5 --template- body file://./server.cfn --disable-rollback --parameters ParameterKey=InstanceType,ParameterValue=m3.2xlarge ParameterKey=KeyName,ParameterValue=awshat_key01 ParameterKey=ChefServerRole,ParameterValue=devops
  • 21. Deploying Chef Server 12 via CloudFormation 685b358e3054:ChefCon2015 smcdon$ ./add.server { "StackId": "arn:aws:cloudformation:us-east- 1:162012790422:stack/chef12-server5/f30bbc20-d48c-11e4-a271-50443313686e" } 685b358e3054:ChefCon2015 smcdon$
  • 22. Infrastructure as Code under Version Control! 685b358e3054:ChefCon2015 smcdon$ git commit -m "ChefCon2015 presentation commit example" [master ccf204b] ChefCon2015 presentation commit example 1 file changed, 1 insertion(+), 1 deletion(-) 685b358e3054:ChefCon2015 smcdon$ git push origin master Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 316 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) To https://github.com/awshat/chefcon2015.git 190668d..ccf204b master -> master 685b358e3054:ChefCon2015 smcdon$
  • 23. Watch CloudFormation build in AWS Console
  • 25. { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Sample template to bring up a redhat linux ec2 instance and bootstrap a client node to be managed by an existing Chef Server. **WARNING** This template creates an EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": { "KeyName": { "Type": "String", "Description" : "EC2 KeyPair to enable SSH access to the client instance" }, "InstanceType": { "Default": "m3.medium", "Description" : "Type of EC2 instance for the client node", "Type": "String", "AllowedValues" : [ "t2.micro", "t2.medium", "m3.small", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge"], "ConstraintDescription" : "must contain only alphanumeric characters." }, CloudFormation for Chef Clients in AWS 1/3
  • 26. "ServerURL" : { "Description" : "Chef 12 Server URL", "Type": "String" }, "ChefSecurityGroup" : { "Description" : "Security group for clients to get access to Chef Server", "Type": "String" }, "S3Role" : { "Description" : "IAM S3 Role with Get access for chef client bootstrapping automation", "Type" : "String" }, "ChefKeyBucket" : { "Description" : "S3 bucket with validation key", "Type": "String" }, "ChefClientEnv" : { "Description" : "Environment setting for deployed instances", "Type": "String", "Default" : "_default" } }, CloudFormation for Chef Clients in AWS 2/3
  • 27. "Mappings" : { "AWSRegion2AMI" : { "us-east-1" : { "id" : "ami-00a11e68" } } }, "Resources" : { "ChefClient": { "Type": "AWS::EC2::Instance", "Properties": { "SecurityGroups": [ { "Ref": "ChefSecurityGroup" } ], "IamInstanceProfile" : { "Ref" : "S3Role" }, "ImageId": { "Fn::FindInMap": [ "AWSRegion2AMI", { "Ref": "AWS::Region" }, "id" ] }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bashn", "# Bootstrap chef clientn", "cd /home/ec2-user n", "wget https://s3.amazonaws.com/awshat-chefcon2015/install-chef-client.sh >> /tmp/install-chef-amzn.log 2>&1 n", "chmod +x /home/ec2-user/install-chef-client.sh n", "/home/ec2-user/install-chef-client.sh ", {"Ref" : "ChefKeyBucket" } ," ", {"Ref" : "ServerURL" } ," ", {"Ref" : "ChefClientEnv" } ," >> /tmp/install-chef-amzn.log 2>&1 n" ]]}}, "KeyName": { "Ref": "KeyName" }, "InstanceType": { "Ref": "InstanceType" } } } } } CloudFormation for Chef Clients in AWS 3/3
  • 28. Enter parameters for CloudFormation in GUI
  • 29. Create a Version Controlled Client Script 685b358e3054:ChefCon2015 smcdon$ cp add.client4 add.client5 685b358e3054:ChefCon2015 smcdon$ vi add.client5 685b358e3054:ChefCon2015 smcdon$ cat add.client5 aws cloudformation create-stack --stack-name $1 --template-body file://./client.cfn --disable-rollback --parameters ParameterKey=KeyName,ParameterValue=awshat_key01 ParameterKey=InstanceType,ParameterValue=m3.large ParameterKey=ServerURL,ParameterValue=https://ec2-52-1-228-71.compute-1.amazonaws.com:443/organizations/chef ParameterKey=ChefKeyBucket,ParameterValue=chef12-server5-chefkeybucket-zut8xoz6apsn ParameterKey=ChefSecurityGroup,ParameterValue=chef12-server5-ChefClientSecurityGroup-NIR4XTVU1POF ParameterKey=S3Role,ParameterValue=s3access 685b358e3054:ChefCon2015 smcdon$ git add -A 685b358e3054:ChefCon2015 smcdon$ git commit -m "ChefCon2015 example client script for presentation" [master f655195] ChefCon2015 example client script for presentation 1 file changed, 8 insertions(+) create mode 100755 add.client5 685b358e3054:ChefCon2015 smcdon$ git push origin master Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 599 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To https://github.com/awshat/chefcon2015.git ccf204b..f655195 master -> master
  • 30. Use CloudFormation to Bootstrap Clients 685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client1 { "StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5- client1/73936ff0-d497-11e4-8f0c-50e2416294a8" } 685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client2 { "StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5- client2/75a5fc40-d497-11e4-bf18-50e24162947c" } 685b358e3054:ChefCon2015 smcdon$ ./add.client5 server5-client3 { "StackId": "arn:aws:cloudformation:us-east-1:162012790422:stack/server5- client3/77368750-d497-11e4-adea-50018ffe9e62" }
  • 31. Watch CloudFormation for Clients in Console
  • 32. Watch Clients show up in Chef 12 Webmanager
  • 33. CloudFormation = Easy Teardown • Fully automated • Delete resources • Complete teardown • Entire stacks are disposable • For this Chef 12 Example – Deleting clients in CloudFormation automatically deregisters nodes from Chef Server managementAWS CloudFormation
  • 34. Teardown Chef Server via CloudFormation
  • 35. Watch Teardown in CloudFormation Console
  • 36. Confirm deleted resources gone in console
  • 37. Teardown for Chef Clients in AWS Console
  • 38. Teardown both easily in AWS Console
  • 40. Thank you & Have fun! Scott McDonald - smcdon@amazon.com

Editor's Notes

  1. Notes: The entire application can be represented in an AWS CloudFormation template. You can use the version control system of your choice to store and track changes to this template. You can use the template to quickly build out multiple environments, such as for Development, Test, and Production.