127 lines
2.7 KiB
Bash
127 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
setup_encryption() {
|
|
|
|
sed -i 's/ENCRYPT/true/' group_vars/client.yml
|
|
pass_reprompt="1"
|
|
while [ pass_reprompt == 1 ]; do
|
|
printf 'Please enter a passphrase to use for your backup\n Password: '
|
|
read -s password1
|
|
printf '\nVerify Password: '
|
|
read -s password2
|
|
if [ "$password1" -eq "$password2" ]; then
|
|
pass_reprompt=0
|
|
else
|
|
printf 'Passwords do not match. Please try again\n'
|
|
fi
|
|
done
|
|
|
|
SECRET="---\\nbackup:\\n passphrase: '$password'\\n"
|
|
printf '%s' "$SECRET" | tee group_vars/secret.yml
|
|
|
|
}
|
|
|
|
setup_ssh() {
|
|
printf 'What is the IP or hostname of your remote backup?\n'
|
|
cont=0
|
|
while [ $cont != 1 ]; do
|
|
read -p "IP/hostname: " address
|
|
printf '\nIs %s correct? ' "$address"
|
|
read -p "[y/N]: " ans
|
|
case "$ans" in
|
|
[yY].*) cont=1
|
|
;;
|
|
*) cont=0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
cont=0
|
|
printf 'What is the backup location?\n'
|
|
while [ "$cont" != 1 ]; do
|
|
read -p "Absolute path: " path
|
|
printf '\nIs %s correct? ' "$path"
|
|
read -p "[y/N]: " ans
|
|
case "$ans" in
|
|
[yY].*) cont=1
|
|
;;
|
|
*) cont=0
|
|
esac
|
|
done
|
|
|
|
printf 's/REPO/ssh://backup@%s:%s/\n' "$address" "$path" > /tmp/backupssh.sed
|
|
|
|
sed -i -s /tmp/backupssh.sed group_vars/client.yml
|
|
rm /tmp/backupssh.sed
|
|
|
|
}
|
|
|
|
|
|
setup_remote() {
|
|
case "$1" in
|
|
"ssh") setup_ssh
|
|
;;
|
|
"local") setup_local
|
|
;;
|
|
*)
|
|
printf 'Error in setup_remote()\n'
|
|
printf 'Case %s not understood\n' "$1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
setup_environment() {
|
|
printf 'Setting up environment...\n'
|
|
printf 'What is your backup location?\n'
|
|
printf '0: cancel\n'
|
|
printf '1: ssh\n'
|
|
printf '2: local\n'
|
|
read -p "(0-2)" ans
|
|
case "$ans" in
|
|
"0") printf 'Cancelling...\n' && exit
|
|
;;
|
|
"1") setup_remote "ssh"
|
|
;;
|
|
"2") setup_remote "local"
|
|
;;
|
|
*) printf 'Answer not understood. Please rerun this script' && exit
|
|
;;
|
|
esac
|
|
|
|
read -p "Would you like to set up encryption? [y/N]" ans
|
|
case "$ans" in
|
|
[yY].*) setup_encryption
|
|
;;
|
|
*) sed -i 's/ENCRYPT/false/' group_vars/client.yml
|
|
;;
|
|
esac
|
|
|
|
printf 'Would you like to set up a "reserve" file?\n'
|
|
printf 'This file will be an empty file 50GB in size\n'
|
|
printf 'that you can delete to free up space should you run out.\n\n'
|
|
printf 'This is highly recommended\n'
|
|
|
|
read -p "Setup Reserved Space [Y/n]: " reserved
|
|
case "$reserved" in
|
|
[nN].*) sed -i 's/ALLOCATE/true/' group_vars/client.yml
|
|
;;
|
|
*) sed -i 's/ALLOCATE/false/' group_vars/client.yml
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
printf 'The setup will now install required packages\n'
|
|
printf 'You will be prompted for your sudo password\n'
|
|
|
|
sudo dnf install -y ansible ansible-playbook
|
|
|
|
read -p "Would you like to set up the environment files?: [Y/n]: " ans
|
|
|
|
case $ans in
|
|
[yY].*) setup_environment
|
|
;;
|
|
*) printf 'No environment set up. You will need to do this manually\n'
|
|
;;
|
|
esac
|