#!/bin/bash # # functions - puppet-openstack-integration specific functions # # Install external Puppet modules with r10k # Uses the following variables: # # - ``SCRIPT_DIR`` must be set to script path # - ``GEM_BIN_DIR`` must be set to Gem bin directory install_external() { PUPPETFILE=${SCRIPT_DIR}/Puppetfile1 ${GEM_BIN_DIR}r10k puppetfile install -v } # Install Puppet OpenStack modules with zuul-cloner # Uses the following variables: # # - ``PUPPETFILE_DIR`` must be set to Puppet modules directory # - ``SCRIPT_DIR`` must be set to script path # - ``ZUUL_REF`` must be set to Zuul ref # - ``ZUUL_BRANCH`` must be set to Zuul branch # - ``ZUUL_URL`` must be set to Zuul URL install_openstack() { cat > clonemap.yaml <<EOF clonemap: - name: '(.*?)/puppet-(.*)' dest: '$PUPPETFILE_DIR/\2' EOF local project_names=$(awk '{ if ($1 == ":git") print $3 }' \ ${SCRIPT_DIR}/Puppetfile0 | tr -d "'," | cut -d '/' -f 4- | xargs ) /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml \ --cache-dir /opt/git \ --zuul-ref $ZUUL_REF \ --zuul-branch $ZUUL_BRANCH \ --zuul-url $ZUUL_URL \ git://git.openstack.org $project_names } # Install all Puppet modules with r10k # Uses the following variables: # # - ``SCRIPT_DIR`` must be set to script path # - ``GEM_BIN_DIR`` must be set to Gem bin directory install_all() { PUPPETFILE=${SCRIPT_DIR}/Puppetfile ${GEM_BIN_DIR}r10k puppetfile install -v } # Install Puppet OpenStack modules and dependencies by using # zuul-cloner or r10k. # Uses the following variables: # # - ``PUPPETFILE_DIR`` must be set to Puppet modules directory # - ``SCRIPT_DIR`` must be set to script path # - ``ZUUL_REF`` must be set to Zuul ref # - ``ZUUL_BRANCH`` must be set to Zuul branch # - ``ZUUL_URL`` must be set to Zuul URL install_modules() { # If zuul-cloner is there, have it install modules using zuul refs if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then csplit ${SCRIPT_DIR}/Puppetfile /'External modules'/ \ --prefix ${SCRIPT_DIR}/Puppetfile \ --suffix '%d' install_external install_openstack else install_all fi }