<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Puppet</id>
	<title>Puppet - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Puppet"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Puppet&amp;action=history"/>
	<updated>2026-04-28T08:03:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Puppet&amp;diff=6491&amp;oldid=prev</id>
		<title>Kenneth: /* Windows Agent */</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Puppet&amp;diff=6491&amp;oldid=prev"/>
		<updated>2023-10-26T21:08:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Windows Agent&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Puppet ==&lt;br /&gt;
&lt;br /&gt;
=== Subpage Table of Contents ===&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAME}}/}}&lt;br /&gt;
&lt;br /&gt;
== Puppet Labs ==&lt;br /&gt;
&lt;br /&gt;
Puppet Labs - https://puppetlabs.com&lt;br /&gt;
&lt;br /&gt;
Puppet Labs: IT Automation Software for System Administrators&lt;br /&gt;
&lt;br /&gt;
== Open Source ==&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
 https://puppet.com/download-open-source-puppet&lt;br /&gt;
&lt;br /&gt;
Note: Have to answer a few questions.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Show agent disable status:  (only exists if disabled)&lt;br /&gt;
 cat `puppet agent --configprint agent_disabled_lockfile`&lt;br /&gt;
&lt;br /&gt;
Disable:&lt;br /&gt;
 puppet agent --disable&lt;br /&gt;
 puppet agent --disable &amp;quot;some message&amp;quot; -v  # set disable status message&lt;br /&gt;
&lt;br /&gt;
Enable:&lt;br /&gt;
 puppet agent --enable&lt;br /&gt;
&lt;br /&gt;
See monitor files:&lt;br /&gt;
 puppet agent -t --noop&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
&lt;br /&gt;
Validate manifests:&lt;br /&gt;
 puppet parser validate *.pp&lt;br /&gt;
&lt;br /&gt;
Note: This only validates structure, not content and doesn&amp;#039;t follow through includes!&lt;br /&gt;
&lt;br /&gt;
puppet-lint - https://github.com/rodjek/puppet-lint&lt;br /&gt;
 # or&lt;br /&gt;
 apt-get install puppet-lint&lt;br /&gt;
&lt;br /&gt;
== Test Manifest ==&lt;br /&gt;
&lt;br /&gt;
Test manifiest:&lt;br /&gt;
 puppet apply --modulepath=/root/puppet-modules/  my_module/manifests/init.pp&lt;br /&gt;
 puppet apply --modulepath=/root/puppet-modules/  my_module/tests/init.pp&lt;br /&gt;
&lt;br /&gt;
Test manifest:&lt;br /&gt;
 puppet apply -e &amp;#039;include app_test::test&amp;#039;&lt;br /&gt;
&lt;br /&gt;
or for a dry run&lt;br /&gt;
 puppet apply -e &amp;#039;include app_test::test&amp;#039; --noop&lt;br /&gt;
&lt;br /&gt;
Create a file modules/[module_name]/tests/init.pp:&lt;br /&gt;
 include app_test&lt;br /&gt;
&lt;br /&gt;
Test your class then with:&lt;br /&gt;
 puppet apply tests/init.pp&lt;br /&gt;
&lt;br /&gt;
src: http://stackoverflow.com/questions/13143929/puppet-2-7-calling-puppet-apply-init-pp-does-nothing-why&lt;br /&gt;
&lt;br /&gt;
== Show Puppet Managed Files ==&lt;br /&gt;
&lt;br /&gt;
While it&amp;#039;s possible to search through the clients catalog and state.yaml files for each file you want to check the simplest way is to download and run puppet-ls from github.&lt;br /&gt;
&lt;br /&gt;
    # show all the puppet managed files in a directory&lt;br /&gt;
    $ puppet-ls /etc/mcollective&lt;br /&gt;
    /etc/mcollective/facts.yaml&lt;br /&gt;
    /etc/mcollective/server.cfg&lt;br /&gt;
