Dave Anderson of Ammeon at PuppetCamp Dublin '12, speaking on:
- Dynamic re/generation of manifests
- Several features that aren't in puppet today but would be cool to have
- Experience embedding puppet in a software product (as opposed to ad-hoc devops)
@supergingerdave
6. Puppet + Python = 👍
• Great docs, examples, user community
• Main Puppet "API" we use is files -
strange!
7. Puppet + Python = 👍
• Great docs, examples, user community
• Main Puppet "API" we use is files -
strange!
• Continuous Integration: PuppetLint ...
8. Puppet + Python = 👍
• Great docs, examples, user community
• Main Puppet "API" we use is files -
strange!
• Continuous Integration: PuppetLint ...
• Managing hardware and
infrastructure stretches the metaphor
(and then Razor popped up!)
9. Top Tip: Dependencies
packages -> config -> services
This pattern utilises the concept of keeping
packages, configuration and services classes
self contained and separate from each other
require => Service['aservice'],
Service['anotherservice'],
Service['andanother']
💚
require => Class['amodule::services']
11. Top Worry: Import
We have a tree of sites and
use import to import the
nodes for each site.
e.g. site1 may import
node1.pp and node2.pp
Import is deprecated ...
12. Top Worry: Import
We have a tree of sites and
use import to import the
nodes for each site.
e.g. site1 may import
node1.pp and node2.pp
Import is deprecated ...
http://projects.puppetlabs.com/issues/12930
13. Challenges
👾 👾 👾 👾 👾 👾
• Intra-node dependencies (stages++)
• Robustness
• Availability control
• Introspection of puppet master model
• Recipes for Upgrade
14. Contributions
• Currently we have contributed ... nothing :(
• Challenges: Python/Ruby, Cautious Customer
• Many "infrastructure" modules such as HP
ILO, IPMI, EMC (Hello Razor ...)
8 years old\nparent is Logica, Grandparent is Aldiscon\n150 people\n\nHuge range of projects and customers\n\nTypical engagement: knotty, bespoke, complex, mission critical ... NDA \n
Building a Product for a Customer, not for us\n\nPuppet solves one of the problems that we are trying to solve\n
Continuous integration. PuppetLint of course. Automated deployment into a remote lab is ... challenging! Tens of systems deployed several times each day\n\nStretch metaphor: specify desired state, ability to check state, correcting change is within our control. Sometimes all we should do is report and pause\n\n\n\n
Continuous integration. PuppetLint of course. Automated deployment into a remote lab is ... challenging! Tens of systems deployed several times each day\n\nStretch metaphor: specify desired state, ability to check state, correcting change is within our control. Sometimes all we should do is report and pause\n\n\n\n
Continuous integration. PuppetLint of course. Automated deployment into a remote lab is ... challenging! Tens of systems deployed several times each day\n\nStretch metaphor: specify desired state, ability to check state, correcting change is within our control. Sometimes all we should do is report and pause\n\n\n\n
Good old OO principle, High Cohesion Low Coupling\n\nOO principles are A Good Thing\n\nWhile writing a puppet module, the first requirement is that the platform installs the relevant packages for the module. Generally the next requirement is to set up configuration before the services can be started.\nWhen a class is self contained, the user does not need to concern themselves with the exact package, file or service names. A class can be required as a whole.\n\n\n
\n\n
\n\n
Intra node dependencies\nAnyone got a good recipe?\n\nRobustness\nPuppetMaster should never ever fail due to dodgy manifests\n\nAvailability\nDon't restart services except during a maintenance window thankyou\n\n\n\n