SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Puppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software delivery
Shipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet code
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
Belgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User Group
March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015
$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
• Open-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.eu
• Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011
• Speaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at Puppetcamps
• Member of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUG
• Puppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributor
• Puppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributor
• @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github
inuits.eu
Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015
• VVVVVVVVVVVVVVVVVirtualization
• CCCCCCCCCCCCCCCCContainers
• CCCCCCCCCCCCCCCCCloud
• SSSSSSSSSSSSSSSSStateless software
• SSSSSSSSSSSSSSSSScalable daemons
Distributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing Software
• Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)
• TarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarball
• Self-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarball
• curl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bash
• Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?
• Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)
Real WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal World
Licensed under a Creative Commons Attribution 2.0 License
https://www.flickr.com/photos/kwarz/13293732384/
Welcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my world
• CCCCCCCCCCCCCCCCComplex SW
• SSSSSSSSSSSSSSSSSelf-hosting
• SSSSSSSSSSSSSSSSStateless software
• SSSSSSSSSSSSSSSSScalable daemons
Software distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distribution
• SSSSSSSSSSSSSSSSSoftware (Source code or binaries)
• UUUUUUUUUUUUUUUUUser guide
• IIIIIIIIIIIIIIIIInstallation guide
• PPPPPPPPPPPPPPPPPeople who install the software
Challenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distribution
• AAAAAAAAAAAAAAAAArtifacts
• SSSSSSSSSSSSSSSSSecurity
• HHHHHHHHHHHHHHHHHW requirements
• SSSSSSSSSSSSSSSSSW requirements
• UUUUUUUUUUUUUUUUUpgrades
• MMMMMMMMMMMMMMMMMaintenance
• MMMMMMMMMMMMMMMMMonitoring
IntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroductionIntroduction
Artifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: Packaging
• Consistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file lists
• Dependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolving
• RepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositories
• GPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-Signing
• Lots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of tools
• VersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioning
• Unique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible build
• CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)
DependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependencies
• Use packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages also
• Version your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositories
• Test your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependencies
• Distribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packages
• Mirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream repos
• Limit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependencies
AutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomation
• AAAAAAAAAAAAAAAAAutomate all the things
• OOOOOOOOOOOOOOOOOS, Monitoring, Application
• RRRRRRRRRRRRRRRRReproducable builds
• RRRRRRRRRRRRRRRRRepositories management
Cultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changes
• NNNNNNNNNNNNNNNNNo more manual work
• UUUUUUUUUUUUUUUUUse an appropriate toolchain
• MMMMMMMMMMMMMMMMManual action = Error prone
• WWWWWWWWWWWWWWWWWhat did I change 3 years ago?
DocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentationDocumentation
• NNNNNNNNNNNNNNNNNo more complex install guides
• PPPPPPPPPPPPPPPPPuppet training
• VVVVVVVVVVVVVVVVValid for several products
Licensed under a Creative Commons Attribution 2.0 License
https://www.flickr.com/photos/jimmcd/4859841581
PuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppet
• WWWWWWWWWWWWWWWWWidely used Automation tool
• VVVVVVVVVVVVVVVVVery mature
• CCCCCCCCCCCCCCCCClient/Server mode
• SSSSSSSSSSSSSSSSStandalone mode
• DDDDDDDDDDDDDDDDDeclarative
• SSSSSSSSSSSSSSSSScales
What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?
Application
Reverse Proxy / Databases
Monitoring
Operation System
Platform
To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?
You have to be able to chose which
part you will setup with Puppet.
Use Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modules
Use separate meta-modules for OS,
Dependencies, Monitoring,
Application… And include them only
of needed.
Yes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noop
• IIIIIIIIIIIIIIIIInclude or not each class
• YYYYYYYYYYYYYYYYYou can put a whole class in no-op
• include myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_os
• class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}
Puppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet Modules
External modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modules
• PPPPPPPPPPPPPPPPPick the best ones
• PPPPPPPPPPPPPPPPPuppetlabs modules
• UUUUUUUUUUUUUUUUUpstream modules
• MMMMMMMMMMMMMMMMModules active on Github
• FFFFFFFFFFFFFFFFForge rating
• TTTTTTTTTTTTTTTTTesting, doc
• MMMMMMMMMMMMMMMMModules that fit your usecase
Review the modules you plan to include. You
do not want bad code in your app, why
would you want it in the code that deploys
your app?
Contribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute back
• GGGGGGGGGGGGGGGGGet feedback (peer review)
• EEEEEEEEEEEEEEEEEasier to maintain in long term
• FFFFFFFFFFFFFFFFForces you to write tests
• HHHHHHHHHHHHHHHHHelp other people
• PPPPPPPPPPPPPPPPPuppet is not your core business
Your modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modules
• EEEEEEEEEEEEEEEEEveryone has write access
• FFFFFFFFFFFFFFFFFollow code standards (puppet-lint)
• BBBBBBBBBBBBBBBBBe future-proof
• SSSSSSSSSSSSSSSSSeparation between code and data
Your puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet tree
• YYYYYYYYYYYYYYYYYour tree is next to your app code
• SSSSSSSSSSSSSSSSSubmodules of your app
• GGGGGGGGGGGGGGGGGets the same version number
• PPPPPPPPPPPPPPPPParameters matches your apps parameters
Distribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your tree
• PPPPPPPPPPPPPPPPPackage the whole tree in a package
• UUUUUUUUUUUUUUUUUse package dependencies to pull puppet
• MMMMMMMMMMMMMMMMMaybe add a helper script for the first run
• YYYYYYYYYYYYYYYYYour tree is next to your app code
• SSSSSSSSSSSSSSSSSubmodules of your app
• GGGGGGGGGGGGGGGGGets the same version number
• CCCCCCCCCCCCCCCCContains the right parameters
Puppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterless
• PPPPPPPPPPPPPPPPPuppet has 2 modes
• PPPPPPPPPPPPPPPPPull your catalog
• AAAAAAAAAAAAAAAAApply it from files
• BBBBBBBBBBBBBBBBBoth have advantages
• DDDDDDDDDDDDDDDDDepends on what you want
Masterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless mode
• OOOOOOOOOOOOOOOOOne-time run
• NNNNNNNNNNNNNNNNNo daemon running
• NNNNNNNNNNNNNNNNNo need for a Puppet master
• NNNNNNNNNNNNNNNNNo exported resources
• NNNNNNNNNNNNNNNNNo PuppetDB
Agent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent mode
• RRRRRRRRRRRRRRRRRun every X time (to be tuned)
• CCCCCCCCCCCCCCCCConsitency check
• RRRRRRRRRRRRRRRRRequires one master
• PPPPPPPPPPPPPPPPPuppet daemon running (as root)
• RRRRRRRRRRRRRRRRReports sent to the master
PuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDB
• RRRRRRRRRRRRRRRRRequires a master
• SSSSSSSSSSSSSSSSStores facts and reports
• EEEEEEEEEEEEEEEEEasy to query
• DDDDDDDDDDDDDDDDDashboards available
• EEEEEEEEEEEEEEEEExported resources
HieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHiera
• DDDDDDDDDDDDDDDDData separation
• YYYYYYYYYYYYYYYYYou classes should have a stable API
• YYYYYYYYYYYYYYYYYour main class dispatches to other
modules
• UUUUUUUUUUUUUUUUUse functions:
▶ cccccccccccccccccreate_resource
▶ mmmmmmmmmmmmmmmmmysql_deepmerge
Automatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter Lookup
• class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"
• AAAAAAAAAAAAAAAAAvailable in Puppet 3+
• SSSSSSSSSSSSSSSSShould be avoided (obscurification)
• NNNNNNNNNNNNNNNNNice to have for edge cases
SecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecurity
• PPPPPPPPPPPPPPPPPuppet agent runs as root
• TTTTTTTTTTTTTTTTThe master runs as "puppet" user
• IIIIIIIIIIIIIIIIIsolated on a separated host
• PPPPPPPPPPPPPPPPPuppetDB/Server only listens to Loopback
• PPPPPPPPPPPPPPPPPut a reverse proxy (even for server)
Security - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/Server
• DDDDDDDDDDDDDDDDDo not use autosign
• YYYYYYYYYYYYYYYYYou can rely on external CA
• IIIIIIIIIIIIIIIIIsolate the service from the application
• QQQQQQQQQQQQQQQQQuery PuppetDB from your monitoring tool
Pre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing Puppet
Pre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing Puppet
• TTTTTTTTTTTTTTTTThere might be a puppet setup
• WWWWWWWWWWWWWWWWWork in a separated environment
• PPPPPPPPPPPPPPPPPuppet hieradata in a subdirectory
• PPPPPPPPPPPPPPPPPrefix your custom functions
• BBBBBBBBBBBBBBBBBe careful with exported resources
RuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntimeRuntime
Deploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet tree
• IIIIIIIIIIIIIIIIInstall your puppet tree package
• IIIIIIIIIIIIIIIIInstall the hiera files (versioned?)
• OOOOOOOOOOOOOOOOOne puppet apply to deploy a basic server
• TTTTTTTTTTTTTTTTThen the first agent run to deploy PuppetDB
and the rest
• TTTTTTTTTTTTTTTTThere is no puppetlabs-puppet module
ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion
Shipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet code
• EEEEEEEEEEEEEEEEEveryone gets benefits
• FFFFFFFFFFFFFFFFFrom devs to QA to customers
• NNNNNNNNNNNNNNNNNeed to review how you release
• NNNNNNNNNNNNNNNNNeed to review how you deploy your OS
• PPPPPPPPPPPPPPPPPuppet code is part of your app
AdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantages
• SSSSSSSSSSSSSSSSSetup your app easily (internally and
externally)
• GGGGGGGGGGGGGGGGGet consistent deployments at several
customer
• PPPPPPPPPPPPPPPPPredict what will be deployed
• GGGGGGGGGGGGGGGGGet a clear view of the infrastructure
• SSSSSSSSSSSSSSSSSay bye bye to long procedures
There is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is work
• BBBBBBBBBBBBBBBBBig cultural changes
▶ RRRRRRRRRRRRRRRRRoot access?
▶ TTTTTTTTTTTTTTTTThe shell script works…
▶ IIIIIIIIIIIIIIIII can't do X anymore…
• PPPPPPPPPPPPPPPPPurge old artifacts on updates
• DDDDDDDDDDDDDDDDDeal with your data
• KKKKKKKKKKKKKKKKKeep that infra up to date
Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!
• MMMMMMMMMMMMMMMMMonitoring
• BBBBBBBBBBBBBBBBBest practices enforcement
• RRRRRRRRRRRRRRRRRepositories management
• BBBBBBBBBBBBBBBBBring your own tools
Thank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank you
Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?
ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
julien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eu
@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie
inuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuits
https://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.eu
info@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.eu
+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636