&lt;br /&gt;
    # show all the puppet managed files in /etc and any of its subdirectories&lt;br /&gt;
    $ puppet-ls -r /etc/&lt;br /&gt;
&lt;br /&gt;
    # show all unmanaged files in /etc/nagios and any subdirectories&lt;br /&gt;
    $ puppet-ls -r -i /etc/nagios/&lt;br /&gt;
&lt;br /&gt;
 puppet-ls - https://github.com/dalen/puppetls&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
 cd /etc/puppet/modules/&lt;br /&gt;
 git clone https://github.com/dalen/puppetls.git&lt;br /&gt;
 puppet ls&lt;br /&gt;
&lt;br /&gt;
help:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Puppet Face to list files&lt;br /&gt;
=========================&lt;br /&gt;
&lt;br /&gt;
This face adds a ls command to Puppet to list files managed by Puppet.&lt;br /&gt;
&lt;br /&gt;
Usage&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
$ puppet ls /etc&lt;br /&gt;
&lt;br /&gt;
...lists file resources in /etc&lt;br /&gt;
&lt;br /&gt;
$ puppet ls /etc -r&lt;br /&gt;
&lt;br /&gt;
...lists file resources under /etc&lt;br /&gt;
&lt;br /&gt;
$ puppet ls&lt;br /&gt;
&lt;br /&gt;
...lists file resources in current directory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
reference: https://www.puppetcookbook.com/posts/list-puppet-managed-files.html&lt;br /&gt;
&lt;br /&gt;
== Puppet Cookbook ==&lt;br /&gt;
&lt;br /&gt;
Puppet CookBook - https://www.puppetcookbook.com/&lt;br /&gt;
:A collection of task oriented solutions in Puppet&lt;br /&gt;
&lt;br /&gt;
== Installing Agent ==&lt;br /&gt;
&lt;br /&gt;
https://docs.puppet.com/pe/latest/install_agents.html&lt;br /&gt;
&lt;br /&gt;
=== Linux Agent ===&lt;br /&gt;
&lt;br /&gt;
Installing Puppet agent: Linux — Documentation — Puppet - https://docs.puppet.com/puppet/latest/install_linux.html&lt;br /&gt;
&lt;br /&gt;
 apt-get install puppet&lt;br /&gt;
&lt;br /&gt;
 #or&lt;br /&gt;
&lt;br /&gt;
 # for Ubuntu 14&lt;br /&gt;
 wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb&lt;br /&gt;
 sudo dpkg -i puppetlabs-release-trusty.deb&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install puppet&lt;br /&gt;
&lt;br /&gt;
 # for CentOS 7&lt;br /&gt;
 sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpm&lt;br /&gt;
 yum install puppet&lt;br /&gt;
 # /etc/puppetlabs/puppet/puppet.conf&lt;br /&gt;
&lt;br /&gt;
 service puppet start&lt;br /&gt;
&lt;br /&gt;
Config:&lt;br /&gt;
 /etc/puppet/puppet.conf&lt;br /&gt;
&lt;br /&gt;
Add to [main] section:&lt;br /&gt;
 [main]&lt;br /&gt;
 server=puppetmaster.oeey.com&lt;br /&gt;
&lt;br /&gt;
=== Windows Agent ===&lt;br /&gt;
&lt;br /&gt;
Installing Puppet agent: Microsoft Windows — Documentation — Puppet - https://docs.puppet.com/puppet/latest/install_windows.html&lt;br /&gt;
&lt;br /&gt;
 https://downloads.puppetlabs.com/windows/&lt;br /&gt;
&lt;br /&gt;
 https://downloads.puppetlabs.com/windows/puppet-agent-x64-latest.msi&lt;br /&gt;
&lt;br /&gt;
Config:&lt;br /&gt;
 C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf&lt;br /&gt;
&lt;br /&gt;
ssl:&lt;br /&gt;
 C:\Users\kenneth\.puppetlabs\etc\puppet\ssl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server=puppetmaster.oeey.com&lt;br /&gt;
