SlideShare uma empresa Scribd logo
1 de 163
higher-order puppet

PuppetDB
deepak@puppetlabs.com
@grim_radical
Let’s talk about...
puppet generates
lots of data
persistent data long term
data ephemeral data mach
local data meticulously str
aapuppet generates data fr
d lots of data free form da
human readable data mach
data resource data depend
data ssl certificate data ho
resources
file { “/tmp/foo”:
  content => “This is a test”
}
{"exported": false,
 "file": "/puppet/site.pp",
 "line": 1,
 "parameters": {
     "content": "This is a test"
 },
 "tags": [
     "file",
     "node",
     “default”
 ],
 "title": "/tmp/foo",
 "type": "File"}
File “/tmp/foo/bar”
   User “deepak”
   Dir “/tmp/foo”
     Dir “/tmp”
Dir “/tmp”    User “deepak”

      Dir “/tmp/foo”


   File “/tmp/foo/bar”
Dir “/tmp”    User “deepak”

      Dir “/tmp/foo”


   File “/tmp/foo/bar”
catalogs
resource

catalog
resource

       catalog

cow

herd
resource

       catalog

cow               crow

herd              murder
resource

        catalog

cow    superhero   crow

herd   avengers    murder
Group[peadmin]




                                                                                                                                                                                                                                                                 User[peadmin]




                                                                                                    Pe_accounts::User[peadmin]                                                                                                   File[/var/lib/peadmin]                                                              Pe_accounts::Home_dir[/var/lib/peadmin]




                 Exec[mcollective-client-cert]             File[/var/lib/peadmin/.mcollective.d]                                  File[/var/lib/peadmin/.mcollective]           File[/var/lib/peadmin/.bashrc.custom]             File[/var/lib/peadmin/.vim]                    File[/var/lib/peadmin/.bashrc]           File[/var/lib/peadmin/.ssh]           File[/var/lib/peadmin/.bash_profile]




