Building blocks of Puppet
- Resources
- Classes
- Manifest
- Modules
Table of Contents
Install Puppet Windows Module Pack
puppet module install puppetlabs/windows
puppet module list
How to copy directory and it’s files using puppet
$soure_dir=c:\temp\puppetcode\Source
$destination_dir= c:\temp\puppetcode\Destination
file { $destination_dir :
ensure => 'directory',
source => "file://${source_dir}",
recurse => true,
}
Copy folder and remove the original folder
$soure_dir=c:\temp\puppetcode\Source
$destination_dir= c:\temp\puppetcode\Destination
file { $destination_dir :
ensure => 'directory',
source => "file://${source_dir}",
recurse => true,
before=> File[$source_dir],
}
file{$source_dir :
ensure=>'absent',
purge=>true,
recurse=>,
force=>true,
}
Simple code to copy folders
file {'/my/path':
ensure => 'directory',
path => '/my/path',
recurse => true,
source => '/home/user_name/scripts',
}
Running puppet code on different environment
puppet agent -t --environment production
puppet agent -t --environment stage
puppet agent -t --environment development
Adding git and auto deploy puppet code
git init --bare /srv/git/repos/mypuppetcode.git
git clone /srv/git/repos/mypuppetcode.git
Add environment.conf file
moudulepath=site:modules:$basemodulepath
mainfest=mainfests/site.pp
Add working environment
puppet config print environment #Display the current environment
sudo puppet config set environment set environment dev
Create Modules
cd / etc/puppetlabs/code/environments/production/modules
sudo mkdir -p motd/{manifests,files,examples}
sudo vim motd/examples/init.pp
motd/mainfest/init.pp
class motd{
file{'/etc/motd':
ensure=> 'present',
content=>file('motd/message'),
}
}
sudo vim motd/files/message
write a content such as “Welcome to my server”
<environment> /modules
<modulename>/mainfests/init.pp
class motd{
}
content=>file(‘motd/message’) # motd/files/message
Modules Metadata
cd /etc/puppetlabs/code/environments/production/modules
sudo puppet module generate shiva/test
sudo puppet module generate shiva/test –skip-interview # skip
Create NTP module
/etc/puppetlabs/code/enviroments/production/modules
sudo mkdir -p ntp / {manifests,files,examples}
in windows
puppet module generate modules/ntp
Add puppet ACL for IIS Default App Pool
acl { 'C:\inetpub\wwwroot\uploads':
permissions => [
{ identity => 'IIS AppPool\DefaultAppPool', rights => ['full'] }
],
}
Adding Registry Key Value
registry_key { 'hklm\software\mykey':
ensure => present,
}
registry_value { 'hklm\software\mykey\value1':
type => string,
data => 'this is a value'
}
Configure Firewall
firewall-cmd --permanent --zone=public --add-port=8140/tcp
firewall-cmd –reload
Start/Enable puppet server
systemctl start puppetserver
systemctl enable puppetserver
systemctl status puppetserver
puppet status
netstat -anpl | grep 8140