SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
Building dynamic
networks with puppet
Thomas Uphill
thomas@narrabilis.com
latest slides
https://github.com/uphillian/puppetconf2013
latest code
http://goo.gl/nR9rti
Me
About this talk...
node1 node2 node3 node
production
node1 node2 node3 node
development
node3
goal
piggy
jim
kermit postfix
bind
func
postfix
bind
func
gonzo
Who is the
mailserver?
puppet
I know I know I
know, it’s kermit
Outline
● augeas
● exported resources
○ postfix
● custom facts
● concat
● firewall
● tags
○ dns
● questions
● references
● bonus
○ exported resources
■ firewall
■ exec
● func
augeas
● manipulate specific parts of a file
● files as objects
● type in puppet
By jmv
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Springdale Linux (2.6.32-358.6.2.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.6.2.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root
rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_jim/lv_root
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.6.2.el6.x86_64.img
title Springdale-PUIAS Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root
rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_jim/lv_root
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.el6.x86_64.img
augeas
http://augeas.net/tour.html
http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas
[user@host] $ augtool
augtool> set /files/etc/grub.conf/default 1
augtool> rm /files/etc/grub.conf/title[2]
rm : /files/etc/grub.conf/title[2] 18
augtool> save
Saved 1 file(s)
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Springdale Linux (2.6.32-358.6.2.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.6.2.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root
rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_jim/lv_root
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.6.2.el6.x86_64.img
title Springdale-PUIAS Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root rd_NO_LUKS
LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto rd_LVM_LV=vg_jim/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
rhgb quiet
initrd /initramfs-2.6.32-358.el6.x86_64.img
default=0
title Springdale-PUIAS Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root rd_NO_LUKS
LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto rd_LVM_LV=vg_jim/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
rhgb quiet
initrd /initramfs-2.6.32-358.el6.x86_64.img
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Springdale Linux (2.6.32-358.6.2.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.6.2.el6.x86_64 ro root=/dev/mapper/vg_jim-lv_root
rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_jim/lv_swap rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_jim/lv_root
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-358.6.2.el6.x86_64.img
exported resources
http://docs.puppetlabs.com/guides/exported_resources.html
http://docs.puppetlabs.com/puppet/2.7/reference/lang_exported.html
storeconfigs
resource
node
facts
@@resource
node
catalog
exported resources
● any class/type can be exported
● classic example ssh keys
class ssh {
@@sshkey { $hostname: type => dsa, key => $sshdsakey }
Sshkey <<| |>>
}
By Hryck
postfix
● only accepts mail from known clients
● cannot use entire ip range
● need it to update itself
● augeas
● exported_resources
postfix
access.conf
<ipaddress> OK
<ipaddress> RELAY
postfix
client
class postfix::client {
# this is a client of the master, set our config file to use the master
# add our name to the access list on the master
}
@@augeas {"access by $::hostname":
context => "/files/etc/postfix/access",
changes => [
"ins 0 after *[last()]",
"set 0/pattern $::ipaddress",
"set 0/action OK",
],
onlyif => "match *[ pattern = '$::ipaddress'] size == 0",
tag => 'postfix_access',
}
storeconfigs
augeas
postfux
master
class postfix::master {
exec { 'postfix rebuild access':
path => '/bin:/usr/bin',
command => '/usr/sbin/postmap /etc/postfix/access',
refreshonly => true,
}
}
Augeas <<| tag == 'postfix_access' |>> {
notify => Exec['postfix rebuild access']
}
storeconfigs
augeas
postfix
piggy
jim
kermit postfix::client
postfix::master
postfix::master
postfix::client
postfix::client
storeconfigs
augeas
augeas augeas
augeas
augeas
augeas
postfix
concat
https://github.com/ripienaar/puppet-concat
https://github.com/puppetlabs/puppetlabs-concat
concat
concat::fragment{"motd_local":
target => ‘/etc/motd’,
ensure => "/etc/motd.local",
order => 15
}
/etc/motd.local
The Number 6.
The Number 6.
motd_header
Message of the Day Brought to you by
Message of the Day Brought to you byconcat{ ’/etc/motd/’:
owner => root,
group => root,
mode => '0644',
}
concat::fragment{"motd_header":
target => ‘/etc/motd’,
content => "Message of the Day Brought to you byn",
order => 01,
}
/etc/motd
Message of the Day Brought to you
by
The Number 6.
http://docs.puppetlabs.com/guides/custom_facts.html
modules/four/lib/facter/four.rb
Facter.add("four") do
setcode do
2+2
end
end
[root@jim ~]# puppet agent -t --pluginsync
info: Loading facts in /var/lib/puppet/lib/facter/four.rb
[root@jim ~]# facter -p four
4
custom facts
http://www.thinkgeek.com/product/f31e/
firewall module
https://github.com/puppetlabs/puppetlabs-firewall
● handles iptables
● uses stages
● defines type firewall
class base::firewall {
resources { "firewall":
purge => true
}
Firewall {
before => Class['base::firewall::post'],
require => Class['base::firewall::pre'],
}
class { ['base::firewall::pre', 'base::firewall::post']: }
}
iptables
base::firewall::pre
base::firewall::post
anything else
firewall module
class base::firewall::pre {
Firewall {
require => undef,
}
firewall { '000 INPUT allow related and established':
proto => 'all',
action => accept,
state => ['RELATED', 'ESTABLISHED'],
}
firewall { '001 accept all icmp':
proto => 'icmp',
action => 'accept',
}
firewall { '002 accept all to lo interface':
proto => 'all',
iniface => 'lo',
action => 'accept',
}
firewall { '003 INPUT allow SSH':
action => accept,
proto => 'tcp',
dport => '22'
}
}
sensible defaults
firewall module
class base::firewall::post {
firewall { '998 reject all':
proto => 'all',
action => 'reject',
before => undef,
}
}
By partymonstrrrr
firewall module
why?
(assuming you are doing host based firewalls, never assume.)
● automatically add exceptions
● automatically allow inbound for services on this node
● automatically allow inbound from services on another node
tags
http://projects.puppetlabs.com/projects/1/wiki/Using_Tags
tags
file {'/some/file':
tag => 'needthislater'
} storeconfigs
needthislater
file
file
file {'/some/file': }
hiera
http://docs.puppetlabs.com/hiera/1/index.html
common
kernel
osfamily
RedHat
osfamily
SLES
osfamily
RedHat
net_zone
adt
net_zone
sbx
dns/resolv
jim
piggy
kermit
henson
zone
dns/resolv
/etc/resolv.conf
search henson
nameserver XXX.XXX.XXX.XXX
hiera
search
henson
dev.henson
prod.henson
PuppetDB
storeconfigs
concat
dns/resolv
● exported_resources
● custom_facts
● tags
● modules:
○ concat
○ firewall
● bind
○ /etc/named.conf
○ /var/named/zone.*
○ /var/named/reverse.*
● resolver
○ /etc/resolv.conf
● firewall
○ allow 53(domain) inbound
zone
production development
zone
● define custom fact based on ip address of
the node
# zone.rb
# Set a fact for the zone
require('ipaddr')
ip = IPAddr.new(Facter.value('ipaddress'))
# use CIDR for zones
zones = {
'prod' => IPAddr.new('192.168.120.0/23'),
'dev' => IPAddr.new('192.168.122.0/23'),
'sbx' => IPAddr.new('192.160.124.0/23'),
}
# default to undefined for now
zone = 'undef'
# loop through the zones, using ipaddr's built in include? function
# to see if the ipaddress is in the zone.
for z in zones.keys do
if zones[z].include?(ip)
zone = z
end
end
# return the net_zone to facter
Facter.add("zone") do
setcode do zone end
end
# zone.rb
# Set a fact for the zone
require('ipaddr')
ip = IPAddr.new(Facter.value('ipaddress'))
# use CIDR for zones
zones = {
'prod' => IPAddr.new('192.168.120.0/23'),
'dev' => IPAddr.new('192.168.122.0/23'),
'sbx' => IPAddr.new('192.160.124.0/23'),
}
# default to undefined for now
zone = 'undef'
# loop through the zones, using ipaddr's built in include? function
# to see if the ipaddress is in the zone.
for z in zones.keys do
if zones[z].include?(ip)
zone = z
end
end
# return the net_zone to facter
Facter.add("zone") do
setcode do zone end
end
cheezburger.com
zone
piggy
gonzo
ipaddress
192.168.122.26
zone.rb
zone
dev
ipaddress
192.168.120.45
zone
prod
168
zone
hiera.yaml
:hierarchy:
- zones/%{zone}
- environments/%{environment}
- global
zones/dev.yaml
---
dns::search: "dev.henson henson corp.henson"
zones/prod.yaml
---
dns::search: "corp.henson henson"
zone
cidr/reverse
require 'ipaddr'
require 'puppet/util/ipcidr'
def reverse(dev)
ip = IPAddr.new(Facter.value("network_#{dev}"))
nm = Puppet::Util::IPCidr.new(Facter.value("network_#{dev}")).mask(Facter.value("netmask_#
{dev}"))
cidr = nm.cidr
# set fact for network in reverse vvv.www.uuu.in-addr.arpa
Facter.add("reverse_#{dev}") do
setcode do ip.reverse.to_s[2..-1] end
end
# set fact for network in cidr notation
Facter.add("network_cidr_#{dev}") do
setcode do cidr end
end
end
# loop through the interfaces, defining the two facts for each
interfaces = Facter.value('interfaces').split(',')
interfaces.each do
|eth| reverse(eth)
end
network_cidr_ethX
reverse_ethX
piggy
gonzo
network_eth0
192.168.122.0
reverse.rb
reverse_eth0
122.168.192.in-addr.arpa
netmask_eth0
255.255.255.0
network_cidr_eth0
192.168.122.0/24 network_eth0
192.168.120.0
reverse_eth0
120.168.192.in-addr.arpa
netmask_eth0
255.255.254.0
network_cidr_eth0
192.168.120.0/23
named.conf
options {
listen-on port 53 { 127.0.0.1; <%= @ipaddress_eth0 -%>;};
…
allow-query { localhost; <%- interfaces.split(',').each do |eth| if has_variable?
("network_cidr_#{eth}") then -%><%= scope.lookupvar("network_cidr_#{eth}") -%>;<%- end end -%> };
…
};
zone "<%= @zone -%>.henson" IN {
type master;
file "zone.<%= @zone -%>.henson";
allow-update { none; };
};
zone "<%= @reverse_eth0 -%>" {
type master;
file "reverse.<%= @reverse_eth0 -%>";
};
network_cidr_eth0
192.168.120.0/23
reverse_eth0
120.168.192.in-addr.arpa
zone
prod
gonzo
ipaddress
192.168.120.45
zone
reverse
gonzo
$ORIGIN henson.
$TTL 1D
@ IN SOA root hostmaster (
2013060102 ; serial
8H ; refresh
4H ; retry
4W ; expire
1D ) ; minimum
NS jim
MX 10 jim
;
; just in case someone asks for localhost.henson
localhost A 127.0.0.1
; CNAMES
puppet CNAME jim
jim A 192.168.122.24
; exported resources below this point
gonzo A 192.168.120.45
jim A 192.168.122.24
piggy A 192.168.122.26
resolv.conf
gonzo
prod.yaml
search corp.henson henson
gonzo
nameserver 192.168.120.45
resolv.conf
named
dns/summary
● making a new nameserver is as simple as
assigning a role to a node
○ installs packages
○ configures firewall
○ updates resolv.conf for every node in that zone
● each new node that gets added to puppet
adds itself to the appropriate zone file
○ any changes cause a reload
big idea
● nothing is hard coded
● puppet defines the infrastructure
Alex
Andre
Bob
Chris
Jeff
Lando(n)
Nate
Shawn
Steven
Stuart
Thanks
Josko
Ben
Theresa
Questions
thank you
references/resources
tools
○ http://augeas.net/tour.html
○ http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas
○ https://github.com/puppetlabs/puppetlabs-firewall
○ https://github.com/puppetlabs/puppetlabs-concat
resources
○ http://docs.puppetlabs.com/guides/custom_facts.html
○ http://docs.puppetlabs.com/guides/exported_resources.html
○ http://docs.puppetlabs.com/puppet/2.7/reference/lang_exported.html
○ http://projects.puppetlabs.com/projects/1/wiki/Using_Tags
examples
○ https://github.com/uphillian/puppetconf2013/
○ https://fedorahosted.org/func/
bonus
func with
exported firewall and exec rules
func
https://fedorahosted.org/func/
● exported resources
● firewall
func
certmaster minion
51234
51235
minion.conf
[main]
certmaster = ?
minion.conf
[main]
minion_name = ?
sign
certificate
func
certmaster minion
51234
51235
minion.conf
[main]
certmaster = ?
minion.conf
[main]
minion_name = ?
sign
certificate
minion.conf
[main]
certmaster = jim
● hard code everything
● push configs with files
● manually sign
● autosign
func
class func1::minion {
package {'func': }
service {'funcd':
require => Package['func']'
}
file { '/etc/certmaster/minion.conf':
source => 'puppet:///func1/etc/certmaster/minion.conf'
mode => 644,
owner => 0,
group => 0
}
firewall {'51234 ACCEPT func from jim':
action => 'accept',
source => '192.168.122.24',
dport => 51234
}
}
/etc/certmaster/minion.conf
# configuration for minions
[main]
certmaster = jim
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
ipaddress of jim
func (exported resources)
certmaster
hostA
minion
hostB51234
51235
sign
certificate
for
hostB
● dynamically define roles
● push configs with templates
● export firewall rules
● export exec to sign
func (exported resources)
class func2::master {
@@firewall { "51234 ACCEPT func from funcmaster $::hostname":
action => 'accept',
source => "$::ipaddress",
dport => '51234',
tag => 'func_master',
}
Firewall <<| tag == 'certmaster_minion' |>>
# export the config file with our name to the minions
@@file {'/etc/certmaster/minion.conf':
mode => 644,
content => template('func2/etc/certmaster/minion.conf.erb'),
tag => 'func_master'
}
package { 'certmaster': }
service { 'certmaster': require => Package['certmaster'] }
}
/etc/certmaster/minion.conf.erb
# configuration for minions
[main]
certmaster = <%= @fqdn %>
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
func (exported resources)
class func2::minion {
#allow connections from the func master
Firewall <<| tag == 'func_master' |>>
#allow connections from us to the certmaster
@@firewall {"51235 ACCEPT certmaster from $::hostname":
action => 'accept',
source => "$::ipaddress",
dport => '51235',
tag => 'certmaster_minion',
}
package {'func': }
service {'funcd': require => Package['func'] }
File <<| tag == func_master |>>
}
/etc/certmaster/minion.conf.erb
# configuration for minions
[main]
certmaster = piggy
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
func (exported resources)
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.122.26 0.0.0.0/0 multiport dports 51234 /* 51234 ACCEPT func from funcmaster piggy */
ACCEPT tcp -- 192.168.122.27 0.0.0.0/0 multiport dports 51235 /* 51235 ACCEPT certmaster from gonzo */
ACCEPT tcp -- 192.168.122.24 0.0.0.0/0 multiport dports 51235 /* 51235 ACCEPT certmaster from jim */
ACCEPT tcp -- 192.168.122.25 0.0.0.0/0 multiport dports 51235 /* 51235 ACCEPT certmaster from kermit */
ACCEPT tcp -- 192.168.122.26 0.0.0.0/0 multiport dports 51235 /* 51235 ACCEPT certmaster from piggy */
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
class func2::master {
@@firewall { "51234 ACCEPT func from funcmaster $::hostname":
action => 'accept',
source => "$::ipaddress",
dport => '51234',
tag => 'func_master',
}
...
}
class func2::minion {
@@firewall {"51235 ACCEPT certmaster from $::hostname":
action => 'accept',
source => "$::ipaddress",
dport => '51235',
tag => 'certmaster_minion',
}
}
firewall + exported resources
● cluster
allow all traffic from cluster members
● amanda
allow backup servers move/change
● nagios
only allow your nagios to connect
func (exported resources)
class func2::minion {
...
@@exec {"sign certificate for $::fqdn":
command => "certmaster-ca --sign $::fqdn",
path => '/usr/bin:/bin',
creates => "/var/lib/certmaster/certmaster/certs/${::fqdn}.cert",
tag => 'certmaster_sign_minion',
}
...
}
class func2::master {
...
# sign minion keys
Exec <<| tag == 'certmaster_sign_minion' |>>
…
}
func
Using Puppet to Create a Dynamic Network - PuppetConf 2013

Más contenido relacionado

La actualidad más candente

rake puppetexpert:create - Puppet Camp Silicon Valley 2014
rake puppetexpert:create - Puppet Camp Silicon Valley 2014rake puppetexpert:create - Puppet Camp Silicon Valley 2014
rake puppetexpert:create - Puppet Camp Silicon Valley 2014nvpuppet
 
DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)Soshi Nemoto
 
Docker remote-api
Docker remote-apiDocker remote-api
Docker remote-apiEric Ahn
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeSoshi Nemoto
 
Ansible Network Automation session1
Ansible Network Automation session1Ansible Network Automation session1
Ansible Network Automation session1Dhruv Sharma
 
Linux-Fu for PHP Developers
Linux-Fu for PHP DevelopersLinux-Fu for PHP Developers
Linux-Fu for PHP DevelopersLorna Mitchell
 
Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Puppet
 
Ansible for beginners
Ansible for beginnersAnsible for beginners
Ansible for beginnersKuo-Le Mei
 
Docker command
Docker commandDocker command
Docker commandEric Ahn
 
How we use and deploy Varnish at Opera
How we use and deploy Varnish at OperaHow we use and deploy Varnish at Opera
How we use and deploy Varnish at OperaCosimo Streppone
 
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Puppet
 
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...Puppet
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)Soshi Nemoto
 
Using Puppet on Linux, Windows, and Mac OSX
Using Puppet on Linux, Windows, and Mac OSXUsing Puppet on Linux, Windows, and Mac OSX
Using Puppet on Linux, Windows, and Mac OSXPuppet
 
Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Puppet
 

La actualidad más candente (20)

rake puppetexpert:create - Puppet Camp Silicon Valley 2014
rake puppetexpert:create - Puppet Camp Silicon Valley 2014rake puppetexpert:create - Puppet Camp Silicon Valley 2014
rake puppetexpert:create - Puppet Camp Silicon Valley 2014
 
Ex407
Ex407Ex407
Ex407
 
DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)
 
Docker remote-api
Docker remote-apiDocker remote-api
Docker remote-api
 
Making environment for_infrastructure_as_code
Making environment for_infrastructure_as_codeMaking environment for_infrastructure_as_code
Making environment for_infrastructure_as_code
 
Ansible Network Automation session1
Ansible Network Automation session1Ansible Network Automation session1
Ansible Network Automation session1
 
Linux-Fu for PHP Developers
Linux-Fu for PHP DevelopersLinux-Fu for PHP Developers
Linux-Fu for PHP Developers
 
Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014Test-Driven Puppet Development - PuppetConf 2014
Test-Driven Puppet Development - PuppetConf 2014
 
Ansible for beginners
Ansible for beginnersAnsible for beginners
Ansible for beginners
 
Docker command
Docker commandDocker command
Docker command
 
Puppet
PuppetPuppet
Puppet
 
How we use and deploy Varnish at Opera
How we use and deploy Varnish at OperaHow we use and deploy Varnish at Opera
How we use and deploy Varnish at Opera
 
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
 
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...
Puppet Camp Phoenix 2015: Managing Files via Puppet: Let Me Count The Ways (B...
 
Puppet @ Seat
Puppet @ SeatPuppet @ Seat
Puppet @ Seat
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Preparation study of_docker - (MOSG)
Preparation study of_docker  - (MOSG)Preparation study of_docker  - (MOSG)
Preparation study of_docker - (MOSG)
 
Puppet modules for Fun and Profit
Puppet modules for Fun and ProfitPuppet modules for Fun and Profit
Puppet modules for Fun and Profit
 
Using Puppet on Linux, Windows, and Mac OSX
Using Puppet on Linux, Windows, and Mac OSXUsing Puppet on Linux, Windows, and Mac OSX
Using Puppet on Linux, Windows, and Mac OSX
 
Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011Oliver hookins puppetcamp2011
Oliver hookins puppetcamp2011
 

Similar a Using Puppet to Create a Dynamic Network - PuppetConf 2013

Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetOmar Reygaert
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Herokuronnywang_tw
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
Linux Containers From Scratch
Linux Containers From ScratchLinux Containers From Scratch
Linux Containers From Scratchjoshuasoundcloud
 
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Composeraccoony
 
X64服务器 lnmp服务器部署标准 new
X64服务器 lnmp服务器部署标准 newX64服务器 lnmp服务器部署标准 new
X64服务器 lnmp服务器部署标准 newYiwei Ma
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestrationbcoca
 
Advanced Level Training on Koha / TLS (ToT)
Advanced Level Training on Koha / TLS (ToT)Advanced Level Training on Koha / TLS (ToT)
Advanced Level Training on Koha / TLS (ToT)Ata Rehman
 
Beyond Golden Containers: Complementing Docker with Puppet
Beyond Golden Containers: Complementing Docker with PuppetBeyond Golden Containers: Complementing Docker with Puppet
Beyond Golden Containers: Complementing Docker with Puppetlutter
 
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...Puppet
 
Challenges of container configuration
Challenges of container configurationChallenges of container configuration
Challenges of container configurationlutter
 
Adrian Mouat - Docker Tips and Tricks
 Adrian Mouat - Docker Tips and Tricks Adrian Mouat - Docker Tips and Tricks
Adrian Mouat - Docker Tips and TricksKevin Cross
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with PuppetKris Buytaert
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Michele Orselli
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis OverviewLeo Lorieri
 
Globus toolkit4installationguide
Globus toolkit4installationguideGlobus toolkit4installationguide
Globus toolkit4installationguideAdarsh Patil
 
Web development automatisation for fun and profit (Artem Daniliants)
Web development automatisation for fun and profit (Artem Daniliants)Web development automatisation for fun and profit (Artem Daniliants)
Web development automatisation for fun and profit (Artem Daniliants)LumoSpark
 

Similar a Using Puppet to Create a Dynamic Network - PuppetConf 2013 (20)

Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + Puppet
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
PHP selber bauen
PHP selber bauenPHP selber bauen
PHP selber bauen
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
Linux Containers From Scratch
Linux Containers From ScratchLinux Containers From Scratch
Linux Containers From Scratch
 
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
 
X64服务器 lnmp服务器部署标准 new
X64服务器 lnmp服务器部署标准 newX64服务器 lnmp服务器部署标准 new
X64服务器 lnmp服务器部署标准 new
 
Intro django
Intro djangoIntro django
Intro django
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestration
 
Advanced Level Training on Koha / TLS (ToT)
Advanced Level Training on Koha / TLS (ToT)Advanced Level Training on Koha / TLS (ToT)
Advanced Level Training on Koha / TLS (ToT)
 
Beyond Golden Containers: Complementing Docker with Puppet
Beyond Golden Containers: Complementing Docker with PuppetBeyond Golden Containers: Complementing Docker with Puppet
Beyond Golden Containers: Complementing Docker with Puppet
 
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
PuppetConf 2016: The Challenges with Container Configuration – David Lutterko...
 
Challenges of container configuration
Challenges of container configurationChallenges of container configuration
Challenges of container configuration
 
Adrian Mouat - Docker Tips and Tricks
 Adrian Mouat - Docker Tips and Tricks Adrian Mouat - Docker Tips and Tricks
Adrian Mouat - Docker Tips and Tricks
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Globus toolkit4installationguide
Globus toolkit4installationguideGlobus toolkit4installationguide
Globus toolkit4installationguide
 
Web development automatisation for fun and profit (Artem Daniliants)
Web development automatisation for fun and profit (Artem Daniliants)Web development automatisation for fun and profit (Artem Daniliants)
Web development automatisation for fun and profit (Artem Daniliants)
 
Docker practice
Docker practiceDocker practice
Docker practice
 

Más de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

Más de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Último

🐬 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
 
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
 
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
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
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
 
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
 
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
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
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
 
[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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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 ...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
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...
 
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
 
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
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
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
 
[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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 

Using Puppet to Create a Dynamic Network - PuppetConf 2013