Weitere ähnliche Inhalte

Was ist angesagt?

Managing a R&D Lab with Foreman
Managing a R&D Lab with ForemanManaging a R&D Lab with Foreman
Managing a R&D Lab with ForemanJulien Pivotto
 
Getting the maximum out of systemd
Getting the maximum out of systemdGetting the maximum out of systemd
Getting the maximum out of systemdJulien Pivotto
 
A call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityJulien Pivotto
 
systemd and configuration management
systemd and configuration managementsystemd and configuration management
systemd and configuration managementJulien Pivotto
 
Enhance OpenSSH for fun and security
Enhance OpenSSH for fun and securityEnhance OpenSSH for fun and security
Enhance OpenSSH for fun and securityJulien Pivotto
 
Monitoring at Cloud Scale
Monitoring at Cloud ScaleMonitoring at Cloud Scale
Monitoring at Cloud ScaleJulien Pivotto
 
We Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese ShopWe Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese ShopTzu-ping Chung
 
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...NETWAYS
 
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Rachel Evans
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUKiwamu Okabe
 
Hands-on VeriFast with STM32 microcontroller
Hands-on VeriFast with STM32 microcontrollerHands-on VeriFast with STM32 microcontroller
Hands-on VeriFast with STM32 microcontrollerKiwamu Okabe
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATSKiwamu Okabe
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformKiwamu Okabe
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUKiwamu Okabe
 