peadmin/.mcollective.d/peadmin-private.pem]      File[/var/lib/peadmin/.mcollective.d/peadmin-public.pem]               File[puppet-dashboard-public.pem]               File[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem]                                                                                    File[/var/lib/peadmin/.ssh/authorized_keys]                                          File[/opt/puppet/sha




                                                                                                   Relationships
Group[peadmin]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Group[puppet-dashboard]                                                                                             Class[Pe_accounts::Data]




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          User[peadmin]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 User[puppet-dashboard]




                                                                                                                                                                                                                                                                                                File[/opt/puppet/libexec/mcollective/mcollective/agent]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           File[/opt/puppet/libexec/mcollective/mcollective/security]                                                                 Exec[mcollective-server-cert]             File[/etc/puppetlabs/mcollective/ssl]                                                                                                                                                                                                                                 Pe_accounts::User[peadmin]                                                                                                   File[/var/lib/peadmin]                                                              Pe_accounts::Home_dir[/var/lib/peadmin]                                                                                                                                                                                                                                               Pe_accounts::User[puppet-dashboard]                                                                                                                          File[/opt/puppet/share/puppet-dashboard]                                                                      Pe_accounts::Home_dir[/opt/puppet/share/puppet-dashboard]




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     File[/opt/puppet/libexec/mcollective/mcollective/util]                   File[/opt/puppet/libexec/mcollective/mcollective/application/package.rb]                                                                       File[/opt/puppet/libexec/mcollective/mcollective/registration]                          File[/opt/puppet/libexec/mcollective/mcollective/application/puppetd.rb]                                                                                File[mcollective-cert.pem]                File[mcollective-private.pem]                        File[mcollective-public.pem]                                   File[/etc/puppetlabs/mcollective/ssl/clients]                                                  Exec[mcollective-client-cert]             File[/var/lib/peadmin/.mcollective.d]                                  File[/var/lib/peadmin/.mcollective]           File[/var/lib/peadmin/.bashrc.custom]             File[/var/lib/peadmin/.vim]                    File[/var/lib/peadmin/.bashrc]           File[/var/lib/peadmin/.ssh]           File[/var/lib/peadmin/.bash_profile]                                                                    Exec[puppet-dashboard-client-cert]                                       File[/opt/puppet/share/puppet-dashboard/.mcollective.d]                                         File[/opt/puppet/share/puppet-dashboard/.mcollective]        File[/opt/puppet/share/puppet-dashboard/.bashrc.custom]      File[/opt/puppet/share/puppet-dashboard/.bashrc]             File[/opt/puppet/share/puppet-dashboard/.bash_profile]               File[/opt/puppet/share/puppet-dashboard/.vim]           File[/opt/puppet/share/puppet-dashbo




/mcollective/mcollective/agent/puppetral.rb]   File[/etc/puppetlabs/mcollective/server.cfg]   File[/opt/puppet/libexec/mcollective/mcollective/agent/package.ddl]   File[/opt/puppet/libexec/mcollective/mcollective/agent/service.ddl]   File[/opt/puppet/libexec/mcollective/mcollective/agent/service.rb]                               File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetd.rb]   File[/opt/puppet/libexec/mcollective/mcollective/agent/package.rb]   File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetd.ddl]   File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetral.ddl]                                File[/opt/puppet/libexec/mcollective/mcollective/util/actionpolicy.rb]                                      File[/opt/puppet/libexec/mcollective/mcollective/application/service.rb]                                File[/opt/puppet/libexec/mcollective/mcollective/registration/meta.rb]                               File[/opt/puppet/libexec/mcollective/mcollective/security/aespe_security.rb]   File[/opt/puppet/libexec/mcollective/mcollective/security/sshkey.rb]                                                               File[/etc/puppetlabs/mcollective/ssl/clients/mcollective-public.pem]                  File[peadmin-public.pem]   File[/var/lib/peadmin/.mcollective.d/peadmin-private.pem]     File[/var/lib/peadmin/.mcollective.d/peadmin-public.pem]               File[puppet-dashboard-public.pem]               File[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem]                                                                                    File[/var/lib/peadmin/.ssh/authorized_keys]                                          File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-cert.pem]                     File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-public.pem]                       File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-private.pem]                                                                                                                                                                                                                                                  File[/opt/puppet/share/puppet-dashboard/.ssh/




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Service[mcollective]




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Relationships
Group[peadmin]




                                                                                       User[peadmin]




                                                       File[/var/lib/peadmin]




      File[/var/lib/peadmin/.bashrc.custom]             File[/var/lib/peadmin/.vim]                    File[/var/lib/peadmin/.bashrc]




le[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem]
Catalog:

    all the things we
  manage on a node,
 and how they relate
        to each other
facts
> facter
netmask_lo: 255.0.0.0             kernel: Linux
 augeasversion: 0.10.0             kernelrelease: 2.6.32-5-686
 fqdn: pe-debian6.localdomain      ipaddress: 172.16.245.128
 manufacturer: "VMware, Inc."      processor0: Intel(R) Core(TM)
 processorcount: "1"             i7-2635QM CPU @ 2.00GHz
 productname: VMware Virtual       lsbdistrelease: 6.0.2
Platform                           uniqueid: 007f0101
 physicalprocessorcount: 1         hardwaremodel: i686
 facterversion: 1.6.7              kernelversion: 2.6.32
 boardproductname: 440BX           operatingsystem: Debian
Desktop Reference Platform         architecture: i386
 kernelmajversion: "2.6"           lsbdistdescription: Debian GNU/
 hardwareisa: unknown            Linux 6.0.2 (squeeze)
 timezone: PDT                     lsbmajdistrelease: "6"
 puppetversion: 2.7.12 (Puppet     interfaces: "eth0,lo"
Enterprise 2.5.1)                  ipaddress_lo: 127.0.0.1
 lsbdistcodename: squeeze          uptime_days: 0
 is_virtual: "true"                lsbdistid: Debian
 operatingsystemrelease: 6.0.2     rubysitedir: /opt/puppet/lib/
 virtual: vmware                 site_ruby/1.8
 type: Other                       rubyversion: 1.8.7
 domain: localdomain               osfamily: Debian
 hostname: pe-debian6              memorytotal: &id001 502.57 MB
 selinux: "false"                  memorysize: *id001
Catalogs:
what we tell puppet
about a node

Facts:
what a node tells
puppet about itself
It’s about who controls
the information.
“There's a war out there,
old friend. A world war.
And it's not about who's
got the most bullets.
It’s about who controls
the information.




                              -- Sneakers (1992)
What we see and hear,
how we work, what we
think... it's all about the
information!”
every resource
 every parameter
every relationship
       every class
        every fact
   for every node
Query this data, for
use in scripts or
other tools
Integration with
other tools is great,
but can we feed that
data back into
puppet itself?
storeconfigs
Configure a node
using resources
from other nodes
class ssh {

    @@sshkey { $hostname:
      type => dsa,
      key => $sshdsakey
    }

    Sshkey <<| |>>

}
Every host exports
its public key, and
imports the public
keys of every other
node, automatically!
How about
monitoring?
class nagios_target {

    @@nagios_host { $fqdn:
      ensure => present,
      alias => $hostname,
      address => $ipaddress,
      use => "generic-host",
    }

  @@nagios_service { "check_ping_${hostname}":
     check_command => "check_ping!100.0,20%!
500.0,60%",
     use => "generic-service",
     host_name => "$fqdn",
     notification_period => "24x7",
     service_description => "${hostname}_check_ping"
  }

}
class nagios-monitor {

    # collect resources and
    # populate /etc/nagios/nagios_*.cfg
    Nagios_host <<||>>
    Nagios_service <<||>>

}
Thus, you can
automatically create
checks for things
you’re managing
key distribution
      monitoring
  clustered services
master/slave replication
    load balancers
  shared filesystems
     firewall rules
           ...
Higher-order
   Puppet
Using Puppet’s
knowledge to
improve Puppet’s
knowledge
Using Puppet’s
knowledge to
improve Puppet’s
knowledge
      Achievement unlocked
            YO DAWG
Using Puppet’s
knowledge to
improve Puppet’s
knowledge
Data is great!
Reading from the Puppet Data Library
            Nick Lewis
     3:50P @ Meeting Room 2
Why aren’t we doing
stuff like this all the
    damn time?
V    UME
    OL
Every node,
on every puppet run,
generates data
We have customers
generating over
750GB of data a day!
even storing a small subset of
that much information adds up...
(a brief simulation)
When data storage is
slow, the whole
system slows down
and it makes baby Deepak cry! :(
API
issues
Current APIs are
limited!
Hard to get at the data, and
performance concerns discourage
use
We demand:

 Store as much data as we can!
     Much better queryability!

Oh yeah, but:

  Don’t slow down the system!
  Don’t compromise reliability!
PuppetDB
PuppetDB
     Definitely Better!
Fast storage
of catalogs & facts
          like, *way* faster!
Compatible
with storeconfigs and
inventory service
     you don’t have to change
           your Puppet code!
HTTP APIs
for resource, fact, and
node retrieval
          plenty of data, just
               a “curl” away!
Secured
using SSL client and
server certificates
the same certificate infrastructure
            you’re already using!
science
     &
secret alien
technology
Exporting
resources
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



          DB        Workers



         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
         F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
                      F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers
                      F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



            DB    Workers
        F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



            DB    Workers
        F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
Resource
collection
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



          DB        Workers



         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
         F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F                 ?
PuppetDB Server        DLO



          DB        Workers



         HTTP           MQ
           ?            F




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
           ?            F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
                        F


         HTTP           MQ
           ?




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
                                                 ?
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
                                        ?
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



          DB        Workers
           F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



             DB     Workers
         F


         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
Failure
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



          DB        Workers



         HTTP           MQ




Agent                                Master
                             Facts    Catalo   Resrc
  F                                     g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
         F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
                      F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
                            F
PuppetDB Server        DLO



        DB        Workers
                      F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
                      F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers
                      F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
                      F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers
                      F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers



        HTTP          MQ
                      F




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO



        DB        Workers
                      F


        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
PuppetDB Server        DLO
                             F


        DB        Workers



        HTTP          MQ




Agent                              Master
                           Facts    Catalo   Resrc
                                      g
Deployment
PuppetDB Server        DLO



    DB        Workers



   HTTP           MQ
PuppetDB Server
  Workers    DLO
                        DB


   HTTP            MQ
PuppetDB Server
          Workers    DLO
HTTP                            DB
Proxy
(SSL)
           HTTP            MQ
(another demo)
Reliability!
We work very hard to
persist everything we
accept
Acknowledgements with UUIDS,
Checksums,
Queueing,
Automatic retry,
Automatic reconnect,
     and the Dead Letter Office if all else fails!
APIs!
Anything Puppet
does with PuppetDB,
you can do, too
         we don’t cheat!
Query your own resources,
Upload new fact sets,
Create catalogs,
Inspect facts,

          all open and documented!
#> curl
   -H "Accept: application/json"
   "http://puppetdb/metrics/mbean/
   com.puppetlabs.puppetdb.command:type=global,name=processing-time"


{
    "50thPercentile": 209.05,
    "75thPercentile": 236.5865,
    "95thPercentile": 428.3065999999959,
    "98thPercentile": 750.53696,
    "999thPercentile": 1246.722744999993,
    "99thPercentile": 818.9180600000001,
    "Count": 3322,
    "EventType": "calls",
    "FifteenMinuteRate": 1.1500295609205015e-06,
    "FiveMinuteRate": 1.387569444096042e-18,
    "LatencyUnit": "MILLISECONDS",
    "Max": 26514.032,
    "Mean": 314.1111032510536,
    "MeanRate": 0.21577717049577358,
    "Min": 185.53,
    "OneMinuteRate": 3.390107448865515e-90,
    "RateUnit": "SECONDS",
    "StdDev": 833.6079354075728
}
#> curl
   -H "Accept: application/json"
   "http://puppetdb/metrics/mbean/
   com.puppetlabs.puppetdb.command:type=global,name=processing-time"


{
    "50thPercentile": 209.05,
    "75thPercentile": 236.5865,
    "95thPercentile": 428.3065999999959,
    "98thPercentile": 750.53696,
    "999thPercentile": 1246.722744999993,
    "99thPercentile": 818.9180600000001,
    "Count": 3322,
    "EventType": "calls",
    "FifteenMinuteRate": 1.1500295609205015e-06,
    "FiveMinuteRate": 1.387569444096042e-18,
    "LatencyUnit": "MILLISECONDS",
    "Max": 26514.032,
    "Mean": 314.1111032510536,
    "MeanRate": 0.21577717049577358,
    "Min": 185.53,
    "OneMinuteRate": 3.390107448865515e-90,
                      Achievement unlocked
    "RateUnit": "SECONDS",
    "StdDev": 833.6079354075728
}
                         WALL OF TEXT
#> curl
   -H "Accept: application/json"
   "http://puppetdb/metrics/mbean/
   com.puppetlabs.puppetdb.command:type=global,name=processing-time"


{
    "50thPercentile": 209.05,
    "75thPercentile": 236.5865,
    "95thPercentile": 428.3065999999959,
    "98thPercentile": 750.53696,
    "999thPercentile": 1246.722744999993,
    "99thPercentile": 818.9180600000001,
    "Count": 3322,
    "EventType": "calls",
    "FifteenMinuteRate": 1.1500295609205015e-06,
    "FiveMinuteRate": 1.387569444096042e-18,
    "LatencyUnit": "MILLISECONDS",
    "Max": 26514.032,
    "Mean": 314.1111032510536,
    "MeanRate": 0.21577717049577358,
    "Min": 185.53,
    "OneMinuteRate": 3.390107448865515e-90,
    "RateUnit": "SECONDS",
    "StdDev": 833.6079354075728
}
curl
   -H "Accept: application/json"
"http://puppetdb/facts/host.my.net"
curl
    -H "Accept: application/json"
"http://puppetdb/resources?query=..."
https://github.com/dalen/
puppet-puppetdbquery
Transparent!
Ships with a real-time dashboard,
Dozens of metrics and gauges,
Correlate-able logs,
Easy to monitor

 we care about operational visibility!
https://github.com/
jasonhancock/nagios-puppetdb
Speedy!
We’ve seen huge reductions in compile times,
  resource collection times, time to persist
           catalogs and facts, etc.


                  O_o
ONE DOES NOT SIMPLY




  SPEED UP PUPPET
Notable details
Posit:
Hosts are not entirely
 unique snowflakes
Therefore:
  A resource often
exists across multiple
         hosts
Feature:
 Single-instance
resource storage
Resource dedupe
Compute unique hashes for resources

We quickly hash all the resources in a catalog,
and use bulk operations to compare them to
hashes stored.
Resource dedupe
Significant speed improvement!

Internal to Puppet Labs, we see ~83% resource
duplication; this number is consistent with what
we’ve seen in most customer environments.
Posit:
Puppet runs frequently,
 but catalogs change
     infrequently
Therefore:
We’ll often receive the
 same catalog for a
          host
Feature:
Single-instance
catalog storage
Catalog dedupe
Compute unique hashes for catalogs

Puppet Labs sees ~88% catalog duplication, rest
of the planet sees even bigger numbers

Big savings!
Posit:
You have more than one
core, though storeconfigs
   is single-threaded
Therefore:
Throughput is not
   maximized
Feature:
Massively parallel
   operation
Parallel
We can pat our heads and rub our tummies at
the same time

Database operations don’t block MQ operations
don’t block HTTP operations don’t block hash
computation operations don’t block metric
calculations don’t block...

Dozens of threads, zero locks
So anyways,
Documented at
http://
docs.puppetlabs.com
/puppetdb
   install, config, upkeep, specs,
                       the works!
Packaged
as deb and rpm for
both open source and
Puppet Enterprise
   available in the Puppet Labs
           package repositories
Puppetized
using the
puppetlabs/puppetdb
module
       available now, on the
              Module Forge!
> puppet module install 
puppetlabs/puppetdb
> vim site.pp
node puppetmaster {
  include puppetdb
  include puppetdb::master::config
}
Open source

http://github.com/
puppetlabs/puppetdb
  same license as Puppet itself!
Production ready!
Many production
deployments
Small shops with a dozen hosts,
large shops with thousands of
hosts, intercontinental
deployments...

   over a billion resources served!
Coming soon!
Report storage
Historical data
Grand Unified Query
  and of course, keep it fast!
Use it!

   and send us more
dashboard screenshots! :)
deepak
giridharagopal
deepak@puppetlabs.com
@grim_radical [github twitter freenode]
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7        5       3

    11       8

2        9       10
7           5                 3

    11               8

2           9
      Achievement unlocked
     Let’s get TOPOLOGICAL!   10
7        5       3

    11       8

2        9       10

Mais conteúdo relacionado

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

Destaque

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Destaque (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

PuppetDB: Higher-order Puppet

  • 1.
  • 5.
  • 7. persistent data long term data ephemeral data mach local data meticulously str aapuppet generates data fr d lots of data free form da human readable data mach data resource data depend data ssl certificate data ho
  • 9. file { “/tmp/foo”: content => “This is a test” }
  • 10. {"exported": false, "file": "/puppet/site.pp", "line": 1, "parameters": { "content": "This is a test" }, "tags": [ "file", "node", “default” ], "title": "/tmp/foo", "type": "File"}
  • 11. File “/tmp/foo/bar” User “deepak” Dir “/tmp/foo” Dir “/tmp”
  • 12. Dir “/tmp” User “deepak” Dir “/tmp/foo” File “/tmp/foo/bar”
  • 13. Dir “/tmp” User “deepak” Dir “/tmp/foo” File “/tmp/foo/bar”
  • 16. resource catalog cow herd
  • 17. resource catalog cow crow herd murder
  • 18. resource catalog cow superhero crow herd avengers murder
  • 19. Group[peadmin] User[peadmin] Pe_accounts::User[peadmin] File[/var/lib/peadmin] Pe_accounts::Home_dir[/var/lib/peadmin] Exec[mcollective-client-cert] File[/var/lib/peadmin/.mcollective.d] File[/var/lib/peadmin/.mcollective] File[/var/lib/peadmin/.bashrc.custom] File[/var/lib/peadmin/.vim] File[/var/lib/peadmin/.bashrc] File[/var/lib/peadmin/.ssh] File[/var/lib/peadmin/.bash_profile] peadmin/.mcollective.d/peadmin-private.pem] File[/var/lib/peadmin/.mcollective.d/peadmin-public.pem] File[puppet-dashboard-public.pem] File[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem] File[/var/lib/peadmin/.ssh/authorized_keys] File[/opt/puppet/sha Relationships
  • 20. Group[peadmin] Group[puppet-dashboard] Class[Pe_accounts::Data] User[peadmin] User[puppet-dashboard] File[/opt/puppet/libexec/mcollective/mcollective/agent] File[/opt/puppet/libexec/mcollective/mcollective/security] Exec[mcollective-server-cert] File[/etc/puppetlabs/mcollective/ssl] Pe_accounts::User[peadmin] File[/var/lib/peadmin] Pe_accounts::Home_dir[/var/lib/peadmin] Pe_accounts::User[puppet-dashboard] File[/opt/puppet/share/puppet-dashboard] Pe_accounts::Home_dir[/opt/puppet/share/puppet-dashboard] File[/opt/puppet/libexec/mcollective/mcollective/util] File[/opt/puppet/libexec/mcollective/mcollective/application/package.rb] File[/opt/puppet/libexec/mcollective/mcollective/registration] File[/opt/puppet/libexec/mcollective/mcollective/application/puppetd.rb] File[mcollective-cert.pem] File[mcollective-private.pem] File[mcollective-public.pem] File[/etc/puppetlabs/mcollective/ssl/clients] Exec[mcollective-client-cert] File[/var/lib/peadmin/.mcollective.d] File[/var/lib/peadmin/.mcollective] File[/var/lib/peadmin/.bashrc.custom] File[/var/lib/peadmin/.vim] File[/var/lib/peadmin/.bashrc] File[/var/lib/peadmin/.ssh] File[/var/lib/peadmin/.bash_profile] Exec[puppet-dashboard-client-cert] File[/opt/puppet/share/puppet-dashboard/.mcollective.d] File[/opt/puppet/share/puppet-dashboard/.mcollective] File[/opt/puppet/share/puppet-dashboard/.bashrc.custom] File[/opt/puppet/share/puppet-dashboard/.bashrc] File[/opt/puppet/share/puppet-dashboard/.bash_profile] File[/opt/puppet/share/puppet-dashboard/.vim] File[/opt/puppet/share/puppet-dashbo /mcollective/mcollective/agent/puppetral.rb] File[/etc/puppetlabs/mcollective/server.cfg] File[/opt/puppet/libexec/mcollective/mcollective/agent/package.ddl] File[/opt/puppet/libexec/mcollective/mcollective/agent/service.ddl] File[/opt/puppet/libexec/mcollective/mcollective/agent/service.rb] File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetd.rb] File[/opt/puppet/libexec/mcollective/mcollective/agent/package.rb] File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetd.ddl] File[/opt/puppet/libexec/mcollective/mcollective/agent/puppetral.ddl] File[/opt/puppet/libexec/mcollective/mcollective/util/actionpolicy.rb] File[/opt/puppet/libexec/mcollective/mcollective/application/service.rb] File[/opt/puppet/libexec/mcollective/mcollective/registration/meta.rb] File[/opt/puppet/libexec/mcollective/mcollective/security/aespe_security.rb] File[/opt/puppet/libexec/mcollective/mcollective/security/sshkey.rb] File[/etc/puppetlabs/mcollective/ssl/clients/mcollective-public.pem] File[peadmin-public.pem] File[/var/lib/peadmin/.mcollective.d/peadmin-private.pem] File[/var/lib/peadmin/.mcollective.d/peadmin-public.pem] File[puppet-dashboard-public.pem] File[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem] File[/var/lib/peadmin/.ssh/authorized_keys] File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-cert.pem] File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-public.pem] File[/opt/puppet/share/puppet-dashboard/.mcollective.d/puppet-dashboard-private.pem] File[/opt/puppet/share/puppet-dashboard/.ssh/ Service[mcollective] Relationships
  • 21. Group[peadmin] User[peadmin] File[/var/lib/peadmin] File[/var/lib/peadmin/.bashrc.custom] File[/var/lib/peadmin/.vim] File[/var/lib/peadmin/.bashrc] le[/var/lib/peadmin/.mcollective.d/peadmin-cert.pem]
  • 22. Catalog: all the things we manage on a node, and how they relate to each other
  • 23. facts
  • 25. netmask_lo: 255.0.0.0 kernel: Linux augeasversion: 0.10.0 kernelrelease: 2.6.32-5-686 fqdn: pe-debian6.localdomain ipaddress: 172.16.245.128 manufacturer: "VMware, Inc." processor0: Intel(R) Core(TM) processorcount: "1" i7-2635QM CPU @ 2.00GHz productname: VMware Virtual lsbdistrelease: 6.0.2 Platform uniqueid: 007f0101 physicalprocessorcount: 1 hardwaremodel: i686 facterversion: 1.6.7 kernelversion: 2.6.32 boardproductname: 440BX operatingsystem: Debian Desktop Reference Platform architecture: i386 kernelmajversion: "2.6" lsbdistdescription: Debian GNU/ hardwareisa: unknown Linux 6.0.2 (squeeze) timezone: PDT lsbmajdistrelease: "6" puppetversion: 2.7.12 (Puppet interfaces: "eth0,lo" Enterprise 2.5.1) ipaddress_lo: 127.0.0.1 lsbdistcodename: squeeze uptime_days: 0 is_virtual: "true" lsbdistid: Debian operatingsystemrelease: 6.0.2 rubysitedir: /opt/puppet/lib/ virtual: vmware site_ruby/1.8 type: Other rubyversion: 1.8.7 domain: localdomain osfamily: Debian hostname: pe-debian6 memorytotal: &id001 502.57 MB selinux: "false" memorysize: *id001
  • 26. Catalogs: what we tell puppet about a node Facts: what a node tells puppet about itself
  • 27. It’s about who controls the information.
  • 28. “There's a war out there, old friend. A world war. And it's not about who's got the most bullets. It’s about who controls the information. -- Sneakers (1992) What we see and hear, how we work, what we think... it's all about the information!”
  • 29. every resource every parameter every relationship every class every fact for every node
  • 30. Query this data, for use in scripts or other tools
  • 31. Integration with other tools is great, but can we feed that data back into puppet itself?
  • 33. Configure a node using resources from other nodes
  • 34. class ssh { @@sshkey { $hostname: type => dsa, key => $sshdsakey } Sshkey <<| |>> }
  • 35. Every host exports its public key, and imports the public keys of every other node, automatically!
  • 37. class nagios_target { @@nagios_host { $fqdn: ensure => present, alias => $hostname, address => $ipaddress, use => "generic-host", } @@nagios_service { "check_ping_${hostname}": check_command => "check_ping!100.0,20%! 500.0,60%", use => "generic-service", host_name => "$fqdn", notification_period => "24x7", service_description => "${hostname}_check_ping" } }
  • 38. class nagios-monitor { # collect resources and # populate /etc/nagios/nagios_*.cfg Nagios_host <<||>> Nagios_service <<||>> }
  • 39. Thus, you can automatically create checks for things you’re managing
  • 40. key distribution monitoring clustered services master/slave replication load balancers shared filesystems firewall rules ...
  • 41. Higher-order Puppet
  • 43. Using Puppet’s knowledge to improve Puppet’s knowledge Achievement unlocked YO DAWG
  • 46. Reading from the Puppet Data Library Nick Lewis 3:50P @ Meeting Room 2
  • 47. Why aren’t we doing stuff like this all the damn time?
  • 48. V UME OL
  • 49. Every node, on every puppet run, generates data
  • 50. We have customers generating over 750GB of data a day! even storing a small subset of that much information adds up...
  • 52. When data storage is slow, the whole system slows down and it makes baby Deepak cry! :(
  • 54. Current APIs are limited! Hard to get at the data, and performance concerns discourage use
  • 55. We demand: Store as much data as we can! Much better queryability! Oh yeah, but: Don’t slow down the system! Don’t compromise reliability!
  • 57. PuppetDB Definitely Better!
  • 58. Fast storage of catalogs & facts like, *way* faster!
  • 59. Compatible with storeconfigs and inventory service you don’t have to change your Puppet code!
  • 60. HTTP APIs for resource, fact, and node retrieval plenty of data, just a “curl” away!
  • 61. Secured using SSL client and server certificates the same certificate infrastructure you’re already using!
  • 62. science & secret alien technology
  • 64. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g
  • 65. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc F g
  • 66. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g F
  • 67. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g F
  • 68. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g F
  • 69. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 70. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 71. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 73. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g
  • 74. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc F g
  • 75. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g F
  • 76. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g F ?
  • 77. PuppetDB Server DLO DB Workers HTTP MQ ? F Agent Master Facts Catalo Resrc F g
  • 78. PuppetDB Server DLO DB Workers ? F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 79. PuppetDB Server DLO DB Workers F HTTP MQ ? Agent Master Facts Catalo Resrc F g
  • 80. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g ?
  • 81. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g ?
  • 82. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 83. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 84. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 85. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 86. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc F g
  • 88. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g
  • 89. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc F g
  • 90. PuppetDB Server DLO DB Workers HTTP MQ Agent Master Facts Catalo Resrc g F
  • 91. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g F
  • 92. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g F
  • 93. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 94. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g
  • 95. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 96. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g
  • 97. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 98. PuppetDB Server DLO DB Workers HTTP MQ F Agent Master Facts Catalo Resrc g
  • 99. PuppetDB Server DLO DB Workers F HTTP MQ Agent Master Facts Catalo Resrc g
  • 100. PuppetDB Server DLO F DB Workers HTTP MQ Agent Master Facts Catalo Resrc g
  • 102. PuppetDB Server DLO DB Workers HTTP MQ
  • 103. PuppetDB Server Workers DLO DB HTTP MQ
  • 104. PuppetDB Server Workers DLO HTTP DB Proxy (SSL) HTTP MQ
  • 107. We work very hard to persist everything we accept
  • 108. Acknowledgements with UUIDS, Checksums, Queueing, Automatic retry, Automatic reconnect, and the Dead Letter Office if all else fails!
  • 109. APIs!
  • 110. Anything Puppet does with PuppetDB, you can do, too we don’t cheat!
  • 111. Query your own resources, Upload new fact sets, Create catalogs, Inspect facts, all open and documented!
  • 112. #> curl -H "Accept: application/json" "http://puppetdb/metrics/mbean/ com.puppetlabs.puppetdb.command:type=global,name=processing-time" { "50thPercentile": 209.05, "75thPercentile": 236.5865, "95thPercentile": 428.3065999999959, "98thPercentile": 750.53696, "999thPercentile": 1246.722744999993, "99thPercentile": 818.9180600000001, "Count": 3322, "EventType": "calls", "FifteenMinuteRate": 1.1500295609205015e-06, "FiveMinuteRate": 1.387569444096042e-18, "LatencyUnit": "MILLISECONDS", "Max": 26514.032, "Mean": 314.1111032510536, "MeanRate": 0.21577717049577358, "Min": 185.53, "OneMinuteRate": 3.390107448865515e-90, "RateUnit": "SECONDS", "StdDev": 833.6079354075728 }
  • 113. #> curl -H "Accept: application/json" "http://puppetdb/metrics/mbean/ com.puppetlabs.puppetdb.command:type=global,name=processing-time" { "50thPercentile": 209.05, "75thPercentile": 236.5865, "95thPercentile": 428.3065999999959, "98thPercentile": 750.53696, "999thPercentile": 1246.722744999993, "99thPercentile": 818.9180600000001, "Count": 3322, "EventType": "calls", "FifteenMinuteRate": 1.1500295609205015e-06, "FiveMinuteRate": 1.387569444096042e-18, "LatencyUnit": "MILLISECONDS", "Max": 26514.032, "Mean": 314.1111032510536, "MeanRate": 0.21577717049577358, "Min": 185.53, "OneMinuteRate": 3.390107448865515e-90, Achievement unlocked "RateUnit": "SECONDS", "StdDev": 833.6079354075728 } WALL OF TEXT
  • 114. #> curl -H "Accept: application/json" "http://puppetdb/metrics/mbean/ com.puppetlabs.puppetdb.command:type=global,name=processing-time" { "50thPercentile": 209.05, "75thPercentile": 236.5865, "95thPercentile": 428.3065999999959, "98thPercentile": 750.53696, "999thPercentile": 1246.722744999993, "99thPercentile": 818.9180600000001, "Count": 3322, "EventType": "calls", "FifteenMinuteRate": 1.1500295609205015e-06, "FiveMinuteRate": 1.387569444096042e-18, "LatencyUnit": "MILLISECONDS", "Max": 26514.032, "Mean": 314.1111032510536, "MeanRate": 0.21577717049577358, "Min": 185.53, "OneMinuteRate": 3.390107448865515e-90, "RateUnit": "SECONDS", "StdDev": 833.6079354075728 }
  • 115. curl -H "Accept: application/json" "http://puppetdb/facts/host.my.net"
  • 116. curl -H "Accept: application/json" "http://puppetdb/resources?query=..."
  • 119. Ships with a real-time dashboard, Dozens of metrics and gauges, Correlate-able logs, Easy to monitor we care about operational visibility!
  • 122. We’ve seen huge reductions in compile times, resource collection times, time to persist catalogs and facts, etc. O_o
  • 123. ONE DOES NOT SIMPLY SPEED UP PUPPET
  • 125. Posit: Hosts are not entirely unique snowflakes
  • 126. Therefore: A resource often exists across multiple hosts
  • 128. Resource dedupe Compute unique hashes for resources We quickly hash all the resources in a catalog, and use bulk operations to compare them to hashes stored.
  • 129. Resource dedupe Significant speed improvement! Internal to Puppet Labs, we see ~83% resource duplication; this number is consistent with what we’ve seen in most customer environments.
  • 130. Posit: Puppet runs frequently, but catalogs change infrequently
  • 131. Therefore: We’ll often receive the same catalog for a host
  • 133. Catalog dedupe Compute unique hashes for catalogs Puppet Labs sees ~88% catalog duplication, rest of the planet sees even bigger numbers Big savings!
  • 134. Posit: You have more than one core, though storeconfigs is single-threaded
  • 137. Parallel We can pat our heads and rub our tummies at the same time Database operations don’t block MQ operations don’t block HTTP operations don’t block hash computation operations don’t block metric calculations don’t block... Dozens of threads, zero locks
  • 138.
  • 140. Documented at http:// docs.puppetlabs.com /puppetdb install, config, upkeep, specs, the works!
  • 141. Packaged as deb and rpm for both open source and Puppet Enterprise available in the Puppet Labs package repositories
  • 142. Puppetized using the puppetlabs/puppetdb module available now, on the Module Forge!
  • 143. > puppet module install puppetlabs/puppetdb > vim site.pp node puppetmaster { include puppetdb include puppetdb::master::config }
  • 144. Open source http://github.com/ puppetlabs/puppetdb same license as Puppet itself!
  • 146. Many production deployments Small shops with a dozen hosts, large shops with thousands of hosts, intercontinental deployments... over a billion resources served!
  • 147.
  • 148.
  • 150. Report storage Historical data Grand Unified Query and of course, keep it fast!
  • 151. Use it! and send us more dashboard screenshots! :)
  • 153. 7 5 3 11 8 2 9 10
  • 154. 7 5 3 11 8 2 9 10
  • 155. 7 5 3 11 8 2 9 10
  • 156. 7 5 3 11 8 2 9 10
  • 157. 7 5 3 11 8 2 9 10
  • 158. 7 5 3 11 8 2 9 10
  • 159. 7 5 3 11 8 2 9 10
  • 160. 7 5 3 11 8 2 9 10
  • 161. 7 5 3 11 8 2 9 10
  • 162. 7 5 3 11 8 2 9 Achievement unlocked Let’s get TOPOLOGICAL! 10
  • 163. 7 5 3 11 8 2 9 10

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. Not just in terms of volume, but also many different kinds of data\n
  7. persistent, ephemeral, free form, machine readable, that&amp;#x2019;s a lot of stuff to sift through!\n\nso where to start?\n
  8. \n
  9. this is a resource, pictured as what you&amp;#x2019;d type\n
  10. this is the same resource, only post-compilation. way more useful stuff in here!\n
  11. so most of the time, you&amp;#x2019;ll have more than one resource at play on a node.\nBut you don&amp;#x2019;t want them just applied randomly; order is important!\n
  12. You want the things at the top to happen first.\nInternally, Puppet represents this as a directed-graph we call...\n
  13. \n
  14. a collection of resources and their relationships is a catalog\n
  15. a collection of resources and their relationships is a catalog\n
  16. a collection of resources and their relationships is a catalog\n
  17. This is the catalog for a fresh install of Puppet Enterprise\nNot too different from the one I showed earlier, just with more resources and relationships.\nBut this is actually a bit of a lie, because the _entire_ catalog...\n
  18. Hard to see, but we can zoom in on a tiny area\n
  19. So, same stuff you&amp;#x2019;re used to: users, groups, files, etc.\nTrying to make sense of this manually is insane, but that&amp;#x2019;s where Puppet comes in!\nInfrastructure is messy, but puppet untangles that web.\n
  20. But that&amp;#x2019;s only one half of the story\n
  21. \n
  22. \n
  23. and if that doesn&amp;#x2019;t cut it, you can always make your own\n
  24. So, catalogs and facts are great, by why is having access to that stuff important?\n\n
  25. Information is powerful!\n\nAs operators, our decisions are only as good as the information upon which they&amp;#x2019;re based. Tools are no different; they&amp;#x2019;re only as smart as the input data.\n
  26. Information is powerful!\n\nAs operators, our decisions are only as good as the information upon which they&amp;#x2019;re based. Tools are no different; they&amp;#x2019;re only as smart as the input data.\n
  27. Information is powerful!\n\nAs operators, our decisions are only as good as the information upon which they&amp;#x2019;re based. Tools are no different; they&amp;#x2019;re only as smart as the input data.\n
  28. So what can you do when you&amp;#x2019;ve got all this juicy data sitting around?\n
  29. Integration with monitoring systems, inventory databases, provisioning systems, auto-remediation code, ad-hoc activity\n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. And it&amp;#x2019;s not just for things like key distribution and monitoring,\n
  39. ...this is a generic pattern that can be applied to all manner of situations.\n\nAnything where you need information from one node to configure another\n
  40. Utilizing your data in this way catapults you into the world of Higher-order puppet.\nBy which, I mean...\n
  41. Delightfully meta, don&amp;#x2019;t you think? &lt;advance&gt;\n\nDoubles-down on your automation, making it even more powerful.\n
  42. Delightfully meta, don&amp;#x2019;t you think? &lt;advance&gt;\n\nDoubles-down on your automation, making it even more powerful.\n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n...but it&amp;#x2019;s not just a question of scalability...\n
  51. \n
  52. ...and therein lies the problem\n
  53. \n
  54. A lot of people ask me what the DB stands for &lt;advance&gt;\n
  55. I&amp;#x2019;ll talk more about how we make that happen in a bit\n
  56. We&amp;#x2019;ve tested this on our own code, running Puppet Labs\n
  57. \n
  58. ...and it&amp;#x2019;s all built using...\n
  59. So let&amp;#x2019;s talk about how it works, at a high-level.\n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. So earlier, I mentioned that we need PuppetDB to be reliable, queryable, and fast\n
  103. \n
  104. \n
  105. In fact, let&amp;#x2019;s try an experiment...\n
  106. \n
  107. \n
  108. for example...\n
  109. &lt;explain what&amp;#x2019;s going on&gt;\n\nWow, that&amp;#x2019;s a big wall of text, isn&amp;#x2019;t it? &lt;advance&gt; But hopefully it illustrates how much instrumentation we&amp;#x2019;ve put in.\n
  110. &lt;explain what&amp;#x2019;s going on&gt;\n\nWow, that&amp;#x2019;s a big wall of text, isn&amp;#x2019;t it? &lt;advance&gt; But hopefully it illustrates how much instrumentation we&amp;#x2019;ve put in.\n
  111. \n
  112. Query language is documented and pretty versatile.\nSuper-set of resource-collection features (like complex boolean operators).\n...and this is why people have written libraries for use with puppet.\n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. How did we accomplish such a thing?\n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. And we run it ourselves at Puppet Labs!\n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n