Learning about CloudFormation
- It is a AWS service
- It simplifies Infrastructure Management
- Used to model and set up AWS resources
- Involves creating template which lists AWS resources needed
- responsible for provisioning and configuring AWS resources
- Used by Elastic Beanstalk
- Cloud formation (CFN) template describes all needed resources and their properties.
- Template
- has JSON format
- JSON document gives instructions for CFN
- Instructions on resources to act and what resources to create/update
- Stack
- refers to CFN unit of grouping infra
- Stack Policy
- IAM style policy
- governs what or who can change
- can be added via CLI or UI
- updated but cannot be removed
- Create CFN template -> Add template to CFN -> Create CFNStack -> Resources (200 per template) -> Update template/Stack -> Delete Stack
- Template components
- Parameters – used to pass variables into template
- Mappings (allow processing of hash’s by CFN template)
- Resources,
- Outputs (results from template);
- Only Resources is mandatory.
- CFN can run scripts within instances, expand files within instances, stack id(unique).
- Use cases:
- Template for manual deployment of bespoke infra.
- create repeatable patterned environment (ex:wordpress site with DB)
- run automated testing for CI/CD environments (dev, test, prod)
- define an environment once, deployed
- manage infra config using software development style versioning and testing concepts.
- It provisions
- Auto Scaling group
- load balancer
- and database
- Can easily edit or delete resources
- manage a collection of resources as a single unit or stack.
- Quickly replicate infrastructure
- control and track changes to infrastructure
CloudFormation Working
- Easily create an infrastructure stack, with CloudFormation by
- making underlying service calls to AWS
- provision and configure AWS resources.
- calls are as per defined template.
- CloudFormation perform only actions having permission to do.
- CloudFormation template can be a JSON or YAML-formatted document
- After all resources have been created, AWS CloudFormation reports stack creation
- If stack creation fails, CloudFormation rolls back changes by deleting the resources that it created.
Steps
- Design an CloudFormation template in AWS CloudFormation Designer or text editor.
- Save template either in s3 or locally
- Create an AWS CloudFormation stack by specifying the location of template file
Change Sets
- It is a summary of proposed changes to stack
- Used for stack updation
- stack updation is done to reflect changes on resources being used
- Before making changes, generate a change set
- Change sets enables seeing impact of change on running resources, before implementing them.
- Updates can cause interruptions, depending on resource and properties being updated
- Change sets do not indicate successful stack update.
- Example, changing Amazon RDS database instance name,
- CloudFormation will create a new database and delete the old one and and will lose data in old database
- With change set, see changes on database to be replaced, and plan accordingly
Updating a Stack with Change Sets
- To update stack’s resources, modify stack’s template.
- Do not create new stack and delete old one.
- Instead, create change set by submitting a modified version of original stack template,
- CloudFormation compares the modified with original template and generates a change set.
- Change set lists the proposed changes.
- After reviewing changes, execute the change set to update stack
Steps
- Modify CloudFormation stack template using CloudFormation Designer or a text editor.
- Save CFN template can be saved either to s3 bucket or locally
- changeset is created to reflect any changes needed in stack
- View changeset to check CloudFormation will perform with the changes
- Execute changeset to apply to stack.
Enrich and Enhance your skills to become an AWS Certified Developer – Associate with hundreds of Free Practice Test. Try Now!
AWS Certified Developer - Associate Free Practice TestTake a Quiz