Do you have multiple configuration management languages in production simultaneously? Do you find yourself having to accommodate for multiple deployment flows, dependencies, code structures and syntax for tools that do similar tasks? This talk will consist of demos, stories and structures to help you quantify and define what is slowing your flow, recognize equivalencies between languages for translation, and help you map the way to successfully iterate towards unity of tooling with Puppet. In this session, I will: *Discuss causes and prevention of duplicate tooling *Quantify resource cost of duplicate tooling *Define existing language roles *Identify similarities in language structure *Discuss and demonstrate conversion techniques
23. “Making the single worst strategic mistake
that any software company can make: They
decided to rewrite the code from scratch” -
Joel Spolsky
24. “Making the single worst strategic mistake
that any software company can make: They
decided to rewrite the code from scratch” -
Joel Spolsky
25. “A good estimate is an
estimate that provides a clear
enough view of project reality
to allow the project leadership
to make good decisions about
how to control the project to
hit its targets…”
26. “A good estimate is an
estimate that provides a clear
enough view of project reality
to allow the project leadership
to make good decisions about
how to control the project to
hit its targets…”
41. Puppet Ansible Salt Chef
Node, Agent Nodes Minion Node, Client
Environment N/A Environment Environment
Resource Module Methods id, state declarations, module
methods
resource
Attribute Play Function declaration Resource attribute
Hiera Group vars, host
vars, defaults, role
defaults
Grains, pillars Data bags,
attributes
Hiera Hierarchy Top-to-bottom,
vars files
Top file merging strategy Attribute
precedence
42. Puppet Ansible Salt Chef
Node, Agent Nodes Minion Node, Client
Environment N/A Environment Environment
Resource Module Methods id, state declarations, module
methods
resource
Attribute Play Function declaration Resource attribute
Hiera Group vars, host
vars, defaults, role
defaults
Grains, pillars Data bags,
attributes
Hiera Hierarchy Top-to-bottom,
vars files
Top file merging strategy Attribute
precedence
43. Puppet Ansible Salt Chef
Node, Agent Nodes Minion Node, Client
Environment N/A Environment Environment
Resource Module Methods id, state declarations, module
methods
resource
Attribute Play Function declaration Resource attribute
Hiera Group vars, host
vars, defaults, role
defaults
Grains, pillars Data bags,
attributes
Hiera Hierarchy Top-to-bottom,
vars files
Top file merging strategy Attribute
precedence
44. Puppet Ansible Salt Chef
Node, Agent Nodes Minion Node, Client
Environment N/A Environment Environment
Resource Module Methods id, state declarations, module
methods
resource
Attribute Play Function declaration Resource attribute
Hiera Group vars, host
vars, defaults, role
defaults
Grains, pillars Data bags,
attributes
Hiera Hierarchy Top-to-bottom,
vars files
Top file merging strategy Attribute
precedence
45. Puppet Ansible Salt Chef
Node, Agent Nodes Minion Node, Client
Environment N/A Environment Environment
Resource Module Methods id, state declarations, module
methods
resource
Attribute Play Function declaration Resource attribute
Hiera Group vars, host
vars, defaults, role
defaults
Grains, pillars Data bags,
attributes
Hiera Hierarchy Top-to-bottom,
vars files
Top file merging strategy Attribute
precedence
46. Puppet Ansible Salt Chef
Facter Facts, Setup Pillar Ohai
Manifest Playbook State File Recipe
Module Playbook Formula (Not modules) Cookbook
Role Multiple Roles Top file, nodegroups, hostname
regex
Run-list, policyfile
Profiles Roles Top files Roles
47. Puppet Ansible Salt Chef
Facter Facts, Setup Pillar Ohai
Manifest Playbook State File Recipe
Module Playbook Formula (Not modules) Cookbook
Role Multiple Roles Top file, nodegroups, hostname
regex
Run-list, policyfile
Profiles Roles Top files Roles
48. Puppet Ansible Salt Chef
Facter Facts, Setup Pillar Ohai
Manifest Playbook State File Recipe
Module Playbook Formula (Not modules) Cookbook
Role Multiple Roles Top file, nodegroups, hostname
regex
Run-list, policyfile
Profiles Roles Top files Roles
49. Puppet Ansible Salt Chef
Facter Facts, Setup Pillar Ohai
Manifest Playbook State File Recipe
Module Playbook Formula (Not modules) Cookbook
Role Multiple Roles Top file, nodegroups, hostname
regex
Run-list, policyfile
Profiles Roles Top files Roles
50. Puppet Ansible Salt Chef
Facter Facts, Setup Pillar Ohai
Manifest Playbook State File Recipe
Module Playbook Formula (Not modules) Cookbook
Role Multiple Roles Top file, nodegroups, hostname
regex
Run-list, policyfile
Profiles Roles Top files Roles
51. Puppet Ansible Salt Chef
Puppet Master Your local
workstation
Salt Master Chef Server
Masterless Puppet Ansible CLI Masterless Salt-Minion Chef Zero
Hiera-EYAML Ansible Vault Encrypted Pillars Chef Vault
Librarian-Puppet,
R10k
Git Salt Package Manager Berkshelf
Beaker Kitchen-Ansible Kitchen-Salt Kitchen
Puppet-Lint Ansible-Lint salt-Lint Foodcritic, Cookstyle
MCollective Ansible CLI salt cmd-run, salt-cloud Knife
Puppet Forge Ansible Galaxy Github.com/saltstack-formulas Chef Supermarket
52. Puppet Ansible Salt Chef
Puppet Master Your local
workstation
Salt Master Chef Server
Masterless Puppet Ansible CLI Masterless Salt-Minion Chef Zero
Hiera-EYAML Ansible Vault Encrypted Pillars Chef Vault
Librarian-Puppet,
R10k
Git Salt Package Manager Berkshelf
Beaker Kitchen-Ansible Kitchen-Salt Kitchen
Puppet-Lint Ansible-Lint salt-Lint Foodcritic, Cookstyle
MCollective Ansible CLI salt cmd-run, salt-cloud Knife
Puppet Forge Ansible Galaxy Github.com/saltstack-formulas Chef Supermarket
53. Puppet Ansible Salt Chef
Puppet Master Your local
workstation
Salt Master Chef Server
Masterless Puppet Ansible CLI Masterless Salt-Minion Chef Zero
Hiera-EYAML Ansible Vault Encrypted Pillars Chef Vault
Librarian-Puppet,
R10k
Git Salt Package Manager Berkshelf
Beaker Kitchen-Ansible Kitchen-Salt Kitchen
Puppet-Lint Ansible-Lint salt-Lint Foodcritic, Cookstyle
MCollective Ansible CLI salt cmd-run, salt-cloud Knife
Puppet Forge Ansible Galaxy Github.com/saltstack-formulas Chef Supermarket
54. Puppet Ansible Salt Chef
Puppet Master Your local
workstation
Salt Master Chef Server
Masterless Puppet Ansible CLI Masterless Salt-Minion Chef Zero
Hiera-EYAML Ansible Vault Encrypted Pillars Chef Vault
Librarian-Puppet,
R10k
Git Salt Package Manager Berkshelf
Beaker Kitchen-Ansible Kitchen-Salt Kitchen
Puppet-Lint Ansible-Lint salt-Lint Foodcritic, Cookstyle
MCollective Ansible CLI salt cmd-run, salt-cloud Knife
Puppet Forge Ansible Galaxy Github.com/saltstack-formulas Chef Supermarket
55. Puppet Ansible Salt Chef
Puppet Master Your local
workstation
Salt Master Chef Server
Masterless Puppet Ansible CLI Masterless Salt-Minion Chef Zero
Hiera-EYAML Ansible Vault Encrypted Pillars Chef Vault
Librarian-Puppet,
R10k
Git Salt Package Manager Berkshelf
Beaker Kitchen-Ansible Kitchen-Salt Kitchen
Puppet-Lint Ansible-Lint salt-Lint Foodcritic, Cookstyle
MCollective Ansible CLI salt cmd-run, salt-cloud Knife
Puppet Forge Ansible Galaxy Github.com/saltstack-formulas Chef Supermarket
56. Puppet Ansible Salt Chef
Puppet Apply Ansible-
playbook
Salt-call state.apply chef-apply
Noop Check, diff
check, diff
test why-run
Puppet Agent Ansible-
playbook
salt state.highstate chef-client
R10k Inventory,
groups vars, host
vars
GitFS Berkshelf,
environments, policy
groups
57. Puppet Ansible Salt Chef
Puppet Apply Ansible-
playbook
Salt-call state.apply chef-apply
Noop Check, diff
check, diff
test why-run
Puppet Agent Ansible-
playbook
salt state.highstate chef-client
R10k Inventory,
groups vars, host
vars
GitFS Berkshelf,
environments, policy
groups
58. Puppet Ansible Salt Chef
Puppet Apply Ansible-
playbook
Salt-call state.apply chef-apply
Noop Check, diff
check, diff
test why-run
Puppet Agent Ansible-
playbook
salt state.highstate chef-client
R10k Inventory,
groups vars, host
vars
GitFS Berkshelf,
environments, policy
groups