From e04facc5a595f0631c7dc65202c506df4ed5f461 Mon Sep 17 00:00:00 2001 From: Dan Bode Date: Fri, 11 Jan 2013 10:54:15 -0800 Subject: [PATCH] Add puppet master role This commit adds a puppet master role for deploying a fully functional puppet master with puppetdb installed. Adds the role in manifest/site.pp. Add hosts entry to manifests/setup/hosts.pp Add the definition in the vagrant file Add new deps to Puppetfile do not append timestamp to certname. Add puppet master specific config settings to setup/hosts.pp --- Puppetfile | 7 +++++++ Vagrantfile | 11 ++++++++++- manifests/setup/hosts.pp | 23 ++++++++++++++++++++++- manifests/site.pp | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/Puppetfile b/Puppetfile index 9ac49d5..03311d4 100644 --- a/Puppetfile +++ b/Puppetfile @@ -28,3 +28,10 @@ mod 'puppetlabs/firewall', :git => 'git://github.com/puppetlabs/puppetlabs-firew mod 'ripienaar/concat', :git => 'git://github.com/ripienaar/puppet-concat' mod 'duritong/sysctl', :git => 'git://github.com/duritong/puppet-sysctl.git' mod 'cprice404/inifile', :git => 'git://github.com/cprice-puppet/puppetlabs-inifile' +# puppet related modules +mod ripienaar/hiera_puppet :git => https://github.com/ripienaar/hiera-puppet +mod 'puppetlabs/ruby' +mod 'puppet/puppet', :git => 'git://github.com/stephenrjohnson/puppetlabs-puppet.git' +mod 'puppet/puppetdb', :git => 'git://github.com/puppetlabs/puppetlabs-puppetdb.git' +mod 'puppetlabs/postgresql', :git => 'git://github.com/puppetlabs/puppet-postgresql.git' +mod 'ripienaar/ruby-puppetdb', :git => 'git://github.com/ripienaar/ruby-puppetdb' diff --git a/Vagrantfile b/Vagrantfile index 78d4021..7096b12 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -89,6 +89,11 @@ Vagrant::Config.run do |config| 'ip1' => '172.16.0.10' } }, + { 'puppetmaster' => { + 'memory' => 512, + 'ip1' => '172.16.0.31' + } + }, { 'openstack_all' => { 'memory' => 2512, 'ip1' => '172.16.0.11'} } #{'compute_1' => # {'ip1' => '172.16.0.4'} @@ -123,7 +128,11 @@ Vagrant::Config.run do |config| agent.vm.customize ["modifyvm", :id, "--name", "#{name}.puppetlabs.lan"] agent.vm.host_name = "#{name.gsub('_', '-')}.puppetlabs.lan" - node_name = "#{name.gsub('_', '-')}-#{Time.now.strftime('%Y%m%d%m%s')}" + if name == 'puppetmaster' || name =~ /^swift/ + node_name = "#{name.gsub('_', '-')}.puppetlabs.lan" + else + node_name = "#{name.gsub('_', '-')}-#{Time.now.strftime('%Y%m%d%m%s')}" + end if os_name =~ /precise/ agent.vm.provision :shell, :inline => "apt-get update" diff --git a/manifests/setup/hosts.pp b/manifests/setup/hosts.pp index 355b500..0ef3f16 100644 --- a/manifests/setup/hosts.pp +++ b/manifests/setup/hosts.pp @@ -2,7 +2,7 @@ # specify a connection to the hardcoded puppet master # host { - 'puppet': ip => '172.16.0.2'; + 'puppetmaster': ip => '172.16.0.31', host_aliases => ['puppetmaster.puppetlabs.lan']; 'openstackcontroller': ip => '172.16.0.3'; 'compute1': ip => '172.16.0.4'; 'compute2': ip => '172.16.0.14'; @@ -24,3 +24,24 @@ file { '/root/run_puppet.sh': "#!/bin/bash puppet apply --modulepath /tmp/vagrant-puppet/modules-0/ --certname ${clientcert} /tmp/vagrant-puppet/manifests/site.pp" } + +node /puppetmaster/ { + Ini_setting { + path => '/etc/puppet/puppet.conf', + section => 'main', + ensure => present, + } + + ini_setting {'vardir': + setting => 'vardir', + value => '/var/lib/puppet/', + } + ini_setting {'ssldir': + setting => 'ssldir', + value => '/var/lib/puppet/ssl/', + } + ini_setting {'rundir': + setting => 'rundir', + value => '/var/run/puppet/', + } +} diff --git a/manifests/site.pp b/manifests/site.pp index 0990288..9df248e 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -307,3 +307,36 @@ node /devstack/ { node default { notify { $clientcert: } } + +node puppetmaster { + + $hostname = 'puppetmaster' + + ### Add the puppetlabs repo + apt::source { 'puppetlabs': + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + tag => ['puppet'], + } + + Exec["apt_update"] -> Package <| |> + + class { 'puppet::master': + autosign => true, + modulepath => '/etc/puppet/modules-0', + } + + class { 'puppetdb': + require => Class['puppet::master'], + } + + # Configure the puppet master to use puppetdb. + class { 'puppetdb::master::config': + restart_puppet => false, + puppetdb_startup_timeout => 240, + notify => Class['apache'], + } + +}