Meta Infrastructure as Code: How Capital One Automated Our Automation Tools with an Immutable...

Post on 14-Apr-2017

115 views 0 download

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