fc1974dec207a4614695d85474966090366877b5
[icn.git] / deploy / metal3-vm / ubuntu_install_requirements.sh
1 #!/usr/bin/env bash
2 set -eux -o pipefail
3
4 # shellcheck disable=SC1091
5 source lib/logging.sh
6 # shellcheck disable=SC1091
7 source lib/common.sh
8
9 # sudo apt install -y libselinux-utils
10 # if selinuxenabled ; then
11 #     sudo setenforce permissive
12 #     sudo sed -i "s/=enforcing/=permissive/g" /etc/selinux/config
13 # fi
14
15 # Update to latest packages first
16 sudo apt -y update
17
18 # Install EPEL required by some packages
19 # if [ ! -f /etc/yum.repos.d/epel.repo ] ; then
20 #     if grep -q "Red Hat Enterprise Linux" /etc/redhat-release ; then
21 #         sudo yum -y install http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-11.noarch.rpm
22 #     else
23 #         sudo yum -y install epel-release --enablerepo=extras
24 #     fi
25 # fi
26
27 # Work around a conflict with a newer zeromq from epel
28 # if ! grep -q zeromq /etc/yum.repos.d/epel.repo; then
29 #   sudo sed -i '/enabled=1/a exclude=zeromq*' /etc/yum.repos.d/epel.repo
30 # fi
31
32 # Install required packages
33
34 sudo apt -y install \
35   crudini \
36   curl \
37   dnsmasq \
38   figlet \
39   golang \
40   zlib1g-dev \
41   libssl1.0-dev \
42   nmap \
43   patch \
44   psmisc \
45   python-pip \
46   wget
47
48
49
50 # Install pyenv
51
52 if [[  $(cat ~/.bashrc) != *PYENV_ROOT* ]]; then
53   if ! [ -d "$HOME/.pyenv" ] ; then
54      git clone git://github.com/yyuu/pyenv.git ~/.pyenv
55   fi
56   # shellcheck disable=SC2016
57   # shellcheck disable=SC2129
58   echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
59   # shellcheck disable=SC2016
60   echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
61   # shellcheck disable=SC2016
62   echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
63 fi
64
65 if [[ $PATH != *pyenv* ]]; then
66   export PYENV_ROOT="$HOME/.pyenv"
67   export PATH="$PYENV_ROOT/bin:$PATH"
68   if command -v pyenv 1>/dev/null 2>&1; then
69     eval "$(pyenv init -)"
70   fi
71 fi
72
73 pyenv install -s 2.7.18
74 pyenv versions
75 pyenv global 2.7.18
76 # There are some packages which are newer in the tripleo repos
77
78 # Setup yarn and nodejs repositories
79 #sudo curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
80 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
81 #curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
82 echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
83
84 # Add this repository to install podman
85 sudo add-apt-repository -y ppa:projectatomic/ppa
86 # Add this repository to install Golang 1.12
87 sudo add-apt-repository -y ppa:longsleep/golang-backports
88
89 # Update some packages from new repos
90 sudo apt -y update
91
92 # make sure additional requirments are installed
93
94 ##No bind-utils. It is for host, nslookop,..., no need in ubuntu
95 sudo apt -y install \
96   jq \
97   libguestfs-tools \
98   nodejs \
99   qemu-kvm \
100   libvirt-bin libvirt-clients libvirt-dev \
101   python-ironicclient \
102   python-ironic-inspector-client \
103   golang-go \
104   python-lxml \
105   unzip \
106   yarn \
107   genisoimage
108
109
110 if [[ "${CONTAINER_RUNTIME}" == "podman" ]]; then
111   sudo apt -y install podman
112 else
113   sudo apt -y install \
114     apt-transport-https \
115     ca-certificates \
116     gnupg-agent \
117     software-properties-common
118   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
119   sudo add-apt-repository \
120     "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
121     $(lsb_release -cs) \
122     stable"
123   sudo apt update
124   sudo apt install -y docker-ce docker-ce-cli containerd.io
125   sudo systemctl start docker
126 fi
127
128 # Install python packages not included as rpms
129 sudo pip install \
130   ansible==2.8.2 \
131   lolcat \
132   yq \
133   virtualbmc==1.6.0 \
134   python-ironicclient \
135   python-ironic-inspector-client \
136   lxml \
137   netaddr \
138   requests \
139   setuptools \
140   libvirt-python==5.7.0 \