Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pcfens/mabug2016
https://github.com/pcfens/mabug2016
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/pcfens/mabug2016
- Owner: pcfens
- Created: 2016-10-06T04:25:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-06T04:37:15.000Z (over 8 years ago)
- Last Synced: 2024-10-26T22:15:39.107Z (2 months ago)
- Size: 109 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Configuration Management to Encourage Collaboration and Avoid Repetition
Phil Fenstermacher
---
## Who am I?
Systems Engineer for ~6 years
Fan of automation and old keyboards
---
## Configuration Management
* A tool to manage and enforce server/software configurations
* Popular options include Chef, Salt, Ansible, and Puppet (we use Puppet).
* For the sake of this discussion, they're kept in code---
![Model M](keyboard.jpg "Model M")
The only clicky-clicky that goes on---
## Collaboration
Working across traditional silos (e.g. Banner Software Team and operations)Note:
Next piece is discuss why we need these things---
## Configuration Management
Keeping configuration in code lets us:
* keep it in SCM
* test it
* roll back when I break somethingNote: Testing is important because it lets you move faster with greater confidence
---
## Collaboration/Shared Risks
* Shared risks reduce overall risks
* Fewer issues
* Faster recovery from issuesNote: State of devops report is an interesting read on how IT performance can be
measured in terms of these things---
## Repetition
* It's boring: when people get bored they start to make mistakes
* Time spent not solving problems you still haveNote:
* Computers are good at repeating things without fatigue* Banner web tier machines were set up manually, supposedly identically,
but they were different, one was broken, and nobody knew why---
## On the ops team
* Configuration Management data is kept in git
* On a push to git, tests are run
* If tests pass, the new config is deployed to our puppet server for enforcement
* Failure is announced in the group chat---
## On other teams
* A change is proposed using a git merge request
* Operations looks at the code to see if it should be merged
* Tests are run on the MR
* Merged code that passes tests are deployed automatically---
## Testing
* Static analysis
* Unit/Spec Testing
* Acceptance TestingNote: Useful for collaborating with untrusted groups
---
## Static Analysis
* File/folder structure
* Basic Syntax
* Style/Lint Checking---
## Unit/Spec Testing
* Test output with a known input
* Catches logic errors in complex situationsNote: Compiles everything - useful for upgrade testing
---
## Acceptance Testing
* Apply configuration to a machine/container and test for success
Note: What beyond ability to collaborate safely?
---
## Other Gains
* Backup data only, not full systems
* Copy paste infrastructure
* Writing documentation == configuring serversNote: Discuss the piece running in AWS
---
## Everything in git
* VM Templates are built using packer
* Documentation lives with the codeNote: Docs must be markdown or plaintext - viewable in vi is a must
---
## Getting Here
* 5 Years
* Small Goals
* Build the CultureNote: Tooling has come a long way, much easier to do full testing today
---
## What Next?
* Device/Appliance Configuration
* Existence of resources
* Running containers---
[github.com/pcfens/mabug2016](https://github.com/pcfens/mabug2016)
---
## Demo Time