Add node def for puppet3 master
This change modifies install_puppet.sh to accept a --three option setting it to install the latest puppet available. It also creates a node definition for the puppetmaster.o.o node, the new 3 master, and the master of the future. Changes were made to various classes to allow the pinning to version 2.x to be turned off. Change-Id: I805d6dc50b9de0d8a99cf818d22d06c2dea6090a
This commit is contained in:
parent
a534f166a4
commit
6adda92be8
@ -20,7 +20,19 @@
|
|||||||
# Distro identification functions
|
# Distro identification functions
|
||||||
# note, can't rely on lsb_release for these as we're bare-bones and
|
# note, can't rely on lsb_release for these as we're bare-bones and
|
||||||
# it may not be installed yet)
|
# it may not be installed yet)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
# Test condition to install puppet 3
|
||||||
|
if [ "$1" = '--three' ]; then
|
||||||
|
THREE=yes
|
||||||
|
echo "Running in 3 mode"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Distro identification functions
|
||||||
|
# note, can't rely on lsb_release for these as we're bare-bones and
|
||||||
|
# it may not be installed yet)
|
||||||
|
|
||||||
|
|
||||||
function is_fedora {
|
function is_fedora {
|
||||||
[ -f /usr/bin/yum ] && cat /etc/*release | grep -q -e "Fedora"
|
[ -f /usr/bin/yum ] && cat /etc/*release | grep -q -e "Fedora"
|
||||||
@ -48,10 +60,12 @@ function setup_puppet_fedora {
|
|||||||
# lsbdistcodename
|
# lsbdistcodename
|
||||||
yum install -y redhat-lsb-core git puppet
|
yum install -y redhat-lsb-core git puppet
|
||||||
|
|
||||||
gem install hiera hiera-puppet
|
|
||||||
|
|
||||||
mkdir -p /etc/puppet/modules/
|
mkdir -p /etc/puppet/modules/
|
||||||
|
if [ "$THREE" != 'yes' ]; then
|
||||||
|
gem install hiera hiera-puppet
|
||||||
ln -s /usr/local/share/gems/gems/hiera-puppet-* /etc/puppet/modules/
|
ln -s /usr/local/share/gems/gems/hiera-puppet-* /etc/puppet/modules/
|
||||||
|
fi
|
||||||
|
|
||||||
# Puppet expects for an expects the command to be pip-python on
|
# Puppet expects for an expects the command to be pip-python on
|
||||||
# Fedora, as per the packaged command name. However, we're
|
# Fedora, as per the packaged command name. However, we're
|
||||||
@ -85,29 +99,43 @@ baseurl=http://yum.puppetlabs.com/el/6/products/$basearch
|
|||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs
|
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs
|
||||||
enabled=1
|
enabled=1
|
||||||
gpgcheck=1
|
gpgcheck=1
|
||||||
exclude=puppet-2.8* puppet-2.9* puppet-3* facter-2*
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
if [ "$THREE" != 'yes' ]; then
|
||||||
|
echo "exclude=puppet-2.8* puppet-2.9* puppet-3*" >> /etc/yum.repos.d/puppetlabs.repo
|
||||||
|
fi
|
||||||
|
|
||||||
yum update -y
|
yum update -y
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_puppet_ubuntu {
|
function setup_puppet_ubuntu {
|
||||||
lsbdistcodename=`lsb_release -c -s`
|
lsbdistcodename=`lsb_release -c -s`
|
||||||
if [ $lsbdistcodename != 'trusty' ] ; then
|
if [ $lsbdistcodename != 'trusty' ] ; then
|
||||||
# NB: keep in sync with openstack_project/files/00-puppet.pref
|
|
||||||
cat > /etc/apt/preferences.d/00-puppet.pref <<EOF
|
|
||||||
Package: puppet puppet-common puppetmaster puppetmaster-common puppetmaster-passenger
|
|
||||||
Pin: version 2.7*
|
|
||||||
Pin-Priority: 501
|
|
||||||
|
|
||||||
Package: facter
|
|
||||||
Pin: version 1.*
|
|
||||||
Pin-Priority: 501
|
|
||||||
EOF
|
|
||||||
rubypkg=rubygems
|
rubypkg=rubygems
|
||||||
else
|
else
|
||||||
rubypkg=ruby
|
rubypkg=ruby
|
||||||
|
THREE=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# NB: keep in sync with openstack_project/files/00-puppet.pref
|
||||||
|
if [ "$THREE" == 'yes' ]; then
|
||||||
|
PUPPET_VERSION=3.4.*
|
||||||
|
FACTER_VERSION=2.*
|
||||||
|
else
|
||||||
|
PUPPET_VERSION=2.7*
|
||||||
|
FACTER_VERSION=1.*
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat > /etc/apt/preferences.d/00-puppet.pref <<EOF
|
||||||
|
Package: puppet puppet-common puppetmaster puppetmaster-common puppetmaster-passenger
|
||||||
|
Pin: version $PUPPET_VERSION
|
||||||
|
Pin-Priority: 501
|
||||||
|
|
||||||
|
Package: facter
|
||||||
|
Pin: version $FACTER_VERSION
|
||||||
|
Pin-Priority: 501
|
||||||
|
EOF
|
||||||
|
|
||||||
puppet_deb=puppetlabs-release-${lsbdistcodename}.deb
|
puppet_deb=puppetlabs-release-${lsbdistcodename}.deb
|
||||||
wget http://apt.puppetlabs.com/$puppet_deb -O $puppet_deb
|
wget http://apt.puppetlabs.com/$puppet_deb -O $puppet_deb
|
||||||
dpkg -i $puppet_deb
|
dpkg -i $puppet_deb
|
||||||
|
@ -158,6 +158,16 @@ node 'ci-puppetmaster.openstack.org' {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
node 'puppetmaster.openstack.org' {
|
||||||
|
class { 'openstack_project::puppetmaster':
|
||||||
|
root_rsa_key => hiera('puppetmaster_root_rsa_key'),
|
||||||
|
salt => false,
|
||||||
|
update_slave => false,
|
||||||
|
sysadmins => hiera('sysadmins'),
|
||||||
|
version => '3.4.',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
node 'puppetdb.openstack.org' {
|
node 'puppetdb.openstack.org' {
|
||||||
class { 'openstack_project::puppetdb':
|
class { 'openstack_project::puppetdb':
|
||||||
sysadmins => hiera('sysadmins', ['admin']),
|
sysadmins => hiera('sysadmins', ['admin']),
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
#
|
#
|
||||||
class openstack_project::base(
|
class openstack_project::base(
|
||||||
$certname = $::fqdn,
|
$certname = $::fqdn,
|
||||||
$install_users = true
|
$install_users = true,
|
||||||
|
$pin_puppet = '2.7.',
|
||||||
|
$pin_facter = '1.',
|
||||||
) {
|
) {
|
||||||
if ($::osfamily == 'Debian') {
|
if ($::osfamily == 'Debian') {
|
||||||
include apt
|
include apt
|
||||||
@ -124,7 +126,7 @@ class openstack_project::base(
|
|||||||
owner => 'root',
|
owner => 'root',
|
||||||
group => 'root',
|
group => 'root',
|
||||||
mode => '0444',
|
mode => '0444',
|
||||||
source => 'puppet:///modules/openstack_project/00-puppet.pref',
|
content => template('openstack_project/00-puppet.pref.erb'),
|
||||||
replace => true,
|
replace => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,10 @@
|
|||||||
class openstack_project::puppetmaster (
|
class openstack_project::puppetmaster (
|
||||||
$root_rsa_key,
|
$root_rsa_key,
|
||||||
$override_list = [],
|
$override_list = [],
|
||||||
$sysadmins = []
|
$salt = true,
|
||||||
|
$update_slave = true,
|
||||||
|
$sysadmins = [],
|
||||||
|
$version = '2.7.',
|
||||||
) {
|
) {
|
||||||
include logrotate
|
include logrotate
|
||||||
include openstack_project::params
|
include openstack_project::params
|
||||||
@ -11,19 +14,18 @@ class openstack_project::puppetmaster (
|
|||||||
class { 'openstack_project::server':
|
class { 'openstack_project::server':
|
||||||
iptables_public_tcp_ports => [4505, 4506, 8140],
|
iptables_public_tcp_ports => [4505, 4506, 8140],
|
||||||
sysadmins => $sysadmins,
|
sysadmins => $sysadmins,
|
||||||
|
pin_puppet => $version,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($salt) {
|
||||||
class { 'salt':
|
class { 'salt':
|
||||||
salt_master => 'ci-puppetmaster.openstack.org',
|
salt_master => 'ci-puppetmaster.openstack.org',
|
||||||
}
|
}
|
||||||
class { 'salt::master': }
|
class { 'salt::master': }
|
||||||
|
|
||||||
cron { 'updatepuppetmaster':
|
|
||||||
user => 'root',
|
|
||||||
minute => '*/15',
|
|
||||||
command => 'bash /opt/config/production/run_all.sh',
|
|
||||||
environment => 'PATH=/var/lib/gems/1.8/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($update_slave) {
|
||||||
|
$cron_command = 'bash /opt/config/production/run_all.sh'
|
||||||
logrotate::file { 'updatepuppetmaster':
|
logrotate::file { 'updatepuppetmaster':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
log => '/var/log/puppet_run_all.log',
|
log => '/var/log/puppet_run_all.log',
|
||||||
@ -37,6 +39,16 @@ class openstack_project::puppetmaster (
|
|||||||
],
|
],
|
||||||
require => Cron['updatepuppetmaster'],
|
require => Cron['updatepuppetmaster'],
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$cron_command = 'sleep $((RANDOM\%600)) && cd /opt/config/production && git fetch -q && git reset -q --hard @{u} && ./install_modules.sh && touch manifests/site.pp'
|
||||||
|
}
|
||||||
|
|
||||||
|
cron { 'updatepuppetmaster':
|
||||||
|
user => 'root',
|
||||||
|
minute => '*/15',
|
||||||
|
command => $cron_command,
|
||||||
|
environment => 'PATH=/var/lib/gems/1.8/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
||||||
|
}
|
||||||
|
|
||||||
cron { 'deleteoldreports':
|
cron { 'deleteoldreports':
|
||||||
user => 'root',
|
user => 'root',
|
||||||
|
@ -7,7 +7,8 @@ class openstack_project::server (
|
|||||||
$iptables_rules4 = [],
|
$iptables_rules4 = [],
|
||||||
$iptables_rules6 = [],
|
$iptables_rules6 = [],
|
||||||
$sysadmins = [],
|
$sysadmins = [],
|
||||||
$certname = $::fqdn
|
$certname = $::fqdn,
|
||||||
|
$pin_puppet = '2.7.',
|
||||||
) {
|
) {
|
||||||
class { 'openstack_project::template':
|
class { 'openstack_project::template':
|
||||||
iptables_public_tcp_ports => $iptables_public_tcp_ports,
|
iptables_public_tcp_ports => $iptables_public_tcp_ports,
|
||||||
@ -15,6 +16,7 @@ class openstack_project::server (
|
|||||||
iptables_rules4 => $iptables_rules4,
|
iptables_rules4 => $iptables_rules4,
|
||||||
iptables_rules6 => $iptables_rules6,
|
iptables_rules6 => $iptables_rules6,
|
||||||
certname => $certname,
|
certname => $certname,
|
||||||
|
pin_puppet => $pin_puppet,
|
||||||
}
|
}
|
||||||
class { 'exim':
|
class { 'exim':
|
||||||
sysadmin => $sysadmins,
|
sysadmin => $sysadmins,
|
||||||
|
@ -7,6 +7,7 @@ class openstack_project::template (
|
|||||||
$iptables_public_udp_ports = [],
|
$iptables_public_udp_ports = [],
|
||||||
$iptables_rules4 = [],
|
$iptables_rules4 = [],
|
||||||
$iptables_rules6 = [],
|
$iptables_rules6 = [],
|
||||||
|
$pin_puppet = '2.7.',
|
||||||
$install_users = true,
|
$install_users = true,
|
||||||
$install_resolv_conf = true,
|
$install_resolv_conf = true,
|
||||||
$automatic_upgrades = true,
|
$automatic_upgrades = true,
|
||||||
@ -30,6 +31,7 @@ class openstack_project::template (
|
|||||||
class { 'openstack_project::base':
|
class { 'openstack_project::base':
|
||||||
install_users => $install_users,
|
install_users => $install_users,
|
||||||
certname => $certname,
|
certname => $certname,
|
||||||
|
pin_puppet => $pin_puppet,
|
||||||
}
|
}
|
||||||
|
|
||||||
package { 'lvm2':
|
package { 'lvm2':
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Package: puppet puppet-common puppetmaster puppetmaster-common puppetmaster-passenger
|
Package: puppet puppet-common puppetmaster puppetmaster-common puppetmaster-passenger
|
||||||
Pin: version 2.7*
|
Pin: version <%= @pin_puppet %>*
|
||||||
Pin-Priority: 501
|
Pin-Priority: 501
|
||||||
|
|
||||||
Package: facter
|
Package: facter
|
||||||
Pin: version 1.*
|
Pin: version <%= @pin_facter %>*
|
||||||
Pin-Priority: 501
|
Pin-Priority: 501
|
Loading…
Reference in New Issue
Block a user