After getting Puppet installed, what are the things you need to consider to make use of your environment?
This presentation talks about using version control, a strong workflow, and methods to organize your modules.
A git repo with the example module module setup is available at https://github.com/adamcrews/pug-environments
2. Hour 1
You’ve run the puppet installer,
You’ve installed agents on your nodes...
Now what?
Version Control, Workflow, Organization
3. Version Control
Have you ever:
●
●
●
●
●
●
●
●
●
Made a change to code, realised it was a mistake and wanted to revert?
Lost code or had a backup that was too old?
Wanted to see the difference between various versions of your code?
Wanted to prove that a particular change broke or fixed a piece of
code?
Wanted to review the history of some code?
Wanted to submit a change to someone else's code?
Wanted to share your code, or let other people work on your code?
Wanted to see how much work is being done, where, when, and by
whom?
Wanted to experiment with a new feature without interfering with
working code?
4. Workflow
● R10K
○
○
○
○
○
Deployment tool for Puppet
Leverages git for quick and reliable updates
As many environments as you want
Test your code before production
Robust error handling
5. Organization Multiple Masters
● Pros
○ Separate out Production from Development
○ Complete separation of all aspects of the
environment.
○ Security separation so pre-release code
cannot “leak” into production.
○ Upgrade/downgrade components without
causing disruption
6. Organization Multiple Masters
● Cons
○ You must ensure you have a good code flow
between masters
○ Risk of environment drift between the silos
○ Data is not shared between silos
7. Organization Hiera
● Hiera allows data separation
○
○
○
○
Data is separate from code logic
Easy task delegation
Single source of truth for data
Ability to collect data from external
sources, but present in a consistent way.
8. Organization Hiera
● Allows you to use modules directly
from the Forge:
1.
2.
3.
4.
5.
Download the module (or use r10k)
Add data to Hiera
Classify on a node
???
Profit
9. Organization Roles and Profiles
●
●
●
●
●
Glue between nodes, Hiera, and modules
Avoids “magic” Hiera data
Separate business logic from technology stack
Modules stay generic
Nodes can be classified using one include
10. Organization Roles and Profiles
● Profiles
○ Configuration of generic modules
○ Business logic on how to utilize modules
○ Examples:
■ apache::dev - Configure apache for dev
hosts, perhaps disable ssl
■ apache::prod - Configure apache for
prod hosts, require ssl
11. Organization Roles and Profiles
● Roles
○ A collection of profiles
○ A group of modules/profiles that make up a
single server role, for example a WordPress
website
○ Each node should only have a single role
12. Hour 2
You’ve decided on a version control system,
You’ve decided on a workflow,
You’ve decided on an overall architecture...
Now what?
Setup R10K, Configure NTP, Configure
Minecraft
13. NTP - A practical Example
Step 1 - Install the module via r10k
Step 2 - Add the key(s) to hiera
Step 3 - Classify the node
DEMO!
14. Minecraft - A more fun, but
less practical example
Step 1 - Install the module via r10k
Step 2 - Add the key(s) to hiera
Step 3 - Classify the node
DEMO!
15. Hour 3 Light reading
● R10k
○ http://bit.ly/puppetr10k
● Git Workflow and Dynamic Environments
○ http://bit.ly/puppetgit
● “DevOps. It’s about culture, stupid!”
○ http://slidesha.re/18vbP8U
● Separating Data from Code
○ http://bit.ly/puppetdata
● Beer Finding App (Because you deserve it now)
○ https://untappd.com/