Everything's Better With Salt
What is Config Management?
- A way to define a set of configurations
- Used to create a known state on a server
- (Generally) Declarative instead of imperative
- Replaces ad-hoc bash scripts
Why Is It Important?
- Provides a known good state
- Repeatable environments
- Easier to troubleshoot bugs in application
- Able to easily scale up and down
What Is Orchestration?
- Definition: 'Harmonious Organization'
- Executing tasks in a defined order
- Managing servers from a central location
Why Is It Useful?
- Easily execute tasks on multiple hosts
- Perform tasks in a deterministic order
- Perform multiple tasks at once
- Reduces time and effort of performing tasks
- Central repository of tasks to be performed
- Consistent and repeatable outcomes of tasks
Mastering Your Infrastructure
- Master node controls entire infrastructure
- Central repository for config and orchestration
- Inventory nodes in infrastructure
- One-click deployment of entire environment
- Manage sensitive data outside of source control
- Web GUI for viewing and controlling minions
- Written in AngularJS
- Extensible and customizable
Managing Sensitive Data
- Sensitive data includes passwords, AWS keys, etc.
- Unsafe to store in source control (git, mercurial, etc.)
- With SaltStack can be stored in DBMS (PostGreSQL, MongoDB)
- Data sent directly to minion, only when needed
- DBMS can live on the master node
More Fun For Everyone
Proper automation of config and orchestration allows for:
- Repeatable environments
- Able to build and destroy entire environments at a time
- Self provisioning of environments for Dev and QA
- Fast and easy scaling up or down depending on load
- Faster and easier disaster recovery
- Deploy builds to multiple servers
- Synchronously or in rolling release