github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/e2e/terraform/packer/ubuntu-bionic-amd64/setup.sh (about) 1 #!/bin/bash 2 # setup script for Ubuntu Linux 18.04. Assumes that Packer has placed 3 # build-time config files at /tmp/linux 4 5 set -e 6 7 # Will be overwritten at test time with the version specified 8 NOMADVERSION=0.12.7 9 CONSULVERSION=1.9.0 10 VAULTVERSION=1.5.4 11 12 NOMAD_PLUGIN_DIR=/opt/nomad/plugins/ 13 14 mkdir_for_root() { 15 sudo mkdir -p "$1" 16 sudo chmod 755 "$1" 17 } 18 19 # Disable interactive apt prompts 20 export DEBIAN_FRONTEND=noninteractive 21 echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections 22 23 sudo mkdir -p /ops/shared 24 sudo chown -R ubuntu:ubuntu /ops/shared 25 26 mkdir_for_root /opt 27 mkdir_for_root /srv/data # for host volumes 28 29 # Dependencies 30 sudo apt-get update 31 sudo apt-get upgrade -y 32 sudo apt-get install -y \ 33 software-properties-common \ 34 dnsmasq unzip tree redis-tools jq curl tmux awscli nfs-common \ 35 apt-transport-https ca-certificates gnupg2 36 37 # Install sockaddr 38 aws s3 cp "s3://nomad-team-dev-test-binaries/tools/sockaddr_linux_amd64" /tmp/sockaddr 39 sudo mv /tmp/sockaddr /usr/local/bin 40 sudo chmod +x /usr/local/bin/sockaddr 41 sudo chown root:root /usr/local/bin/sockaddr 42 43 # Disable the firewall 44 sudo ufw disable || echo "ufw not installed" 45 46 echo "Install Consul" 47 curl -fsL -o /tmp/consul.zip \ 48 "https://releases.hashicorp.com/consul/${CONSULVERSION}/consul_${CONSULVERSION}_linux_amd64.zip" 49 sudo unzip -q /tmp/consul.zip -d /usr/local/bin 50 sudo chmod 0755 /usr/local/bin/consul 51 sudo chown root:root /usr/local/bin/consul 52 53 echo "Configure Consul" 54 mkdir_for_root /etc/consul.d 55 mkdir_for_root /opt/consul 56 sudo mv /tmp/linux/consul.service /etc/systemd/system/consul.service 57 58 echo "Install Vault" 59 curl -fsL -o /tmp/vault.zip \ 60 "https://releases.hashicorp.com/vault/${VAULTVERSION}/vault_${VAULTVERSION}_linux_amd64.zip" 61 sudo unzip -q /tmp/vault.zip -d /usr/local/bin 62 sudo chmod 0755 /usr/local/bin/vault 63 sudo chown root:root /usr/local/bin/vault 64 65 echo "Configure Vault" 66 mkdir_for_root /etc/vault.d 67 mkdir_for_root /opt/vault 68 sudo mv /tmp/linux/vault.service /etc/systemd/system/vault.service 69 70 sudo setcap cap_ipc_lock=+ep /usr/local/bin/vault 71 sudo useradd --system --home /etc/vault.d --shell /bin/false vault 72 73 echo "Configure Nomad" 74 mkdir_for_root /etc/nomad.d 75 mkdir_for_root /opt/nomad 76 mkdir_for_root $NOMAD_PLUGIN_DIR 77 sudo mv /tmp/linux/nomad.service /etc/systemd/system/nomad.service 78 79 echo "Install Nomad" 80 sudo mv /tmp/linux/provision.sh /opt/provision.sh 81 sudo chmod +x /opt/provision.sh 82 /opt/provision.sh --nomad_version $NOMADVERSION --nostart 83 84 echo "Installing third-party apt repositories" 85 86 # Docker 87 distro=$(lsb_release -si | tr '[:upper:]' '[:lower:]') 88 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 89 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/${distro} $(lsb_release -cs) stable" 90 91 # Java 92 sudo add-apt-repository -y ppa:openjdk-r/ppa 93 94 # Podman 95 . /etc/os-release 96 curl -fsSL "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add - 97 sudo add-apt-repository "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" 98 99 sudo apt-get update 100 101 echo "Installing Docker" 102 sudo apt-get install -y docker-ce 103 104 echo "Installing Java" 105 sudo apt-get install -y openjdk-14-jdk-headless 106 107 echo "Installing CNI plugins" 108 sudo mkdir -p /opt/cni/bin 109 wget -q -O - \ 110 https://github.com/containernetworking/plugins/releases/download/v0.9.0/cni-plugins-linux-amd64-v0.9.0.tgz \ 111 | sudo tar -C /opt/cni/bin -xz 112 113 echo "Installing Podman" 114 sudo apt-get -y install podman 115 116 # get catatonit (to check podman --init switch) 117 wget -q -P /tmp https://github.com/openSUSE/catatonit/releases/download/v0.1.4/catatonit.x86_64 118 mkdir -p /usr/libexec/podman 119 sudo mv /tmp/catatonit* /usr/libexec/podman/catatonit 120 sudo chmod +x /usr/libexec/podman/catatonit 121 122 echo "Installing latest podman task driver" 123 # install nomad-podman-driver and move to plugin dir 124 latest_podman=$(curl -s https://releases.hashicorp.com/nomad-driver-podman/index.json | jq --raw-output '.versions |= with_entries(select(.key|match("^\\d+\\.\\d+\\.\\d+$"))) | .versions | keys[]' | sort -rV | head -n1) 125 126 wget -q -P /tmp "https://releases.hashicorp.com/nomad-driver-podman/${latest_podman}/nomad-driver-podman_${latest_podman}_linux_amd64.zip" 127 sudo unzip -q "/tmp/nomad-driver-podman_${latest_podman}_linux_amd64.zip" -d "$NOMAD_PLUGIN_DIR" 128 sudo chmod +x "${NOMAD_PLUGIN_DIR}/nomad-driver-podman" 129 130 # enable varlink socket (not included in ubuntu package) 131 sudo mv /tmp/linux/io.podman.service /etc/systemd/system/io.podman.service 132 sudo mv /tmp/linux/io.podman.socket /etc/systemd/system/io.podman.socket 133 134 echo "Configuring dnsmasq" 135 136 # disable systemd-resolved and configure dnsmasq to forward local requests to 137 # consul. the resolver files need to dynamic configuration based on the VPC 138 # address and docker bridge IP, so those will be rewritten at boot time. 139 sudo systemctl disable systemd-resolved.service 140 sudo mv /tmp/linux/dnsmasq /etc/dnsmasq.d/default 141 sudo chown root:root /etc/dnsmasq.d/default 142 143 # this is going to be overwritten at provisioning time, but we need something 144 # here or we can't fetch binaries to do the provisioning 145 echo 'nameserver 8.8.8.8' > /tmp/resolv.conf 146 sudo mv /tmp/resolv.conf /etc/resolv.conf 147 148 sudo mv /tmp/linux/dnsmasq.service /etc/systemd/system/dnsmasq.service 149 sudo mv /tmp/linux/dnsconfig.sh /usr/local/bin/dnsconfig.sh 150 sudo chmod +x /usr/local/bin/dnsconfig.sh 151 sudo systemctl daemon-reload 152 153 echo "Updating boot parameters" 154 155 # enable cgroup_memory and swap 156 sudo sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& cgroup_enable=memory swapaccount=1/' /etc/default/grub 157 sudo update-grub 158 159 echo "Configuring user shell" 160 sudo tee -a /home/ubuntu/.bashrc << 'EOF' 161 IP_ADDRESS=$(/usr/local/bin/sockaddr eval 'GetPrivateIP') 162 export CONSUL_RPC_ADDR=$IP_ADDRESS:8400 163 export CONSUL_HTTP_ADDR=$IP_ADDRESS:8500 164 export VAULT_ADDR=http://$IP_ADDRESS:8200 165 export NOMAD_ADDR=http://$IP_ADDRESS:4646 166 export JAVA_HOME=/usr/lib/jvm/java-14-openjdk-amd64/bin 167 168 EOF