autoflush=true&lt;br /&gt;
environment=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Agent Usage ==&lt;br /&gt;
&lt;br /&gt;
/etc/puppet/puppet.conf&lt;br /&gt;
 [agent]&lt;br /&gt;
 server = puppetmaster.oeey.com&lt;br /&gt;
&lt;br /&gt;
 /etc/default/puppet&lt;br /&gt;
  START=yes&lt;br /&gt;
&lt;br /&gt;
 service puppet start&lt;br /&gt;
&lt;br /&gt;
Test connection:&lt;br /&gt;
 telnet puppetmaster.oeey.com 8140&lt;br /&gt;
&lt;br /&gt;
Start service:&lt;br /&gt;
 puppet resource service puppet ensure=running enable=true&lt;br /&gt;
&lt;br /&gt;
Enable agent:&lt;br /&gt;
 puppet agent --enable&lt;br /&gt;
&lt;br /&gt;
To start the Puppet service:&lt;br /&gt;
 sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true&lt;br /&gt;
&lt;br /&gt;
To manually launch and watch a Puppet run:&lt;br /&gt;
 puppet agent --test&lt;br /&gt;
&lt;br /&gt;
 puppet agent --no-daemonize --verbose --onetime&lt;br /&gt;
&lt;br /&gt;
Manually launch with debug turned on:&lt;br /&gt;
 puppet agent -t --debug&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
&lt;br /&gt;
List certificates waiting for signature:&lt;br /&gt;
 puppet cert list&lt;br /&gt;
&lt;br /&gt;
Puppet Master:&lt;br /&gt;
 puppet cert clean &amp;quot;puppetagent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Client Agent:&lt;br /&gt;
 rm -rf /etc/puppetlabs/puppet/ssl&lt;br /&gt;
 rm -rf /var/lib/puppet/ssl&lt;br /&gt;
 rm -r $(puppet agent --configprint ssldir)&lt;br /&gt;
 puppet agent -t&lt;br /&gt;
&lt;br /&gt;
Master:&lt;br /&gt;
 puppet cert sign &amp;quot;puppetagent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
List all certificates (including signed):&lt;br /&gt;
 puppet cert list --all&lt;br /&gt;
&lt;br /&gt;
Verify client fingerprint:&lt;br /&gt;
 puppet agent --fingerprint&lt;br /&gt;
&lt;br /&gt;
Reset master certificate: (last resort)&lt;br /&gt;
 puppet cert clean &amp;lt;puppet master&amp;#039;s certname&amp;gt;&lt;br /&gt;
 puppet cert generate &amp;lt;puppet master&amp;#039;s certname&amp;gt; --dns_alt_names=&amp;lt;comma-separated list of DNS names&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Puppet Master ==&lt;br /&gt;
&lt;br /&gt;
Install Puppet:&lt;br /&gt;
 wget http://apt.puppetlabs.com/puppetlabs-release-trusty.deb&lt;br /&gt;
 dpkg -i puppetlabs-release-trusty.deb&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install puppetmaster&lt;br /&gt;
&lt;br /&gt;
Verify version:&lt;br /&gt;
 puppet -V&lt;br /&gt;
   3.8.1&lt;br /&gt;
&lt;br /&gt;
Lock version: /etc/apt/preferences.d/00-puppet.pref&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/apt/preferences.d/00-puppet.pref&lt;br /&gt;
Package: puppet puppet-common puppetmaster-passenger&lt;br /&gt;
Pin: version 3.8*&lt;br /&gt;
Pin-Priority: 501&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/puppet/puppet.conf  (comment line)&lt;br /&gt;
 #templatedir=...&lt;br /&gt;
&lt;br /&gt;
Service:&lt;br /&gt;
 service puppetmaster stop&lt;br /&gt;
 service puppetmaster start&lt;br /&gt;
