User Tools

Site Tools


wiki:qclug_presentations:puppet

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
wiki:qclug_presentations:puppet [2015/11/11 21:23]
Root [Configuring a Puppet Agent]
wiki:qclug_presentations:puppet [2015/11/11 22:07]
Root [Configuring a Puppet Agent]
Line 7: Line 7:
 Step 1: Add the Puppet Repository\\ Step 1: Add the Puppet Repository\\
 Step 2: Install Puppet\\ Step 2: Install Puppet\\
-Step 3: Install R10K\\ +Step 3: Configure the Puppet Master\\ 
-Step 4: Install Hiera\\ +Step 4: Configure a Puppet agent\\ 
-Step 5: Install and Configure a Puppet agent\\ +Step 5: Apply Puppet Code
-Step 6: Apply Puppet Code+
  
 ===== Prerequisites ===== ===== Prerequisites =====
-  - Master/​Agent requires at least servers, masterless requires only 1. +  - Master/​Agent requires at least two servers, masterless requires only one 
-  - Master/​Agent ​should have DNS configured, but IP addresses could work as well.+  - Master/​Agent ​require ​DNS to be configured ​for SSL certificate signing purposes
  
 ===== Installing Open Source Puppet ===== ===== Installing Open Source Puppet =====
Line 65: Line 64:
 [master] [master]
 always_cache_features = true always_cache_features = true
-environment_timeout=unlimited +environment_timeout = unlimited 
-environmentpath=$confdir/​environments+environmentpath = $confdir/​environments
 basemodulepath = /​etc/​puppet/​modules basemodulepath = /​etc/​puppet/​modules
 ca = true ca = true
Line 74: Line 73:
 <​code>​ <​code>​
 [main] [main]
-#​templatedir=$confdir/​templates+#​templatedir = $confdir/​templates
 </​code>​ </​code>​
  
 +Start the Apache service
 +<​code>​
 +service apache2 start
 +</​code>​
 ===== Set up your production environment ===== ===== Set up your production environment =====
  
Line 100: Line 103:
 node '​pupagent.pcdomain.pvt'​ { node '​pupagent.pcdomain.pvt'​ {
   include roles::​home::​server   include roles::​home::​server
-} 
-node '​laptop.pcdomain.pvt'​ { 
-  include roles::​home::​laptop 
 } }
 </​code>​ </​code>​
Line 120: Line 120:
 Next, create the roles module directory structure: Next, create the roles module directory structure:
 <​code>​ <​code>​
-mkdir -p /​etc/​puppet/​environments/​production/​modules/​roles/​manifests+mkdir -p /​etc/​puppet/​environments/​production/​modules/​roles/​manifests/home
 </​code>​ </​code>​
  
-Edit the server.pp file and have it include the profiles::​home::​apache ​module which will be created later and will use the Puppetlabs ​apache ​module to install and configure ​apache:+Edit the server.pp file and have it include the profiles::​home::​mysql module which will be created later and will use the Puppetlabs ​mysql module to install and configure ​mysql:
  
 <​code>​ <​code>​
-vi /​etc/​puppet/​environments/​production/​modules/​roles/​manifests/​server.pp+vi /​etc/​puppet/​environments/​production/​modules/​roles/​manifests/home/server.pp
 </​code>​ </​code>​
  
 <​code>​ <​code>​
 class roles::​home::​server { class roles::​home::​server {
-  include profiles::​home::​apache+  include profiles::​home::​mysql
 } }
 +</​code>​
 +
 +//Note: A bug you might encounter will cause the following error message during a puppet run://
 +<​code>​
 +Could not evaluate: Could not retrieve information from environment production source(s) puppet://​pupmaster.pcdomain.pvt/​pluginfacts
 +</​code>​
 +
 +To work around the bug simply create a folder named "​facts.d"​ in the roles module directory:
 +<​code>​
 +mkdir /​etc/​puppet/​environments/​production/​modules/​roles/​facts.d
 </​code>​ </​code>​
  
Line 142: Line 152:
 </​code>​ </​code>​
  
-Edit the apache.pp file and have it call the apache ​class:+Edit the mysql.pp file and have it call the mysql::​server ​class:
  
 <​code>​ <​code>​
-vi /​etc/​puppet/​environments/​production/​modules/​profiles/​manifests/​home/​apache.pp+vi /​etc/​puppet/​environments/​production/​modules/​profiles/​manifests/​home/​mysql.pp
 </​code>​ </​code>​
 <​code>​ <​code>​
-class profiles::​home::​apache ​+class profiles::​home::​mysql 
-  class { '::apache': ​ }+  class { '::mysql::​server': 
 +    root_password ​          => '​strongpassword',​ 
 +    remove_default_accounts => true, 
 +  }
 } }
 </​code>​ </​code>​
  
-//Note: Ensure the class is prefixed with the double colons or else the profile will try to load itself instead of the actual ​apache ​module!//+//Note: Ensure the class is prefixed with the double colons or else the profile will try to load itself instead of the actual ​mysql module!//
  
-==== Install the puppetlabs-apache ​module ==== +==== Install the puppetlabs-mysql module ==== 
-This command will install the puppetlabs-apache ​module into /​etc/​puppet/​modules,​ which is symlinked inside our production environment:​+This command will install the puppetlabs-mysql module into /​etc/​puppet/​modules,​ which is symlinked inside our production environment:​
  
 <​code>​ <​code>​
-puppet module install puppetlabs-apache+puppet module install puppetlabs-mysql
 </​code>​ </​code>​
  
Line 168: Line 181:
 [main] [main]
 server = pupmaster.pcdomain.pvt server = pupmaster.pcdomain.pvt
 +archive_files = true
 +archive_file_server = pupmaster.pcdomain.pvt
     ​     ​
 [agent] [agent]
Line 177: Line 192:
 environment = production environment = production
 </​code>​ </​code>​
 +
 +Also remove the [master] section from all agents.
  
 Run the agent to generate an SSL key and CSR request for the Master: Run the agent to generate an SSL key and CSR request for the Master:
Line 192: Line 209:
 Notice: Signed certificate request for pupagent.pcdomain.pvt Notice: Signed certificate request for pupagent.pcdomain.pvt
 Notice: Removing file Puppet::​SSL::​CertificateRequest pupagent.pcdomain.pvt at '/​var/​lib/​puppet/​ssl/​ca/​requests/​pupagent.pcdomain.pvt.pem'​ Notice: Removing file Puppet::​SSL::​CertificateRequest pupagent.pcdomain.pvt at '/​var/​lib/​puppet/​ssl/​ca/​requests/​pupagent.pcdomain.pvt.pem'​
 +</​code>​
 +
 +Login to the agent and run Puppet again which should kickoff the initial Puppet run:
 +<​code>​
 +puppet agent -t
 +</​code>​
 +
 +Enable the agent service to have Puppet run automatically every 30 minutes by default:
 +<​code>​
 +update-rc.d puppet enable
 </​code>​ </​code>​
 ===== Setup R10K ===== ===== Setup R10K =====
wiki/qclug_presentations/puppet.txt · Last modified: 2015/11/11 22:07 by Root