Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
CIS 527
Lecture 8 - Puppet 2
Learning Puppet
Much of this lecture's content is adapted from the Learning Puppet series on http://docs.puppetlabs.com/learning/
Variables
$my_variable = "A bunch of text"
notify {$my_variable:}
Variable Notes
Variable Notes
$username = "russfeld"
notify {"Your home directory is /home/${username}": }
Learn More
Facts
Facter
#> facter -p
Facter
#> facter -p
architecture => i386
bios_version => 6.00
block_devices => sda
domain => localdomain
id => root
...
Facter
List of facts
Conditionals
if <boolean> {
<code>
}
elsif <boolean> {
<code>
}
else {
<code>
}
Booleans
$boolean = "false"
if $boolean {
notify{"This is true":}
}
else {
notify{"This is false":}
}
Booleans
$boolean = "false"
if $boolean {
notify{"This is true":}
}
else {
notify{"This is false":}
}
Notify: This is true
Booleans
Booleans
$boolean = "false"
if str2bool("$boolean") {
notify{"This is true":}
}
else {
notify{"This is false":}
}
Booleans
$boolean = "false"
if str2bool("$boolean") {
notify{"This is true":}
}
else {
notify{"This is false":}
}
Notify: This is false
Case Statement
case $operatingsystem {
centos: { $apache = "httpd" }
# Note that these matches
# are case-insensitive.
redhat: { $apache = "httpd" }
debian: { $apache = "apache2" }
ubuntu: { $apache = "apache2" }
default: { fail("Unrecognized OS") }
}
Case Statement
case $operatingsystem {
centos, redhat: { $apache = "httpd" }
debian, ubuntu: { $apache = "apache2" }
default: { fail("Unrecognized OS") }
}
Can also use Regular Expressions
Case Statement
$apache = $operatingsystem ? {
centos => 'httpd',
redhat => 'httpd',
/(?i)(ubuntu|debian)/ => 'apache2',
default => undef,
}
Classes
class my_class {
notify {"This does something":}
}
include my_class
Classes
Variable Scope
Modules
Module Structure
/etc/puppetlabs/puppet/modules/
module_name/
manifests/
init.pp
files/
templates/
lib/
Module Structure
Site Manifest
/etc/puppetlabs/puppet/manifests/site.pp
include ntp
include apache
include mysql
Puppet Forge
Assignments