88 lines
3.0 KiB
Bash
Executable File
88 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Creates a local repo for storing group_vars/files/inventories, with this
|
|
# project as a submodule.
|
|
|
|
echo "This script will create a new repository for storing your local modifications"
|
|
echo "and configurations. It will then include the pvc-ansible and pvc-installer "
|
|
echo "repositories as submodules for ease of updating and management."
|
|
echo
|
|
|
|
echo -n "Absolute path to new repository ('~', '\$HOME', etc. are NOT supported): "
|
|
read target_path
|
|
echo
|
|
|
|
echo "Creating new repo at ${target_path}..."
|
|
mkdir -p ${target_path}
|
|
pushd ${target_path}
|
|
git init .
|
|
|
|
echo "Adding submodules..."
|
|
git submodule add https://github.com/parallelvirtualcluster/pvc-ansible
|
|
git submodule add https://github.com/parallelvirtualcluster/pvc-installer
|
|
|
|
echo "Creating directories and symlinks..."
|
|
mkdir files group_vars roles
|
|
ln -s ../pvc-ansible/files/default files/default
|
|
ln -s ../pvc-ansible/group_vars/default group_vars/default
|
|
ln -s ../pvc-ansible/roles/base roles/base
|
|
ln -s ../pvc-ansible/roles/pvc roles/pvc
|
|
ln -s files ceph
|
|
cp -r pvc-ansible/oneshot oneshot
|
|
cp pvc-ansible/pvc.yml .
|
|
cp pvc-ansible/clusters.yml .
|
|
if [[ ! -d files/default ]]; then
|
|
cp -r pvc-ansible/files/default files/
|
|
fi
|
|
touch hosts
|
|
cat <<EOF >update-remote.sh
|
|
#!/usr/bin/env bash
|
|
|
|
# Updates the local copy of pvc-ansible
|
|
|
|
set -o errexit
|
|
|
|
pushd pvc-ansible
|
|
git pull --rebase
|
|
git checkout master
|
|
popd
|
|
|
|
pushd pvc-installer
|
|
git pull --rebase
|
|
git checkout master
|
|
popd
|
|
|
|
git add pvc-ansible pvc-installer
|
|
git commit -m "Update submodules from upstream"
|
|
EOF
|
|
chmod +x update-remote.sh
|
|
|
|
echo "Adding and performing initial commit..."
|
|
git add .
|
|
git commit -m "Initial commit of new repository"
|
|
|
|
popd
|
|
|
|
echo
|
|
echo -e "Success: your new repository has been created at ${target_path}."
|
|
echo -e "* You no longer need this copy of the repository and may delete it."
|
|
echo -e "* You may edit the initial commit message and author details with the command:"
|
|
echo -e " git commit --amend"
|
|
echo -e " inside the new repository."
|
|
echo -e "* You will need to add a 'git remote' in order to push the new repository."
|
|
echo -e "* A copy of the file 'pvc.yml' has been made there, as well as your own 'roles/'"
|
|
echo -e " directory, so you may add your own roles and customizations to these files"
|
|
echo -e " if you so desire."
|
|
echo -e "* An empty 'hosts' inventory along with empty 'group_vars' and 'files'"
|
|
echo -e " directories have also been prepared; edit these as required."
|
|
echo -e "* You may use the 'update-remote.sh' script in this new repository to keep your"
|
|
echo -e " copy of pvc-ansible updated, or use normal git commands to do so."
|
|
echo -e "* IMPORTANT: Whenever Ansible creates a new cluster, or if you do so manually,"
|
|
echo -e " you must move the files from 'pvc-ansible/files/' to 'files/', AND replace"
|
|
echo -e " them with a symlink like so:"
|
|
echo -e " cd pvc-ansible/files/"
|
|
echo -e " mv cluster ../../files/"
|
|
echo -e " ln -s ../../files/cluster"
|
|
echo -e " If you do not do so, the files will not be committed and future runs of the"
|
|
echo -e " playbooks will not work properly due to how Ansible looks up files."
|