puppet code for windows environment?

Building blocks of Puppet

  1. Resources
  2. Classes
  3. Manifest
  4. Modules

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