Adventures in Accidental Human Architecture
Adventures in Accidental Human ArchitectureAdventures in Accidental Human Architecture
Adventures in Accidental Human ArchitectureMichelle Brush
 
Start! ATS programming
Start! ATS programmingStart! ATS programming
Start! ATS programmingKiwamu Okabe
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUKiwamu Okabe
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq usersKiwamu Okabe
 

Was ist angesagt? (20)

Managing a R&D Lab with Foreman
Managing a R&D Lab with ForemanManaging a R&D Lab with Foreman
Managing a R&D Lab with Foreman
 
Getting the maximum out of systemd
Getting the maximum out of systemdGetting the maximum out of systemd
Getting the maximum out of systemd
 
A call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the community
 
DNSSec
DNSSecDNSSec
DNSSec
 
Coworking with git
Coworking with gitCoworking with git
Coworking with git
 
systemd and configuration management
systemd and configuration managementsystemd and configuration management
systemd and configuration management
 
Enhance OpenSSH for fun and security
Enhance OpenSSH for fun and securityEnhance OpenSSH for fun and security
Enhance OpenSSH for fun and security
 
Monitoring at Cloud Scale
Monitoring at Cloud ScaleMonitoring at Cloud Scale
Monitoring at Cloud Scale
 
We Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese ShopWe Buy Cheese in a Cheese Shop
We Buy Cheese in a Cheese Shop
 
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
OSDC 2016 - Automating a R&D lab with Foreman: What can be hard? by Julien Pi...
 
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
Destruction, Decapods and Doughnuts: Continuous Delivery for Audio & Video Fa...
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
 
