|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +ROLE="${1:-db}" |
| 5 | + |
| 6 | +echo "[jepsen] provisioning role=${ROLE}" |
| 7 | +sudo apt-get update -y |
| 8 | +sudo apt-get install -y --no-install-recommends \ |
| 9 | + curl netcat-openbsd rsync iptables chrony libfaketime \ |
| 10 | + openjdk-17-jre-headless leiningen git build-essential jq |
| 11 | + |
| 12 | +sudo systemctl enable --now chrony |
| 13 | + |
| 14 | +# Append Jepsen nodes to /etc/hosts if not already present |
| 15 | +if ! grep -q "192.168.56.10 ctrl" /etc/hosts; then |
| 16 | +cat <<'EOF' | sudo tee -a /etc/hosts >/dev/null |
| 17 | +
|
| 18 | +# Jepsen Cluster |
| 19 | +192.168.56.10 ctrl |
| 20 | +192.168.56.11 n1 |
| 21 | +192.168.56.12 n2 |
| 22 | +192.168.56.13 n3 |
| 23 | +192.168.56.14 n4 |
| 24 | +192.168.56.15 n5 |
| 25 | +EOF |
| 26 | +fi |
| 27 | + |
| 28 | +install -d -m700 /home/vagrant/.ssh |
| 29 | +if [ "$ROLE" = "ctrl" ]; then |
| 30 | + GO_VERSION=1.25.5 |
| 31 | + ARCH=$(dpkg --print-architecture) |
| 32 | + if [ "$ARCH" = "arm64" ]; then |
| 33 | + GO_ARCH="arm64" |
| 34 | + else |
| 35 | + GO_ARCH="amd64" |
| 36 | + fi |
| 37 | + |
| 38 | + if ! command -v go >/dev/null 2>&1 || [[ "$(go version | awk '{print $3}')" != "go${GO_VERSION}" ]]; then |
| 39 | + echo "[jepsen] installing go ${GO_VERSION} for ${GO_ARCH}" |
| 40 | + curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-${GO_ARCH}.tar.gz" -o /tmp/go.tar.gz |
| 41 | + sudo rm -rf /usr/local/go |
| 42 | + sudo tar -C /usr/local -xzf /tmp/go.tar.gz |
| 43 | + fi |
| 44 | + echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' | sudo tee /etc/profile.d/go.sh >/dev/null |
| 45 | + |
| 46 | + if [ ! -f /home/vagrant/.ssh/id_rsa ]; then |
| 47 | + cat <<'KEY' > /home/vagrant/.ssh/id_rsa |
| 48 | +-----BEGIN RSA PRIVATE KEY----- |
| 49 | +MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI |
| 50 | +w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP |
| 51 | +kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2 |
| 52 | +hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO |
| 53 | +Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW |
| 54 | +yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd |
| 55 | +ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1 |
| 56 | +Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf |
| 57 | +TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK |
| 58 | +iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A |
| 59 | +sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf |
| 60 | +4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP |
| 61 | +cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk |
| 62 | +EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN |
| 63 | +CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX |
| 64 | +3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG |
| 65 | +YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj |
| 66 | +3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+ |
| 67 | +dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz |
| 68 | +6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC |
| 69 | +P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF |
| 70 | +llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ |
| 71 | +kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH |
| 72 | ++vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ |
| 73 | +NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s= |
| 74 | +-----END RSA PRIVATE KEY----- |
| 75 | +KEY |
| 76 | + chmod 600 /home/vagrant/.ssh/id_rsa |
| 77 | + chown vagrant:vagrant /home/vagrant/.ssh/id_rsa |
| 78 | + fi |
| 79 | + cat <<'EOF' > /home/vagrant/.ssh/config |
| 80 | +Host n1 n2 n3 n4 n5 |
| 81 | + User vagrant |
| 82 | + IdentityFile /home/vagrant/.ssh/id_rsa |
| 83 | + StrictHostKeyChecking no |
| 84 | + UserKnownHostsFile /dev/null |
| 85 | + LogLevel QUIET |
| 86 | +EOF |
| 87 | + chown vagrant:vagrant /home/vagrant/.ssh/config |
| 88 | +fi |
| 89 | + |
| 90 | +# authorize the same key on all nodes |
| 91 | +cat <<'PUB' >> /home/vagrant/.ssh/authorized_keys |
| 92 | +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDo0XyJqWW9BWnbZYOROSyu2+n15ZbrgPGFa/pM+E4xmHu4B8yMPp4jbWRhR8w/Pr9SNmCeqF3r3LdWHktKPR2cjduPaoAoM1BbXTii7+iHnaZaqD5HJhXQhr3Y+QQOjcYVMFyQU8hMAzMF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key |
| 93 | +PUB |
| 94 | +chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys |
| 95 | +chmod 600 /home/vagrant/.ssh/authorized_keys |
| 96 | + |
| 97 | +sudo mkdir -p /opt/elastickv/bin /var/lib/elastickv |
0 commit comments