Permalink
Browse files

Add first iteration of the debops-install script

  • Loading branch information...
drybjed committed Sep 7, 2014
1 parent acd6bf9 commit 69fd813993f8367f4bb3158bc92deb52775d1789
Showing with 120 additions and 1 deletion.
  1. +6 −1 CHANGELOG.md
  2. +114 −0 bin/debops-install
@@ -1,11 +1,16 @@
## DebOps Changelog
Welcome... to the Real World.
### v0.0.0 (prerelease pending)
***
##### 2014-09-07
* First iteration of the `debops-install` script.
* First iteration of the `debops-init` script.
##### 2014-09-01
We are starting the main project repository anew! The old `ginas/ginas`
@@ -0,0 +1,114 @@
#!/bin/bash
# debops-install: install DebOps playbooks and roles
# Copyright (C) 2014 Maciej Delmanowski <drybjed@gmail.com>
# Part of the DebOps project - http://debops.org/
# This program is free software; you can redistribute
# it and/or modify it under the terms of the
# GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License,
# or (at your option) any later version.
#
# This program is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General
# Public License along with this program; if not,
# write to the Free Software Foundation, Inc., 59
# Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# An on-line copy of the GNU General Public License can
# be downloaded from the FSF web page at:
# http://www.gnu.org/copyleft/gpl.html
# This is an installer script which should download DebOps playbooks and roles
# to user $HOME directory if they are not found either in directory relative to
# $PWD or DebOps is not installed system-wide.
set -e
# ---- Variable definitions ----
# Set some global constants
declare -r DEBOPS_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/debops"
declare -r DEBOPS_CONFIG=".debops.cfg"
declare -r SCRIPT_NAME="$(basename ${0})"
# Paths to look through if 'debops.cfg' is found in local directory
DEBOPS_PLAYBOOKS_PWD_PATHS=(
"${PWD}/debops-playbooks/playbooks"
)
# Paths to look through if local install is not found
DEBOPS_PLAYBOOKS_INSTALL_PATHS=(
"${DEBOPS_DATA_HOME}/debops-playbooks/playbooks"
"/usr/local/share/debops/debops-playbooks/playbooks"
"/usr/share/debops/debops-playbooks/playbooks"
)
# Default installation directory
DEBOPS_DEFAULT_INSTALL_PATH="${DEBOPS_DATA_HOME}/debops-playbooks"
# Default git sources for debops-playbooks
DEBOPS_GIT_URI="https://github.com/debops/debops-playbooks"
# Ansible Galaxy requirements file to use by default to download or update
# Ansible roles, relative to debops-playbooks repository
DEBOPS_GALAXY_REQUIREMENTS="galaxy/requirements.txt"
# Path to install roles, relative to debops-playbooks repository
DEBOPS_GALAXY_ROLES="playbooks/roles/"
# ---- Main installer script ----
# Check if playbooks are installed in local directory
if [ -f ${PWD}/${DEBOPS_CONFIG} ] ; then
for playbook_path in "${DEBOPS_PLAYBOOKS_PWD_PATHS[@]}" ; do
if [ -f ${playbook_path}/site.yml ] ; then
debops_playbooks="${playbook_path}"
break
fi
done
fi
# If playbooks have not been found in local directory, look for them in known
# locations
if [ -z "${debops_playbooks}" ] ; then
for playbook_path in "${DEBOPS_PLAYBOOKS_INSTALL_PATHS[@]}" ; do
if [ -f ${playbook_path}/site.yml ] ; then
debops_playbooks="${playbook_path}"
break
fi
done
fi
# Playbooks have not been found, at this point assume playbooks are not
# installed. Install them in user home directory
if [ -z "${debops_playbooks}" ] ; then
echo "DebOps playbooks have not been found, installing in ${DEBOPS_DEFAULT_INSTALL_PATH}"
if ! type git > /dev/null 2>&1 ; then
echo >&2 "${SCRIPT_NAME}: Error: git command not found" ; exit 1
fi
# Download main debops-playbooks repository
git clone --quiet ${DEBOPS_GIT_URI} ${DEBOPS_DEFAULT_INSTALL_PATH}
if ! type ansible-galaxy > /dev/null 2>&1 ; then
echo >&2 "${SCRIPT_NAME}: Error: ansible-galaxy command not found" ; exit 1
fi
pushd ${DEBOPS_DEFAULT_INSTALL_PATH}
ansible-galaxy --roles-path=${DEBOPS_GALAXY_ROLES} install --role-file=${DEBOPS_GALAXY_REQUIREMENTS}
else
echo "DebOps playbooks have been found in ${debops_playbooks}"
fi

0 comments on commit 69fd813

Please sign in to comment.