&lt;br /&gt;
TCP Port: 8140&lt;br /&gt;
&lt;br /&gt;
ref: https://vexxhost.com/resources/tutorials/how-to-install-and-setup-puppet-master-and-client-on-ubuntu-14-04/&lt;br /&gt;
&lt;br /&gt;
ref: https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure&lt;br /&gt;
&lt;br /&gt;
== facter ==&lt;br /&gt;
&lt;br /&gt;
Puppet gathers facts about each of its nodes with a tool called facter. Facter, by default, gathers information that is useful for system configuration (e.g. OS names, hostnames, IP addresses, SSH keys, and more). It is possible to add custom facts if you need other facts to perform you configurations.&lt;br /&gt;
&lt;br /&gt;
To see a list of facts that are automatically being gathered on your agent node:&lt;br /&gt;
 facter&lt;br /&gt;
&lt;br /&gt;
== site manifest ==&lt;br /&gt;
&lt;br /&gt;
Puppet uses a domain-specific language to describe system configurations, and these descriptions are saved to files called &amp;quot;manifests&amp;quot;, which have a .pp file extension. The default main manifest file is located at /etc/puppet/manifests/site.pp.&lt;br /&gt;
&lt;br /&gt;
Main manifest&lt;br /&gt;
 /etc/puppet/manifests/site.pp&lt;br /&gt;
&lt;br /&gt;
== Manifests ==&lt;br /&gt;
&lt;br /&gt;
=== Testing Manifest ===&lt;br /&gt;
&lt;br /&gt;
Apply main manifest immediately:&lt;br /&gt;
 puppet agent -t&lt;br /&gt;
&lt;br /&gt;
Test sub manifest:&lt;br /&gt;
 puppet apply /etc/puppet/modules/test/init.pp&lt;br /&gt;
&lt;br /&gt;
If not in /etc/puppet/modules:&lt;br /&gt;
 puppet apply --modulepath=/root/puppet-modules/  test/init.pp&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
&lt;br /&gt;
 # standard hash sign comments&lt;br /&gt;
&lt;br /&gt;
=== Example Manifest ===&lt;br /&gt;
 &lt;br /&gt;
