| #!/bin/bash |
| |
| # vim: ts=4 sw=4 sts=4 et tw=72 : |
| |
| # force any errors to cause the script and job to end in failure |
| set -xeu -o pipefail |
| |
| rh_systems() { |
| # Install python dependencies |
| yum install -y python-{devel,virtualenv,setuptools,pip} |
| |
| # Build dependencies for Python packages |
| yum install -y openssl-devel mysql-devel gcc |
| |
| # Autorelease support packages |
| yum install -y firefox python-tox xmlstarlet xvfb crudini maven |
| |
| # Install chrome to support ChromeDriver |
| cat << EOF > /etc/yum.repos.d/google-chrome.repo |
| [google-chrome] |
| name=google-chrome - \$basearch |
| baseurl=http://dl.google.com/linux/chrome/rpm/stable/\$basearch |
| enabled=1 |
| gpgcheck=1 |
| gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub |
| EOF |
| |
| yum -y update |
| yum -y install google-chrome-stable |
| |
| # Additional libraries for Python ncclient |
| yum install -y libxml2 libxslt libxslt-devel libffi libffi-devel |
| |
| # Packer builds happen from the centos flavor images |
| PACKERDIR=$(mktemp -d) |
| # disable double quote checking |
| # shellcheck disable=SC2086 |
| cd $PACKERDIR |
| wget https://releases.hashicorp.com/packer/0.12.2/packer_0.12.2_linux_amd64.zip |
| unzip packer_0.12.2_linux_amd64.zip -d /usr/local/bin/ |
| # rename packer to avoid conflicts with cracklib |
| mv /usr/local/bin/packer /usr/local/bin/packer.io |
| |
| # cleanup from the installation |
| # disable double quote checking |
| # shellcheck disable=SC2086 |
| rm -rf $PACKERDIR |
| # cleanup from previous install process |
| if [ -d /tmp/packer ] |
| then |
| rm -rf /tmp/packer |
| fi |
| } |
| |
| ubuntu_systems() { |
| # Install python3.6 |
| sudo add-apt-repository -y ppa:jonathonf/python-3.6 |
| sudo apt-get update |
| sudo apt-get install -y python3.6 python3.6-dev |
| |
| # Install python dependencies |
| apt-get install -y python-{dev,virtualenv,setuptools,pip} |
| |
| # Build dependencies for Python packages |
| apt-get install -y libssl-dev libmysqlclient-dev gcc |
| |
| # Autorelease support packages |
| apt-get install -y firefox python-tox xmlstarlet xvfb crudini maven |
| |
| # Install chrome to support ChromeDriver |
| wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - |
| echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list |
| apt-get update -y |
| apt-get install -y google-chrome-stable |
| |
| # Additional libraries for Python ncclient |
| apt-get install -y wget unzip python-ncclient |
| |
| # Add graphviz for documentation building |
| apt-get install -y graphviz |
| |
| # Erlang and Rebar packages needed for DCAEGEN2 |
| apt-get install -y libwxgtk3.0-0v5 libsctp1 |
| wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.3.6-1~ubuntu~trusty_amd64.deb |
| dpkg -i esl-erlang_19.3.6-1~ubuntu~trusty_amd64.deb |
| apt-get install -y libwxbase3.0-0v5 |
| apt-get -f install -y |
| git clone https://github.com/erlang/rebar3.git |
| cd rebar3 |
| ./bootstrap |
| mv rebar3 /usr/bin/rebar3 |
| cd .. |
| } |
| |
| all_systems() { |
| echo 'No common distribution configuration to perform' |
| } |
| |
| echo "---> Detecting OS" |
| ORIGIN=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') |
| |
| case "${ORIGIN}" in |
| fedora|centos|redhat) |
| echo "---> RH type system detected" |
| rh_systems |
| ;; |
| ubuntu) |
| echo "---> Ubuntu system detected" |
| ubuntu_systems |
| ;; |
| *) |
| echo "---> Unknown operating system" |
| ;; |
| esac |
| |
| # execute steps for all systems |
| all_systems |