Add functions & cleanup install_puppet.sh
A small clean-up of the install_puppet.sh script to enhance readability and to simplify adding support for extra distributions - add distribution check functions - move puppet installation for each distribution into its own separate function - move pip installation into a function - add/expand several comments Change-Id: I5d5f71fde607ace528b7372e2deadccbea58bd2f
This commit is contained in:
parent
072c926e05
commit
11e8717dba
@ -16,36 +16,36 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# Install pip using get-pip
|
||||
PIP_GET_PIP_URL=https://bootstrap.pypa.io/get-pip.py
|
||||
#
|
||||
# Distro identification functions
|
||||
# note, can't rely on lsb_release for these as we're bare-bones and
|
||||
# it may not be installed yet)
|
||||
#
|
||||
|
||||
ret=1
|
||||
if [ -f ./get-pip.py ]; then
|
||||
ret=0
|
||||
elif type curl >/dev/null 2>&1; then
|
||||
curl -O $PIP_GET_PIP_URL
|
||||
ret=$?
|
||||
elif type wget >/dev/null 2>&1; then
|
||||
wget $PIP_GET_PIP_URL
|
||||
ret=$?
|
||||
fi
|
||||
function is_fedora {
|
||||
[ -f /usr/bin/yum ] && cat /etc/*release | grep -q -e "Fedora"
|
||||
}
|
||||
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "Failed to get get-pip.py"
|
||||
exit 1
|
||||
fi
|
||||
function is_rhel6 {
|
||||
[ -f /usr/bin/yum ] && \
|
||||
cat /etc/*release | grep -q -e "Red Hat" -e "CentOS" && \
|
||||
cat /etc/*release | grep -q 'release 6'
|
||||
}
|
||||
|
||||
python get-pip.py
|
||||
function is_ubuntu {
|
||||
[ -f /usr/bin/apt-get ]
|
||||
}
|
||||
|
||||
# Install puppet version 2.7.x from puppetlabs.
|
||||
# The repo and preferences files are also managed by puppet, so be sure
|
||||
# to keep them in sync with this file.
|
||||
|
||||
if cat /etc/*release | grep -e "Fedora" &> /dev/null; then
|
||||
#
|
||||
# Distro specific puppet installs
|
||||
#
|
||||
|
||||
function setup_puppet_fedora {
|
||||
yum update -y
|
||||
|
||||
# NOTE: we preinstall lsb_release to ensure facter sets lsbdistcodename
|
||||
# NOTE: we preinstall lsb_release to ensure facter sets
|
||||
# lsbdistcodename
|
||||
yum install -y redhat-lsb-core git puppet
|
||||
|
||||
gem install hiera hiera-puppet
|
||||
@ -53,13 +53,31 @@ if cat /etc/*release | grep -e "Fedora" &> /dev/null; then
|
||||
mkdir -p /etc/puppet/modules/
|
||||
ln -s /usr/local/share/gems/gems/hiera-puppet-* /etc/puppet/modules/
|
||||
|
||||
# Puppet is expecting the command to be pip-python on Fedora
|
||||
# Puppet expects for an expects the command to be 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 -s /usr/bin/pip /usr/bin/pip-python
|
||||
}
|
||||
|
||||
elif cat /etc/*release | grep -e "CentOS" -e "Red Hat" &> /dev/null; then
|
||||
rpm -qi epel-release &> /dev/null || rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
|
||||
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-6.noarch.rpm
|
||||
function setup_puppet_rhel6 {
|
||||
local epel_pkg="http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"
|
||||
local puppet_pkg="http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-6.noarch.rpm"
|
||||
|
||||
# install EPEL
|
||||
rpm -qi epel-release &> /dev/null || rpm -Uvh $epel_pkg
|
||||
# NOTE: for RHEL (not CentOS) enable the optional-rpms channel (if
|
||||
# not already enabled)
|
||||
# yum-config-manager --enable rhel-6-server-optional-rpms
|
||||
|
||||
# NOTE: we preinstall lsb_release to ensure facter sets lsbdistcodename
|
||||
yum install -y redhat-lsb-core git puppet
|
||||
|
||||
rpm -ivh $puppet_pkg
|
||||
|
||||
# ensure we stick to supported puppet 2 versions
|
||||
cat > /etc/yum.repos.d/puppetlabs.repo <<"EOF"
|
||||
[puppetlabs-products]
|
||||
name=Puppet Labs Products El 6 - $basearch
|
||||
@ -71,14 +89,9 @@ exclude=puppet-2.8* puppet-2.9* puppet-3* facter-2*
|
||||
EOF
|
||||
|
||||
yum update -y
|
||||
# NOTE: enable the optional-rpms channel (if not already enabled)
|
||||
# yum-config-manager --enable rhel-6-server-optional-rpms
|
||||
|
||||
# NOTE: we preinstall lsb_release to ensure facter sets lsbdistcodename
|
||||
yum install -y redhat-lsb-core git puppet
|
||||
else
|
||||
#defaults to Ubuntu
|
||||
}
|
||||
|
||||
function setup_puppet_ubuntu {
|
||||
lsbdistcodename=`lsb_release -c -s`
|
||||
if [ $lsbdistcodename != 'trusty' ] ; then
|
||||
# NB: keep in sync with openstack_project/files/00-puppet.pref
|
||||
@ -105,4 +118,48 @@ EOF
|
||||
--assume-yes dist-upgrade
|
||||
DEBIAN_FRONTEND=noninteractive apt-get --option 'Dpkg::Options::=--force-confold' \
|
||||
--assume-yes install -y --force-yes puppet git $rubypkg
|
||||
}
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
python get-pip.py
|
||||
}
|
||||
|
||||
#
|
||||
# Install pip & puppet
|
||||
#
|
||||
|
||||
setup_pip
|
||||
|
||||
if is_fedora; then
|
||||
setup_puppet_fedora
|
||||
elif is_rhel6; then
|
||||
setup_puppet_rhel6
|
||||
elif is_ubuntu; then
|
||||
setup_puppet_ubuntu
|
||||
else
|
||||
echo "*** Can not setup puppet: distribution not recognized"
|
||||
exit 1
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user