Example site.pp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
file {&amp;#039;/tmp/example-ip&amp;#039;:                                            # resource type file and filename&lt;br /&gt;
  ensure  =&amp;gt; present,                                               # make sure it exists&lt;br /&gt;
  mode    =&amp;gt; 0644,                                                  # file permissions&lt;br /&gt;
  content =&amp;gt; &amp;quot;Here is my Public IP Address: ${ipaddress_eth0}.\n&amp;quot;,  # note the ipaddress_eth0 fact&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example site.pp targeting nodes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
node &amp;#039;ns1&amp;#039;, &amp;#039;ns2&amp;#039; {    # applies to ns1 and ns2 nodes&lt;br /&gt;
  file {&amp;#039;/tmp/test1.txt&amp;#039;:    # resource type file and filename&lt;br /&gt;
    ensure =&amp;gt; present, # make sure it exists&lt;br /&gt;
    mode =&amp;gt; 0644,&lt;br /&gt;
    content =&amp;gt; &amp;quot;Test1.\n&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
node default {}       # applies to nodes that aren&amp;#039;t explicitly defined&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example with win/linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if $::kernel == &amp;#039;windows&amp;#039; {&lt;br /&gt;
  file {&amp;#039;c:/temp&amp;#039;:    # resource type file and filename&lt;br /&gt;
    ensure =&amp;gt; directory, # make sure it exists&lt;br /&gt;
  }&lt;br /&gt;
  file {&amp;#039;c:/temp/iamwindows.txt&amp;#039;:    # resource type file and filename&lt;br /&gt;
    ensure =&amp;gt; present, # make sure it exists&lt;br /&gt;
    content =&amp;gt; &amp;quot;I am windows\n&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
if $::kernel == &amp;#039;linux&amp;#039; {&lt;br /&gt;
  file {&amp;#039;/tmp/iamlinux.txt&amp;#039;:    # resource type file and filename&lt;br /&gt;
    ensure =&amp;gt; present, # make sure it exists&lt;br /&gt;
    content =&amp;gt; &amp;quot;I am linux\n&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Install module on master:&lt;br /&gt;
 puppet module install puppetlabs-apache&lt;br /&gt;
&lt;br /&gt;
/etc/puppet/manifest/site.pp&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
node &amp;#039;host2&amp;#039; {&lt;br /&gt;
  class { &amp;#039;apache&amp;#039;: }             # use apache module&lt;br /&gt;
  apache::vhost { &amp;#039;example.com&amp;#039;:  # define vhost resource&lt;br /&gt;
    port    =&amp;gt; &amp;#039;80&amp;#039;,&lt;br /&gt;
    docroot =&amp;gt; &amp;#039;/var/www/html&amp;#039;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--- directory site manifest&lt;br /&gt;
&lt;br /&gt;
/etc/puppetlabs/puppet/manifests/site.pp&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# import many manifest files with node definitions&lt;br /&gt;
import &amp;#039;nodes/*.pp&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/puppetlabs/puppet/manifests/nodes/testsystem.pp&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
node &amp;#039;testsystem&amp;#039; {&lt;br /&gt;
  import ::mymodule&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/puppetlabs/puppet/manifests/site.pp&lt;br /&gt;
node &amp;#039;kestrel.example.com&amp;#039; {&lt;br /&gt;
  import &amp;#039;nodes/kestrel.pp&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/puppetlabs/puppet/manifests/nodes/kestrel.pp&lt;br /&gt;
include ntp&lt;br /&gt;
include apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://docs.puppet.com/puppet/3/lang_import.html&lt;br /&gt;
&lt;br /&gt;
-- Regular expression:&lt;br /&gt;
&lt;br /&gt;
 node /^www\d+$/&lt;br /&gt;
&lt;br /&gt;
=== Operating System Version ===&lt;br /&gt;
&lt;br /&gt;
  notify { &amp;quot;OS: ${$::operatingsystem} version ${$::operatingsystemmajrelease}&amp;quot; : }&lt;br /&gt;
&lt;br /&gt;
   if ($::operatingsystem == &amp;#039;Ubuntu&amp;#039; and $::lsbmajdistrelease == &amp;#039;14.04&amp;#039;) { ... }&lt;br /&gt;
&lt;br /&gt;
 $::operatingsystem&lt;br /&gt;
  windows, ubuntu, centos&lt;br /&gt;
&lt;br /&gt;
 $::operatingsystemmajrelease&lt;br /&gt;
  10 (for windows 10)&lt;br /&gt;
&lt;br /&gt;
 $::kernel&lt;br /&gt;
  windows, Linux&lt;br /&gt;
&lt;br /&gt;
 $::kernelmajversion&lt;br /&gt;
  10.0 (for windows 10)&lt;br /&gt;
&lt;br /&gt;
 if $::kernel == &amp;#039;windows&amp;#039; { ... }&lt;br /&gt;
&lt;br /&gt;
See https://docs.puppet.com/facter/latest/core_facts.html&lt;br /&gt;
&lt;br /&gt;
== Language Basics ==&lt;br /&gt;
&lt;br /&gt;
Language: Basics — Documentation — Puppet - https://docs.puppet.com/puppet/latest/lang_summary.html&lt;br /&gt;
&lt;br /&gt;
== Manifests ==&lt;br /&gt;
&lt;br /&gt;
Puppet language files are called manifests, and are named with the .pp file extension.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
 https://docs.puppet.com/puppet/&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
See [[Puppet/Issues]]&lt;br /&gt;
&lt;br /&gt;
== Keywords ==&lt;br /&gt;
&lt;br /&gt;
puppet package automation&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>