Hands-on VeriFast with STM32 microcontroller
Hands-on VeriFast with STM32 microcontrollerHands-on VeriFast with STM32 microcontroller
Hands-on VeriFast with STM32 microcontroller
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATS
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and Platform
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCU
 
Adventures in Accidental Human Architecture
Adventures in Accidental Human ArchitectureAdventures in Accidental Human Architecture
Adventures in Accidental Human Architecture
 
Start! ATS programming
Start! ATS programmingStart! ATS programming
Start! ATS programming
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCU
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 

Ähnlich wie Puppet and Software Delivery with Puppet Code

Dont bid on this question if you are not a python expert!!!!!!!!!!!!
Dont bid on this question if you are not a python expert!!!!!!!!!!!!Dont bid on this question if you are not a python expert!!!!!!!!!!!!
Dont bid on this question if you are not a python expert!!!!!!!!!!!!joney4
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?Kris Buytaert
 
Migrating to Puppet 5
Migrating to Puppet 5Migrating to Puppet 5
Migrating to Puppet 5Kris Buytaert
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet codeJulien Pivotto
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with PuppetKris Buytaert
 
Its not about the tooling
Its not about the toolingIts not about the tooling
Its not about the toolingBram Vogelaar
 
Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Kris Buytaert
 
Continous Delivery of your Infrastructure
Continous Delivery of your InfrastructureContinous Delivery of your Infrastructure
Continous Delivery of your InfrastructureKris Buytaert
 
Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Kris Buytaert
 
Code is so much more...
Code is so much more...Code is so much more...
Code is so much more...Praveen Puglia
 
Let's bring the teams back together
Let's bring the teams back togetherLet's bring the teams back together
Let's bring the teams back togetherKris Buytaert
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
 
