2. who is Jesus Nunez?
- Software Engineer
- Enjoys continuous process improvement
- 15+ year developing software
- Have worked for Government, Telco and Finance
industry
- Puppet enthusiast
- Currently helping to automate as much as I can…
especially my Job !!!
3. What makes up Puppet?
- Puppet DSL code
- Ruby libraries
- Execution services
=> knowledge
=> engine
=> trigger
4. Execution services in Master-node mode
for each node {
node wakes up every X time
master receives node’s signal
master compiles node’s catalog
master sends instructions to node
node applies changes and go to sleep
}
5. Execution services in Masterless mode
for each node {
remote executor sends command to node
node pulls Puppet code from git central repo
node compiles catalog
node applies changes
}
6. Distributing the knowledge
- The Puppet code will be held in each node rather than in
a Puppet Master server.
- Node local git repo will have the node’s puppet code.
7. librarian-puppet
Ruby library to manage Puppet modules.
The Puppetfile has the list of modules to pull from internal or external repos.
mod "apt",
:git => "git://github.com/puppetlabs/puppetlabs-apt.git"
mod "my_web_server",
:git => "ssh://repos.git.mycompany/infra/my_web_server.git"
:ref => “v1.0”
8. SSH remote execution
A remote executor server will trigger on one or more
target nodes:
1. Code update via librarian puppet
2. Puppet apply command
9. How do we get there?
- Puppet installed in the nodes (no need for certificate and
daemon)
- Install remote executor
- Remote executor SSH key distribution
- ENC file(s)
- Puppetfile generator
- Puppet modules with Hiera data
14. Pros
- Distributed processing
- Distributed knowledge
- No single point of failure
- Less moving parts
Cons
- Reimplement remote execution and/or job scheduling
- Reimplement ENC