Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable...
Transcript of Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable...
Meta Infrastructure as Code: How Capital One Automates our Automation Tools with an Immutable JenkinsGeorge Parris IIIMaster Software Engineer, Retail Bank DevOps @ Capital One
2
Why automation is necessary
Our basic principles for success
Continuous Integration & Continuous Delivery
3
Software development has come a long way!
The rise of –Agile Methodologies–Infrastructure As Code–DevOps Culture
4
How Capital One OAO deploys code:
Infrastructure As Code–AWS–Configuration Management–TEST! TEST! TEST!
*IMMUTABILITY
Continuous Integration
Continuous Delivery… Approved and Scheduled Deployments
5
And how do we do that?
6
7
Our Basic Principles
–Infrastructure As Code
–Configuration As Code
–Immutability
–Backup and Restore Strategy
8
Infrastructure As Code
– Using AWS, everything is Cloud Formation Templates
– Custom tooling to pass variables (now available in CFT)
– Every change is tested
– Easily can spin up environments
9
Configuration As Code
– Chef and Ansible
– No central server (Chef Server or Ansible Tower)
– Changes are version controlled
– ”Innersourcing” of changes, such as plugins
10
Immutability
– Prevents “special snowflakes” and regressions
– Changes are made in code
– Testing pipelines and code review
11
Backup and Restore Strategy
– A backup is only as good as your restore strategy
– Useful for catastrophic event or accidental deletion
– Necessary for new deployments
– Pause the server, save the current state, restore to that state
12
Who Watches the Watchmen?
13
14
Continuous Integration: The First Step is TESTING
–Test Your Application Code
–Test Your Configuration Management Code
–Test Your Infrastructure Code
–Test In an Integrated Environment (QA)
–Test After You Launch a New Version to Prod
15
Continuous Integration: Second Step is Automating the Testing
–On Pull Request to Application Code
–On Pull Request to Configuration Management Code
–On Pull Request to Infrastructure Code
16
And What About Continuous Delivery?
–High confidence in our changes
–How do we deploy a new version of the tool that we usually use to deploy new versions???
17
“Mini Jenkins”, the Jenkins Deployer
–Reusability
–Can run our tests
–Can update our stacks
18
Other Options
–Bootstrapping
–AWS Lambda
–MultiMaster Active/Active
–AWS CodeDeploy
19
Takeaways
–Infrastructure and Config As Code
–Backup and Restore Strategy
–Testing