From 00f30529e3bd70880a1e26191a72e79a34a1055a Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Fri, 17 Apr 2020 18:14:08 -0500 Subject: [PATCH] Make applytest files outside of system-config We are copying system-config in parallel to a bunch of targets and we're also creating and deleting applytest files. Instead, do the apply test files outside of the dir that's going to get synced in the puppet role. While we're at it, copy don't link the openstack_project module into /etc/puppet/modules, just to be sure. Change-Id: I4bcd8ebd6da8395e77d673ac76f4c41568d810ec --- tools/apply-test.sh | 30 ++++++++++++++++-------------- tools/prep-apply.sh | 2 +- tools/test_puppet_apply.sh | 4 ++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/tools/apply-test.sh b/tools/apply-test.sh index 3e6e376494..c3593d45e6 100755 --- a/tools/apply-test.sh +++ b/tools/apply-test.sh @@ -17,21 +17,23 @@ . ./tools/prep-apply.sh if [[ ! -d applytest ]] ; then - mkdir applytest + mkdir ~/applytest fi +trap "mv ~/applytest applytest" EXIT + # First split the variables at the beginning of the file -csplit -sf applytest/prep $PUPPET_MANIFEST '/^$/' {0} +csplit -sf ~/applytest/prep $PUPPET_MANIFEST '/^$/' {0} # Then split the class defs. -csplit -sf applytest/puppetapplytest applytest/prep01 '/^}$/' {*} +csplit -sf ~/applytest/puppetapplytest ~/applytest/prep01 '/^}$/' {*} # Remove } header left by csplit -sed -i -e '/^\}$/d' applytest/puppetapplytest* +sed -i -e '/^\}$/d' ~/applytest/puppetapplytest* # Comment out anything that doesn't begin with a space. # This gives us the node {} internal contents. -sed -i -e 's/^[^][:space:]$]/#&/g' applytest/prep00 applytest/puppetapplytest* -sed -i -e 's@hiera(.\([^.]*\).,\([^)]*\))@\2@' applytest/prep00 applytest/puppetapplytest* -sed -i -e "s@hiera(.\([^.]*\).)@'\1NoDefault'@" applytest/prep00 applytest/puppetapplytest* -mv applytest/prep00 applytest/head # These are the top-level variables defined in site.pp +sed -i -e 's/^[^][:space:]$]/#&/g' ~/applytest/prep00 ~/applytest/puppetapplytest* +sed -i -e 's@hiera(.\([^.]*\).,\([^)]*\))@\2@' ~/applytest/prep00 ~/applytest/puppetapplytest* +sed -i -e "s@hiera(.\([^.]*\).)@'\1NoDefault'@" ~/applytest/prep00 ~/applytest/puppetapplytest* +mv ~/applytest/prep00 ~/applytest/head # These are the top-level variables defined in site.pp if [[ `lsb_release -i -s` == 'CentOS' ]]; then if [[ `lsb_release -r -s` =~ '7' ]]; then @@ -47,13 +49,13 @@ elif [[ `lsb_release -i -s` == 'Fedora' ]]; then fi FOUND=0 -for f in `find applytest -name 'puppetapplytest*' -print` ; do +for f in `find ~/applytest -name 'puppetapplytest*' -print` ; do if grep -q "Node-OS: $CODENAME" $f; then if grep -q "Puppet-Version: !${PUPPET_VERSION}" $f; then echo "Skipping $f due to unsupported puppet version" continue else - cat applytest/head $f > $f.final + cat ~/applytest/head $f > $f.final FOUND=1 fi fi @@ -64,7 +66,7 @@ if [[ $FOUND == "0" ]]; then exit 1 fi -cat > applytest/primer.pp << EOF +cat > ~/applytest/primer.pp << EOF class helloworld { notify { 'hello, world!': } } @@ -72,7 +74,7 @@ EOF sudo mkdir -p /var/run/puppet echo "Running apply test primer to avoid setup races when run in parallel." -./tools/test_puppet_apply.sh applytest/primer.pp +./tools/test_puppet_apply.sh ~/applytest/primer.pp THREADS=$(nproc) if grep -qi centos /etc/os-release ; then @@ -83,7 +85,7 @@ if grep -qi centos /etc/os-release ; then fi echo "Running apply test on these hosts:" -find applytest -name 'puppetapplytest*.final' -print0 -find applytest -name 'puppetapplytest*.final' -print0 | \ +find ~/applytest -name 'puppetapplytest*.final' -print0 +find ~/applytest -name 'puppetapplytest*.final' -print0 | \ xargs -0 -P $THREADS -n 1 -I filearg \ ./tools/test_puppet_apply.sh filearg diff --git a/tools/prep-apply.sh b/tools/prep-apply.sh index 08bb9e7783..414bda45df 100644 --- a/tools/prep-apply.sh +++ b/tools/prep-apply.sh @@ -94,6 +94,6 @@ sudo mv /tmp/hosts /etc/hosts sudo mkdir -p /opt/system-config sudo ln -sf $(pwd) /opt/system-config/production # Really make sure that the openstack_project module is in the module path -sudo ln -sf /opt/system-config/production/modules/openstack_project $MODULE_PATH +sudo cp -a /opt/system-config/production/modules/openstack_project $MODULE_PATH sudo -H mkdir -p ~/.ansible/tmp diff --git a/tools/test_puppet_apply.sh b/tools/test_puppet_apply.sh index 3241c55b98..4899a0dbd9 100755 --- a/tools/test_puppet_apply.sh +++ b/tools/test_puppet_apply.sh @@ -27,7 +27,7 @@ elif [ "$PUPPET_VERSION" == "4" ] ; then fi file=$1 -fileout=`pwd`/${file}.out +fileout=${file}.out ansible_root=`mktemp -d` cat > $ansible_root/ansible.cfg < $fileout cat $file > $fileout export ANSIBLE_CONFIG=$ansible_root/ansible.cfg -sudo -H -E /tmp/apply-ansible-env/bin/ansible-playbook -i $ansible_root/hosts -f1 playbooks/remote_puppet_adhoc.yaml -e puppet_environment=production -e manifest=`pwd`/$file -e puppet_noop=true -e puppet_logdest=$fileout -e mgmt_puppet_module_dir=$MODULE_PATH +sudo -H -E /tmp/apply-ansible-env/bin/ansible-playbook -i $ansible_root/hosts -f1 playbooks/remote_puppet_adhoc.yaml -e puppet_environment=production -e manifest=$file -e puppet_noop=true -e puppet_logdest=$fileout -e mgmt_puppet_module_dir=$MODULE_PATH ret=$? if [ $ret -ne 0 ]; then mv $fileout $fileout.FAILED