-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.bash
More file actions
77 lines (60 loc) · 2 KB
/
setup.bash
File metadata and controls
77 lines (60 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env bash
set -e
SCRIPT_DIR=$(readlink -f "$(dirname "$0")")
AVAILABLE_PLAYBOOKS=$(find "$SCRIPT_DIR/playbooks" -maxdepth 1 -type f -name "*.yaml" -exec basename {} \; | sort)
# List of default playbook
DEFAULT_PLAYBOOKS="00-common.yaml"
echo -e "\e[36mInstalling dependencies...\e[m"
# Install sudo
if ! (command -v sudo >/dev/null 2>&1); then
apt-get -y update
apt-get -y install sudo
fi
# Install git
if ! (command -v git >/dev/null 2>&1); then
sudo apt-get -y update
sudo apt-get -y install git
fi
# Install whiptail
if ! (command -v whiptail >/dev/null 2>&1); then
sudo apt-get -y update
sudo apt-get -y install whiptail
fi
# Install pip for ansible
if ! (python3 -m pip --version >/dev/null 2>&1); then
sudo apt-get -y update
sudo apt-get -y install python3-pip python3-venv
fi
# Install pipx for ansible
if ! (python3 -m pipx --version >/dev/null 2>&1); then
sudo apt-get -y update
sudo apt-get install -y pipx
fi
# Install ansible
python3 -m pipx ensurepath
export PATH="${PIPX_BIN_DIR:=$HOME/.local/bin}:$PATH"
pipx install --include-deps --force "ansible==8.*"
# Create map for default selected playbook
declare -A PLAYBOOK_MAP
for playbook in $AVAILABLE_PLAYBOOKS; do
PLAYBOOK_MAP[$playbook]="0"
done
for playbook in $DEFAULT_PLAYBOOKS; do
PLAYBOOK_MAP[$playbook]="1"
done
# Collect playbook names with whiptail
PLAYBOOKS=$(whiptail --title "Select Playbook" --checklist "Choose a playbook to run:" 15 60 6 \
$(for playbook in $AVAILABLE_PLAYBOOKS; do echo $playbook $playbook "${PLAYBOOK_MAP[$playbook]}"; done) 3>&1 1>&2 2>&3)
echo -e "\e[36mRunning playbook: $PLAYBOOKS\e[m"
# Import env
ansible_args=("--ask-become-pass")
source amd64.env
for env_name in $(sed -e "s/^\s*//" -e "/^#/d" -e "s/=.*//" <amd64.env); do
ansible_args+=("--extra-vars" "${env_name}=${!env_name}")
done
for playbook in $PLAYBOOKS; do
ansible_args+=("$SCRIPT_DIR/playbooks/${playbook//\"/}")
done
# Run ansible
ansible-playbook "${ansible_args[@]}"
echo -e "\e[36mDone!\e[m"