summaryrefslogtreecommitdiffstats
path: root/prototypes/puppet-infracloud/install_puppet.sh
diff options
context:
space:
mode:
Diffstat (limited to 'prototypes/puppet-infracloud/install_puppet.sh')
-rwxr-xr-xprototypes/puppet-infracloud/install_puppet.sh297
1 files changed, 0 insertions, 297 deletions
diff --git a/prototypes/puppet-infracloud/install_puppet.sh b/prototypes/puppet-infracloud/install_puppet.sh
deleted file mode 100755
index ae2594480..000000000
--- a/prototypes/puppet-infracloud/install_puppet.sh
+++ /dev/null
@@ -1,297 +0,0 @@
-#!/bin/bash -x
-
-# Copyright 2013 OpenStack Foundation.
-# Copyright 2013 Hewlett-Packard Development Company, L.P.
-# Copyright 2013 Red Hat, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-
-#
-# 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 {
- [ -f /usr/bin/yum ] && cat /etc/*release | grep -q -e "Fedora"
-}
-
-function is_rhel7 {
- [ -f /usr/bin/yum ] && \
- cat /etc/*release | grep -q -e "Red Hat" -e "CentOS" -e "CloudLinux" && \
- cat /etc/*release | grep -q 'release 7'
-}
-
-function is_ubuntu {
- [ -f /usr/bin/apt-get ]
-}
-
-function is_opensuse {
- [ -f /usr/bin/zypper ] && \
- cat /etc/os-release | grep -q -e "openSUSE"
-}
-
-function is_gentoo {
- [ -f /usr/bin/emerge ]
-}
-
-# dnf is a drop-in replacement for yum on Fedora>=22
-YUM=yum
-if is_fedora && [[ $(lsb_release -rs) -ge 22 ]]; then
- YUM=dnf
-fi
-
-
-#
-# Distro specific puppet installs
-#
-
-function _systemd_update {
- # there is a bug (rhbz#1261747) where systemd can fail to enable
- # services due to selinux errors after upgrade. A work-around is
- # to install the latest version of selinux and systemd here and
- # restart the daemon for good measure after it is upgraded.
- $YUM install -y selinux-policy
- $YUM install -y systemd
- systemctl daemon-reload
-}
-
-function setup_puppet_fedora {
- _systemd_update
-
- $YUM update -y
-
- # NOTE: we preinstall lsb_release here to ensure facter sets
- # lsbdistcodename
- #
- # Fedora declares some global hardening flags, which distutils
- # pick up when building python modules. redhat-rpm-config
- # provides the required config options. Really this should be a
- # dependency of python-devel (fix in the works, see
- # https://bugzilla.redhat.com/show_bug.cgi?id=1217376) and can be
- # removed when that is sorted out.
-
- $YUM install -y redhat-lsb-core git puppet \
- redhat-rpm-config
-
- mkdir -p /etc/puppet/modules/
-
- # Puppet expects the pip command named as pip-python on
- # Fedora, as per the packaged command name. However, we're
- # installing from get-pip.py so it's just 'pip'. An easy
- # work-around is to just symlink pip-python to "fool" it.
- # See upstream issue:
- # https://tickets.puppetlabs.com/browse/PUP-1082
- ln -fs /usr/bin/pip /usr/bin/pip-python
- # Wipe out templatedir so we don't get warnings about it
- sed -i '/templatedir/d' /etc/puppet/puppet.conf
-
- # upstream is currently looking for /run/systemd files to check
- # for systemd. This fails in a chroot where /run isn't mounted
- # (like when using dib). Comment out this confine as fedora
- # always has systemd
- # see
- # https://github.com/puppetlabs/puppet/pull/4481
- # https://bugzilla.redhat.com/show_bug.cgi?id=1254616
- sudo sed -i.bak '/^[^#].*/ s|\(^.*confine :exists => \"/run/systemd/system\".*$\)|#\ \1|' \
- /usr/share/ruby/vendor_ruby/puppet/provider/service/systemd.rb
-
- # upstream "requests" pip package vendors urllib3 and chardet
- # packages. The fedora packages un-vendor this, and symlink those
- # sub-packages back to packaged versions. We get into a real mess
- # of if some of the puppet ends up pulling in "requests" from pip,
- # and then something like devstack does a "yum install
- # python-requests" which does a very bad job at overwriting the
- # pip-installed version (symlinks and existing directories don't
- # mix). A solution is to pre-install the python-requests
- # package; clear it out and re-install from pip. This way, the
- # package is installed for dependencies, and we have a pip-managed
- # requests with correctly vendored sub-packages.
- sudo ${YUM} install -y python2-requests
- sudo rm -rf /usr/lib/python2.7/site-packages/requests/*
- sudo rm -rf /usr/lib/python2.7/site-packages/requests-*.{egg,dist}-info
- sudo pip install requests
-}
-
-function setup_puppet_rhel7 {
- local puppet_pkg="https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm"
-
- # install a bootstrap epel repo to install latest epel-release
- # package (which provides correct gpg keys, etc); then remove
- # boostrap
- cat > /etc/yum.repos.d/epel-bootstrap.repo <<EOF
-[epel-bootstrap]
-name=Bootstrap EPEL
-mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=\$basearch
-failovermethod=priority
-enabled=0
-gpgcheck=0
-EOF
- yum --enablerepo=epel-bootstrap -y install epel-release
- rm -f /etc/yum.repos.d/epel-bootstrap.repo
-
- _systemd_update
- yum update -y
-
- # NOTE: we preinstall lsb_release to ensure facter sets lsbdistcodename
- yum install -y redhat-lsb-core git puppet
-
- rpm -ivh $puppet_pkg
-
- # see comments in setup_puppet_fedora
- ln -s /usr/bin/pip /usr/bin/pip-python
- # Wipe out templatedir so we don't get warnings about it
- sed -i '/templatedir/d' /etc/puppet/puppet.conf
-
- # install RDO repo as well; this covers a few things like
- # openvswitch that aren't available for EPEL
- yum install -y https://rdoproject.org/repos/rdo-release.rpm
-}
-
-function setup_puppet_ubuntu {
- if ! which lsb_release > /dev/null 2<&1 ; then
- DEBIAN_FRONTEND=noninteractive apt-get --option 'Dpkg::Options::=--force-confold' \
- --assume-yes install -y --force-yes lsb-release
- fi
-
- lsbdistcodename=`lsb_release -c -s`
- if [ $lsbdistcodename != 'trusty' ] ; then
- rubypkg=rubygems
- else
- rubypkg=ruby
- fi
-
-
- PUPPET_VERSION=3.*
- PUPPETDB_VERSION=2.*
- FACTER_VERSION=2.*
-
- 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: puppetdb puppetdb-terminus
-Pin: version $PUPPETDB_VERSION
-Pin-Priority: 501
-
-Package: facter
-Pin: version $FACTER_VERSION
-Pin-Priority: 501
-EOF
-
- # NOTE(pabelanger): Puppetlabs does not support ubuntu xenial. Instead use
- # the version of puppet ship by xenial.
- if [ $lsbdistcodename != 'xenial' ]; then
- puppet_deb=puppetlabs-release-${lsbdistcodename}.deb
- if type curl >/dev/null 2>&1; then
- curl -O http://apt.puppetlabs.com/$puppet_deb
- else
- wget http://apt.puppetlabs.com/$puppet_deb -O $puppet_deb
- fi
- dpkg -i $puppet_deb
- rm $puppet_deb
- fi;
-
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get --option 'Dpkg::Options::=--force-confold' \
- --assume-yes dist-upgrade
- DEBIAN_FRONTEND=noninteractive apt-get --option 'Dpkg::Options::=--force-confold' \
- --assume-yes install -y --force-yes puppet git $rubypkg
- # Wipe out templatedir so we don't get warnings about it
- sed -i '/templatedir/d' /etc/puppet/puppet.conf
-}
-
-function setup_puppet_opensuse {
- local version=`grep -e "VERSION_ID" /etc/os-release | tr -d "\"" | cut -d "=" -f2`
- zypper ar http://download.opensuse.org/repositories/systemsmanagement:/puppet/openSUSE_${version}/systemsmanagement:puppet.repo
- zypper -v --gpg-auto-import-keys --no-gpg-checks -n ref
- zypper --non-interactive in --force-resolution puppet
- # Wipe out templatedir so we don't get warnings about it
- sed -i '/templatedir/d' /etc/puppet/puppet.conf
-}
-
-function setup_puppet_gentoo {
- echo yes | emaint sync -a
- emerge -q --jobs=4 puppet-agent
- sed -i '/templatedir/d' /etc/puppetlabs/puppet/puppet.conf
-}
-
-#
-# pip setup
-#
-
-function setup_pip {
- # Install pip using get-pip
- local get_pip_url=https://bootstrap.pypa.io/get-pip.py
- local ret=1
-
- if [ -f ./get-pip.py ]; then
- ret=0
- elif type curl >/dev/null 2>&1; then
- curl -O $get_pip_url
- ret=$?
- elif type wget >/dev/null 2>&1; then
- wget $get_pip_url
- ret=$?
- fi
-
- if [ $ret -ne 0 ]; then
- echo "Failed to get get-pip.py"
- exit 1
- fi
-
- if is_opensuse; then
- zypper --non-interactive in --force-resolution python python-xml
- fi
-
- python get-pip.py
- rm get-pip.py
-
- # we are about to overwrite setuptools, but some packages we
- # install later might depend on the python-setuptools package. To
- # avoid later conflicts, and because distro packages don't include
- # enough info for pip to certain it can fully uninstall the old
- # package, for safety we clear it out by hand (this seems to have
- # been a problem with very old to new updates, e.g. centos6 to
- # current-era, but less so for smaller jumps). There is a bit of
- # chicken-and-egg problem with pip in that it requires setuptools
- # for some operations, such as wheel creation. But just
- # installing setuptools shouldn't require setuptools itself, so we
- # are safe for this small section.
- if is_rhel7 || is_fedora; then
- yum install -y python-setuptools
- rm -rf /usr/lib/python2.7/site-packages/setuptools*
- fi
-
- pip install -U setuptools
-}
-
-setup_pip
-
-if is_fedora; then
- setup_puppet_fedora
-elif is_rhel7; then
- setup_puppet_rhel7
-elif is_ubuntu; then
- setup_puppet_ubuntu
-elif is_opensuse; then
- setup_puppet_opensuse
-elif is_gentoo; then
- setup_puppet_gentoo
-else
- echo "*** Can not setup puppet: distribution not recognized"
- exit 1
-fi
-