deploy-templates/aws/scripts/backup_and_migrate.tpl (85 lines of code) (raw):

#!/usr/bin/env bash USER="vault" GROUP="vault" logger "Mount ebs volume ${vault_volume_mount_path} into ${vault_local_mount_path}" VAULT_VOLUME_FS=`blkid -o value -s TYPE ${vault_volume_mount_path}` if [[ -z $${VAULT_VOLUME_FS} ]] ; then if cat /etc/fstab | grep "${vault_volume_mount_path} ${vault_local_mount_path}" > /dev/null ; then logger "The volume ${vault_volume_mount_path} already mounted to ${vault_local_mount_path}. No formating required." else logger "Formating the volume ${vault_volume_mount_path}." sudo mkfs.xfs ${vault_volume_mount_path} fi fi if [[ -d ${vault_local_mount_path} ]] ; then logger "The mount point directory ${vault_local_mount_path} already exist" else logger "Creating mount point directory ${vault_local_mount_path}" sudo mkdir -p ${vault_local_mount_path} fi # check if exist in fstab and then mount if not already mounted if cat /etc/fstab | grep ${vault_volume_mount_path}; then logger "Device ${vault_volume_mount_path} is present in /etc/fstab" else logger "Adding ${vault_volume_mount_path} to /etc/fstab" echo "${vault_volume_mount_path} ${vault_local_mount_path} xfs defaults 0 0" | sudo tee -a /etc/fstab fi if mount | grep ${vault_volume_mount_path} ; then logger "Mounting point ${vault_volume_mount_path} is already mounted" else logger "Mounting ${vault_local_mount_path}" sudo mount ${vault_local_mount_path} || logger "Mounting volume ${vault_volume_mount_path} to point ${vault_local_mount_path} has been failed" sudo chown $${USER}:$${GROUP} ${vault_local_mount_path} fi logger "Lookup vault token" if [[ -f /opt/vault/token ]] ; then logger "The Vault is already initialized" if ! [[ -d "${vault_local_mount_path}/backup" ]] ; then sudo mkdir -p "${vault_local_mount_path}/backup" logger "Backuping direcotry /etc/vault.d" sudo cp -rp /etc/vault.d "${vault_local_mount_path}/backup/" logger "Backuping direcotry /opt/vault" sudo cp -rp /opt/vault "${vault_local_mount_path}/backup/" logger "Backuping direcotry /etc/letsencrypt" sudo cp -rp /etc/letsencrypt "${vault_local_mount_path}/backup/" else if ! [[ -d ${vault_local_mount_path}/backup/vault.d ]] ; then logger "Backuping direcotry /etc/vault.d" sudo cp -rp /etc/vault.d "${vault_local_mount_path}/backup/" fi if ! [[ -d ${vault_local_mount_path}/backup/vault ]] ; then logger "Backuping direcotry /opt/vault" sudo cp -rp /opt/vault "${vault_local_mount_path}/backup/" fi if ! [[ -d ${vault_local_mount_path}/backup/letsencrypt ]] ; then logger "Backuping direcotry /opt/vault" sudo cp -rp /etc/letsencrypt "${vault_local_mount_path}/backup/" fi fi if [[ -f "${vault_local_mount_path}/vault/token" ]] && $(grep -E "^path = \"${vault_local_mount_path}/vault\"$" /etc/vault.d/vault.hcl) && $(systemctl is-active vault) ; then logger "Vault is pointed to EBS" else logger "Moving vault data from /opt/vault to ebs mount point ${vault_local_mount_path}/vault" sudo cp -rp /opt/vault "${vault_local_mount_path}/" logger "Updating /etc/vault.d/vault.hcl" sudo chmod 666 /etc/vault.d/vault.hcl \ && sudo cat << EOF > /etc/vault.d/vault.hcl storage "file" { path = "${vault_local_mount_path}/vault" } listener "tcp" { address = "0.0.0.0:8200" tls_disable = 1 } seal "awskms" { region = "${aws_region}" kms_key_id = "${kms_key}" } ui=true EOF sudo chown -R $${USER}:$${GROUP} /etc/vault.d sudo chmod -R 0644 /etc/vault.d/* sudo systemctl daemon-reload sudo systemctl restart vault fi fi