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
This commit is contained in:
Monty Taylor 2020-04-17 18:14:08 -05:00
parent efd3ad59d9
commit 00f30529e3
3 changed files with 19 additions and 17 deletions

View File

@ -17,21 +17,23 @@
. ./tools/prep-apply.sh . ./tools/prep-apply.sh
if [[ ! -d applytest ]] ; then if [[ ! -d applytest ]] ; then
mkdir applytest mkdir ~/applytest
fi fi
trap "mv ~/applytest applytest" EXIT
# First split the variables at the beginning of the file # 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. # Then split the class defs.
csplit -sf applytest/puppetapplytest applytest/prep01 '/^}$/' {*} csplit -sf ~/applytest/puppetapplytest ~/applytest/prep01 '/^}$/' {*}
# Remove } header left by csplit # 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. # Comment out anything that doesn't begin with a space.
# This gives us the node {} internal contents. # This gives us the node {} internal contents.
sed -i -e 's/^[^][:space:]$]/#&/g' applytest/prep00 applytest/puppetapplytest* 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(.\([^.]*\).,\([^)]*\))@\2@' ~/applytest/prep00 ~/applytest/puppetapplytest*
sed -i -e "s@hiera(.\([^.]*\).)@'\1NoDefault'@" 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 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 -i -s` == 'CentOS' ]]; then
if [[ `lsb_release -r -s` =~ '7' ]]; then if [[ `lsb_release -r -s` =~ '7' ]]; then
@ -47,13 +49,13 @@ elif [[ `lsb_release -i -s` == 'Fedora' ]]; then
fi fi
FOUND=0 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 "Node-OS: $CODENAME" $f; then
if grep -q "Puppet-Version: !${PUPPET_VERSION}" $f; then if grep -q "Puppet-Version: !${PUPPET_VERSION}" $f; then
echo "Skipping $f due to unsupported puppet version" echo "Skipping $f due to unsupported puppet version"
continue continue
else else
cat applytest/head $f > $f.final cat ~/applytest/head $f > $f.final
FOUND=1 FOUND=1
fi fi
fi fi
@ -64,7 +66,7 @@ if [[ $FOUND == "0" ]]; then
exit 1 exit 1
fi fi
cat > applytest/primer.pp << EOF cat > ~/applytest/primer.pp << EOF
class helloworld { class helloworld {
notify { 'hello, world!': } notify { 'hello, world!': }
} }
@ -72,7 +74,7 @@ EOF
sudo mkdir -p /var/run/puppet sudo mkdir -p /var/run/puppet
echo "Running apply test primer to avoid setup races when run in parallel." 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) THREADS=$(nproc)
if grep -qi centos /etc/os-release ; then if grep -qi centos /etc/os-release ; then
@ -83,7 +85,7 @@ if grep -qi centos /etc/os-release ; then
fi fi
echo "Running apply test on these hosts:" 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 \ xargs -0 -P $THREADS -n 1 -I filearg \
./tools/test_puppet_apply.sh filearg ./tools/test_puppet_apply.sh filearg

View File

@ -94,6 +94,6 @@ sudo mv /tmp/hosts /etc/hosts
sudo mkdir -p /opt/system-config sudo mkdir -p /opt/system-config
sudo ln -sf $(pwd) /opt/system-config/production sudo ln -sf $(pwd) /opt/system-config/production
# Really make sure that the openstack_project module is in the module path # 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 sudo -H mkdir -p ~/.ansible/tmp

View File

@ -27,7 +27,7 @@ elif [ "$PUPPET_VERSION" == "4" ] ; then
fi fi
file=$1 file=$1
fileout=`pwd`/${file}.out fileout=${file}.out
ansible_root=`mktemp -d` ansible_root=`mktemp -d`
cat > $ansible_root/ansible.cfg <<EOF cat > $ansible_root/ansible.cfg <<EOF
[defaults] [defaults]
@ -43,7 +43,7 @@ EOF
echo "##" > $fileout echo "##" > $fileout
cat $file > $fileout cat $file > $fileout
export ANSIBLE_CONFIG=$ansible_root/ansible.cfg 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=$? ret=$?
if [ $ret -ne 0 ]; then if [ $ret -ne 0 ]; then
mv $fileout $fileout.FAILED mv $fileout $fileout.FAILED