ELK Presentation Final V1
ELK Presentation Final V1ELK Presentation Final V1
ELK Presentation Final V1Jon Hammant
 
DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats Outlyer
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the toolingBram Vogelaar
 

Ähnlich wie Puppet and Software Delivery with Puppet Code (20)

Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
Python environments
Python environmentsPython environments
Python environments
 
respect-estimates.pdf
respect-estimates.pdfrespect-estimates.pdf
respect-estimates.pdf
 
Devops -- LKFR14
Devops -- LKFR14Devops -- LKFR14
Devops -- LKFR14
 
Dont bid on this question if you are not a python expert!!!!!!!!!!!!
Dont bid on this question if you are not a python expert!!!!!!!!!!!!Dont bid on this question if you are not a python expert!!!!!!!!!!!!
Dont bid on this question if you are not a python expert!!!!!!!!!!!!
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?
 
Migrating to Puppet 5
Migrating to Puppet 5Migrating to Puppet 5
Migrating to Puppet 5
 
Testing your puppet code
Testing your puppet codeTesting your puppet code
Testing your puppet code
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
Its not about the tooling
Its not about the toolingIts not about the tooling
Its not about the tooling
 
Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.
 
Continous Delivery of your Infrastructure
Continous Delivery of your InfrastructureContinous Delivery of your Infrastructure
Continous Delivery of your Infrastructure
 
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGISSFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
SFScon 2020 - Matteo Ghetta - DataPlotly - D3-like plots in QGIS
 
Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?
 
Code is so much more...
Code is so much more...Code is so much more...
Code is so much more...
 
Let's bring the teams back together
Let's bring the teams back togetherLet's bring the teams back together
Let's bring the teams back together
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
ELK Presentation Final V1
ELK Presentation Final V1ELK Presentation Final V1
ELK Presentation Final V1
 
DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats DOXLON November 2016 - ELK Stack and Beats
DOXLON November 2016 - ELK Stack and Beats
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the tooling
 

Mehr von Julien Pivotto

What's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemJulien Pivotto
 
Prometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingJulien Pivotto
 
What's new in Prometheus?
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?Julien Pivotto
 
Introduction to Grafana Loki
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana LokiJulien Pivotto
 
Why you should revisit mgmt
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmtJulien Pivotto
 
Observing the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusJulien Pivotto
 
Monitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusJulien Pivotto
 
5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service DiscoveryJulien Pivotto
 
Prometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionJulien Pivotto
 
Powerful graphs in Grafana
Powerful graphs in GrafanaPowerful graphs in Grafana
Powerful graphs in GrafanaJulien Pivotto
 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress ControllerJulien Pivotto
 
Improved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerJulien Pivotto
 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with KeycloakJulien Pivotto
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaborationJulien Pivotto
 
Incident Resolution as Code
Incident Resolution as CodeIncident Resolution as Code
Incident Resolution as CodeJulien Pivotto
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusJulien Pivotto
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusJulien Pivotto
 
An introduction to Ansible
An introduction to AnsibleAn introduction to Ansible
An introduction to AnsibleJulien Pivotto
 

Mehr von Julien Pivotto (20)

The O11y Toolkit
The O11y ToolkitThe O11y Toolkit
The O11y Toolkit
 
What's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its Ecosystem
 
Prometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is coming
 
What's new in Prometheus?
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?
 
Introduction to Grafana Loki
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana Loki
 
Why you should revisit mgmt
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmt
 
Observing the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From Prometheus
 
Monitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with Prometheus
 
5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery
 
Prometheus and TLS - an Introduction
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an Introduction
 
Powerful graphs in Grafana
Powerful graphs in GrafanaPowerful graphs in Grafana
Powerful graphs in Grafana
 
YAML Magic
YAML MagicYAML Magic
YAML Magic
 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
 
Improved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and Alertmanager
 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
 
Incident Resolution as Code
Incident Resolution as CodeIncident Resolution as Code
Incident Resolution as Code
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
 
Monitor your CentOS stack with Prometheus
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
 
