Use username and password from "os" in nodes.json
[icn.git] / env / metal3 / 01_install_package.sh
1 #!/usr/bin/env bash
2 set -eux -o pipefail
3
4 LIBDIR="$(dirname "$PWD")"
5
6 source $LIBDIR/lib/common.sh
7 source $LIBDIR/lib/logging.sh
8
9 if [[ $EUID -ne 0 ]]; then
10     echo "This script must be run as root"
11     exit 1
12 fi
13
14 function install_essential_packages {
15     apt-get update
16     apt-get -y install \
17     crudini \
18     curl \
19     dnsmasq \
20     figlet \
21     nmap \
22     patch \
23     psmisc \
24     python-pip \
25     python-requests \
26     python-setuptools \
27     vim \
28     wget \
29     git \
30     software-properties-common \
31     bridge-utils
32
33     add-apt-repository -y ppa:longsleep/golang-backports
34     apt-get update
35     apt-get install golang-go -y
36 }
37
38 function install_ironic_packages {
39     apt-get update
40     apt-get -y install \
41     jq \
42     nodejs \
43     python-ironicclient \
44     python-ironic-inspector-client \
45     python-lxml \
46     python-netaddr \
47     python-openstackclient \
48     unzip \
49     genisoimage \
50     whois
51
52     if [ "$1" == "offline" ]; then
53     pip install --no-index
54         --find-links=file:$PIP_CACHE_DIR locat yq
55     return
56     fi
57
58     pip install \
59     lolcat \
60     yq
61 }
62
63 function install_docker_packages {
64     apt-get remove docker \
65     docker-engine \
66     docker.io \
67     containerd \
68     runc
69     apt-get update
70     apt-get -y install \
71     apt-transport-https \
72     ca-certificates \
73     curl \
74     gnupg-agent \
75     software-properties-common
76     if [ "$1" != "offline" ]; then
77     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
78     add-apt-repository \
79         "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
80         $(lsb_release -cs) \
81         stable"
82     apt-get update
83     fi
84     apt-get -y install docker-ce=18.06.0~ce~3-0~ubuntu
85 }
86
87 function install_podman_packages {
88     if [ "$1" != "offline" ]; then
89         add-apt-repository -y ppa:projectatomic/ppa
90     apt-get update
91     fi
92     apt-get -y install podman
93 }
94
95 function install_kubernetes_packages {
96     if [ "$1" != "offline" ]; then
97     curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
98     bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
99 deb https://apt.kubernetes.io/ kubernetes-xenial main
100 EOF'
101     apt-get update
102     fi
103     apt-get install -y kubelet=1.15.0-00 kubeadm=1.15.0-00 kubectl=1.15.0-00
104     apt-mark hold kubelet kubeadm kubectl
105 }
106
107 install() {
108     install_essential_packages
109     install_ironic_packages $1
110
111     #install_docker_packages $1
112     #install_podman_packages $1
113     #install_kubernetes_packages $1
114 }
115
116 if [ "$#" -eq 0 ]; then
117     install online
118 elif [ "$1" == "-o" ]; then
119     install offline
120 else
121     exit 1
122 fi