AWS CloudFormation
Chamila de Alwis
How do you deploy?
Infrastructure
+
Deployment
Provisioning
Application
Provisioning
(manual) (mostly automated)
https://martinfowler.com/bliki/SnowflakeServer.html
Snowflake or Immutable?
Management or Orchestration
Infrastructure as Code
Codified
Configuration
that can be
Version Managed
Code Reviewed
Release-managed
AWS CloudFormation
AWS specific (surprise!!)
JSON/YAML
“Templates” create “Stacks”
Update/Rollout made easy
Visual diagramming
Demo
Load Balancing
Artifact
Management
Database
Management
Load Balancing
Artifact
Management
Database
Management
Security and
Access Control
Naming Routing Internet Access
Demo
https://github.com/chamilad/cf-demo
Resources
Parameters
Outputs
Mappings
Conditions
Create
Stack
Create
Instance
Pass user-
data
cloud-init
Script
execution
Creation
Complete
AMI Creation
Private Customized AMIs
Availability Across Regions
Scalable Process for Updates
* as Code
Hashicorp’s Packer
Develop
AMI
Develop CF
Template
Upload
AMI(s)
Create
Stack
Config
Automation
(Puppet)
Update
AMI(s)
Update
Template
Deployment
Parameterize
Use Outputs
Reusability vs Maintainability
Use Autoscaling, Launch Configs and EIPs
Use Mappings
API calls and IAM Instance Profiles
Capabilities are required
Be Mindful of Costs
Questions?
Thank You!

Editor's Notes

  • #3 Typical deployment story Request for instances by specifying specs Manage specs manually Setup manually or using something like Puppet Go to production
  • #4 What happened above Infrastructure management App provisioning (automation of this layer is well known now)
  • #6 Manage vs Orchestrate What? Manual management of VMs, Networks vs Automatoin of this confiugraiton through code Why? Snowflake vs Immutable deployment How? Through codification of infrastructure configuration
  • #11 Vendor specific JSON or YAML based Separate API exposing AWS resources Rollout is made easy Minor Visual part of the service
  • #13 This is the what is usually involved But there’s more to this than this initial config
  • #14 Things quickly become complex and the need for a cross-stack management descipline arises We should create a Template’ Continously test Release Do changes only in the template and update
  • #15 Create from UI Show created resources Go through the CF script and map to resources and explain how they were created
  • #18 Need for private AMIs Introduce Packer To be contd.