An introduction to Ansible
An introduction to AnsibleAn introduction to Ansible
An introduction to Ansible
 

Kürzlich hochgeladen

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Puppet and Software Delivery with Puppet Code

  • 1. Puppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software deliveryPuppet and Software delivery Shipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet codeShipping your product with Puppet code Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto Belgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User Group March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015March 17, 2015
  • 2. $::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto • Open-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.eu • Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011 • Speaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at Puppetcamps • Member of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUG • Puppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributor • Puppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributor • @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github
  • 4. Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015Welcome in 2015 • VVVVVVVVVVVVVVVVVirtualization • CCCCCCCCCCCCCCCCContainers • CCCCCCCCCCCCCCCCCloud • SSSSSSSSSSSSSSSSStateless software • SSSSSSSSSSSSSSSSScalable daemons
  • 5. Distributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing Software • Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM) • TarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarball • Self-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarball • curl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bash • Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside? • Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)
  • 6. Real WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal WorldReal World Licensed under a Creative Commons Attribution 2.0 License https://www.flickr.com/photos/kwarz/13293732384/
  • 7. Welcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my worldWelcome in my world • CCCCCCCCCCCCCCCCComplex SW • SSSSSSSSSSSSSSSSSelf-hosting • SSSSSSSSSSSSSSSSStateless software • SSSSSSSSSSSSSSSSScalable daemons
  • 8. Software distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distributionSoftware distribution • SSSSSSSSSSSSSSSSSoftware (Source code or binaries) • UUUUUUUUUUUUUUUUUser guide • IIIIIIIIIIIIIIIIInstallation guide • PPPPPPPPPPPPPPPPPeople who install the software
  • 9. Challenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distributionChallenges of SW distribution • AAAAAAAAAAAAAAAAArtifacts • SSSSSSSSSSSSSSSSSecurity • HHHHHHHHHHHHHHHHHW requirements • SSSSSSSSSSSSSSSSSW requirements • UUUUUUUUUUUUUUUUUpgrades • MMMMMMMMMMMMMMMMMaintenance • MMMMMMMMMMMMMMMMMonitoring
  • 11. Artifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: PackagingArtifacts: Packaging • Consistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file lists • Dependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolving • RepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositories • GPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-Signing • Lots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of tools • VersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioning • Unique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible build • CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)
  • 12. DependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependencies • Use packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages alsoUse packages also • Version your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositoriesVersion your repositories • Test your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependenciesTest your dependencies • Distribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packagesDistribution, Upstream packages • Mirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream reposMirror and cherry pick from upstream repos • Limit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependenciesLimit the number of dependencies
  • 13. AutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomationAutomation • AAAAAAAAAAAAAAAAAutomate all the things • OOOOOOOOOOOOOOOOOS, Monitoring, Application • RRRRRRRRRRRRRRRRReproducable builds • RRRRRRRRRRRRRRRRRepositories management
  • 14. Cultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changesCultural changes • NNNNNNNNNNNNNNNNNo more manual work • UUUUUUUUUUUUUUUUUse an appropriate toolchain • MMMMMMMMMMMMMMMMManual action = Error prone • WWWWWWWWWWWWWWWWWhat did I change 3 years ago?
  • 16. Licensed under a Creative Commons Attribution 2.0 License https://www.flickr.com/photos/jimmcd/4859841581
  • 17. PuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppetPuppet • WWWWWWWWWWWWWWWWWidely used Automation tool • VVVVVVVVVVVVVVVVVery mature • CCCCCCCCCCCCCCCCClient/Server mode • SSSSSSSSSSSSSSSSStandalone mode • DDDDDDDDDDDDDDDDDeclarative • SSSSSSSSSSSSSSSSScales
  • 18. What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate?What to automate? Application Reverse Proxy / Databases Monitoring Operation System Platform
  • 19. To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not?To manage or not? You have to be able to chose which part you will setup with Puppet.
  • 20. Use Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modulesUse Puppet modules Use separate meta-modules for OS, Dependencies, Monitoring, Application… And include them only of needed.
  • 21. Yes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noopYes, no or noop • IIIIIIIIIIIIIIIIInclude or not each class • YYYYYYYYYYYYYYYYYou can put a whole class in no-op • include myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_osinclude myapp_os • class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}class {'myapp_os': noop => true,}
  • 22. Puppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet ModulesPuppet Modules
  • 23. External modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modulesExternal modules • PPPPPPPPPPPPPPPPPick the best ones • PPPPPPPPPPPPPPPPPuppetlabs modules • UUUUUUUUUUUUUUUUUpstream modules • MMMMMMMMMMMMMMMMModules active on Github • FFFFFFFFFFFFFFFFForge rating • TTTTTTTTTTTTTTTTTesting, doc • MMMMMMMMMMMMMMMMModules that fit your usecase
  • 24. Review the modules you plan to include. You do not want bad code in your app, why would you want it in the code that deploys your app?
  • 25. Contribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute backContribute back • GGGGGGGGGGGGGGGGGet feedback (peer review) • EEEEEEEEEEEEEEEEEasier to maintain in long term • FFFFFFFFFFFFFFFFForces you to write tests • HHHHHHHHHHHHHHHHHelp other people • PPPPPPPPPPPPPPPPPuppet is not your core business
  • 26. Your modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modulesYour modules • EEEEEEEEEEEEEEEEEveryone has write access • FFFFFFFFFFFFFFFFFollow code standards (puppet-lint) • BBBBBBBBBBBBBBBBBe future-proof • SSSSSSSSSSSSSSSSSeparation between code and data
  • 27. Your puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet treeYour puppet tree • YYYYYYYYYYYYYYYYYour tree is next to your app code • SSSSSSSSSSSSSSSSSubmodules of your app • GGGGGGGGGGGGGGGGGets the same version number • PPPPPPPPPPPPPPPPParameters matches your apps parameters
  • 28. Distribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your treeDistribute your tree • PPPPPPPPPPPPPPPPPackage the whole tree in a package • UUUUUUUUUUUUUUUUUse package dependencies to pull puppet • MMMMMMMMMMMMMMMMMaybe add a helper script for the first run
  • 29. • YYYYYYYYYYYYYYYYYour tree is next to your app code • SSSSSSSSSSSSSSSSSubmodules of your app • GGGGGGGGGGGGGGGGGets the same version number • CCCCCCCCCCCCCCCCContains the right parameters
  • 30. Puppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterlessPuppet Agent or masterless • PPPPPPPPPPPPPPPPPuppet has 2 modes • PPPPPPPPPPPPPPPPPull your catalog • AAAAAAAAAAAAAAAAApply it from files • BBBBBBBBBBBBBBBBBoth have advantages • DDDDDDDDDDDDDDDDDepends on what you want
  • 31. Masterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless modeMasterless mode • OOOOOOOOOOOOOOOOOne-time run • NNNNNNNNNNNNNNNNNo daemon running • NNNNNNNNNNNNNNNNNo need for a Puppet master • NNNNNNNNNNNNNNNNNo exported resources • NNNNNNNNNNNNNNNNNo PuppetDB
  • 32. Agent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent modeAgent mode • RRRRRRRRRRRRRRRRRun every X time (to be tuned) • CCCCCCCCCCCCCCCCConsitency check • RRRRRRRRRRRRRRRRRequires one master • PPPPPPPPPPPPPPPPPuppet daemon running (as root) • RRRRRRRRRRRRRRRRReports sent to the master
  • 33. PuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDBPuppetDB • RRRRRRRRRRRRRRRRRequires a master • SSSSSSSSSSSSSSSSStores facts and reports • EEEEEEEEEEEEEEEEEasy to query • DDDDDDDDDDDDDDDDDashboards available • EEEEEEEEEEEEEEEEExported resources
  • 34. HieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHieraHiera • DDDDDDDDDDDDDDDDData separation • YYYYYYYYYYYYYYYYYou classes should have a stable API • YYYYYYYYYYYYYYYYYour main class dispatches to other modules • UUUUUUUUUUUUUUUUUse functions: ▶ cccccccccccccccccreate_resource ▶ mmmmmmmmmmmmmmmmmysql_deepmerge
  • 35. Automatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter LookupAutomatic Parameter Lookup • class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar"class::param: "foobar" • AAAAAAAAAAAAAAAAAvailable in Puppet 3+ • SSSSSSSSSSSSSSSSShould be avoided (obscurification) • NNNNNNNNNNNNNNNNNice to have for edge cases
  • 36. SecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecurity • PPPPPPPPPPPPPPPPPuppet agent runs as root • TTTTTTTTTTTTTTTTThe master runs as "puppet" user • IIIIIIIIIIIIIIIIIsolated on a separated host • PPPPPPPPPPPPPPPPPuppetDB/Server only listens to Loopback • PPPPPPPPPPPPPPPPPut a reverse proxy (even for server)
  • 37. Security - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/ServerSecurity - Master/Server • DDDDDDDDDDDDDDDDDo not use autosign • YYYYYYYYYYYYYYYYYou can rely on external CA • IIIIIIIIIIIIIIIIIsolate the service from the application • QQQQQQQQQQQQQQQQQuery PuppetDB from your monitoring tool
  • 38. Pre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing Puppet
  • 39. Pre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing PuppetPre Existing Puppet • TTTTTTTTTTTTTTTTThere might be a puppet setup • WWWWWWWWWWWWWWWWWork in a separated environment • PPPPPPPPPPPPPPPPPuppet hieradata in a subdirectory • PPPPPPPPPPPPPPPPPrefix your custom functions • BBBBBBBBBBBBBBBBBe careful with exported resources
  • 41. Deploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet treeDeploy your Puppet tree • IIIIIIIIIIIIIIIIInstall your puppet tree package • IIIIIIIIIIIIIIIIInstall the hiera files (versioned?) • OOOOOOOOOOOOOOOOOne puppet apply to deploy a basic server • TTTTTTTTTTTTTTTTThen the first agent run to deploy PuppetDB and the rest • TTTTTTTTTTTTTTTTThere is no puppetlabs-puppet module
  • 43. Shipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet codeShipping with puppet code • EEEEEEEEEEEEEEEEEveryone gets benefits • FFFFFFFFFFFFFFFFFrom devs to QA to customers • NNNNNNNNNNNNNNNNNeed to review how you release • NNNNNNNNNNNNNNNNNeed to review how you deploy your OS • PPPPPPPPPPPPPPPPPuppet code is part of your app
  • 44. AdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantages • SSSSSSSSSSSSSSSSSetup your app easily (internally and externally) • GGGGGGGGGGGGGGGGGet consistent deployments at several customer • PPPPPPPPPPPPPPPPPredict what will be deployed • GGGGGGGGGGGGGGGGGet a clear view of the infrastructure • SSSSSSSSSSSSSSSSSay bye bye to long procedures
  • 45. There is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is workThere is work • BBBBBBBBBBBBBBBBBig cultural changes ▶ RRRRRRRRRRRRRRRRRoot access? ▶ TTTTTTTTTTTTTTTTThe shell script works… ▶ IIIIIIIIIIIIIIIII can't do X anymore… • PPPPPPPPPPPPPPPPPurge old artifacts on updates • DDDDDDDDDDDDDDDDDeal with your data • KKKKKKKKKKKKKKKKKeep that infra up to date
  • 46. Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box!Open the pandora box! • MMMMMMMMMMMMMMMMMonitoring • BBBBBBBBBBBBBBBBBest practices enforcement • RRRRRRRRRRRRRRRRRepositories management • BBBBBBBBBBBBBBBBBring your own tools
  • 47. Thank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank you Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?
  • 48. ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto julien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eu @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie inuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuits https://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.eu info@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.eu +32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636