#!/bin/bash
#
# Reset puppet master and start over again.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public
# License along with this program.  If not, see
# <http://www.gnu.org/licenses/>.

# Stop agent
/etc/init.d/puppet stop

# Stop master
if [ -e "/etc/init.d/puppetmaster" ]; then
  /etc/init.d/puppetmaster stop
  /etc/init.d/nginx stop
else
  /etc/init.d/apache2 stop
fi

# Reset configuration
hydractl puppet-reset-stored
rm -rf /var/lib/puppetmaster/ssl

# Generate new certificate
# See http://blkperl.github.io/replace-puppet-ca.html
#     http://docs.puppetlabs.com/puppet/latest/reference/ssl_regenerate_certificates.html
puppet cert --generate puppet.`facter domain`
hydractl puppet-finger

# Get fresh config
rm -rf /etc/puppet/ && git clone /var/git/repositories/puppet.git/ /etc/puppet
( cd /etc/puppet/ && git submodule update --init )
chown -R puppet.puppet /etc/puppet/

# Start master
if [ -e "/etc/init.d/puppetmaster" ]; then
  /etc/init.d/puppetmaster start
  sleep 5
  /etc/init.d/nginx start
else
  /etc/init.d/apache2 start
fi