commit cc2331ec4ec2348a78d24945f3c4c7c808670b67
Author: root <root@RafaDebian.gobex.pri>
Date:   Thu Jul 7 09:29:00 2016 +0200

    linex-ubuntu-puppet: Varios cambios

diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/changelog b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/changelog
index 702c67b..0d897c3 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/changelog
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/changelog
@@ -1,8 +1,8 @@
 linex-ubuntu-puppet (1.3) linex; urgency=medium
 
   * Modificado escuela2.0 por ubuntu 16.04 (Eli).
-  * Los certificados pasan a generarse a partir de un uuid en lugar de fqdn
   * Añadida desactivación de servicio puppet para systemctl
+  * Cambiado script sinc_puppet por el de Esteban versión 1.8
 
  -- Rafael J. García Perdigón <rafael.garciap@gobex.es>  Mon, 04 Jul 2016 14:39:37 +0200
 
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/conffiles b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/conffiles
new file mode 100644
index 0000000..9dcef0e
--- /dev/null
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/conffiles
@@ -0,0 +1,2 @@
+/usr/share/linex-ubuntu-puppet/escuela2.0
+/usr/share/linex-ubuntu-puppet/puppet.conf
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/control b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/control
index 8428480..f1d6353 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/control
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/control
@@ -7,7 +7,6 @@ Standards-Version: 3.9.4
 
 Package: linex-ubuntu-puppet
 Architecture: all
-Pre-Depends: uuid-runtime
 Depends: ${misc:Depends}, puppet, puppet-common, pkgsync
 Description: Configuración del cliente puppet 
  Instalación de las dependencias del cliente de puppet, 
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/install b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/install
index a75e237..73752c9 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/install
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/install
@@ -1,2 +1 @@
-etc
 usr
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/linex-ubuntu-puppet.links b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/linex-ubuntu-puppet.links
index 6009bb0..bcb9884 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/linex-ubuntu-puppet.links
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/linex-ubuntu-puppet.links
@@ -3,4 +3,5 @@
 /usr/share/linex-ubuntu-puppet/leefichero.rb /usr/lib/ruby/vendor_ruby/facter/leefichero.rb
 /usr/share/linex-ubuntu-puppet/sinc_puppet /usr/sbin/sinc_puppet
 /usr/share/linex-ubuntu-puppet/sincpuppet /etc/init.d/sincpuppet
+/usr/share/linex-ubuntu-puppet/sinc_puppet /etc/network/if-up.d/sinc_puppet
 
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/postinst b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/postinst
index 1210854..ec32916 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/debian/postinst
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/debian/postinst
@@ -1,17 +1,22 @@
 #!/bin/bash
 set -e
 
-  update-rc.d sincpuppet defaults
-  invoke-rc.d sincpuppet start
+  mkdir -p /etc/pkgsync
+  touch /etc/pkgsync/mayhave
+  touch /etc/pkgsync/maynothave
+
 
   invoke-rc.d puppet stop
   update-rc.d -f puppet remove
+  update-rc.d -f sincpuppet remove
+
 
   rm -r /var/lib/puppet/ssl
-  uuidgen | xargs -I uuid sed -i 's/certname = /certname = uuid/g' /etc/puppet/puppet.conf
 
   puppet agent disable
-  systemctl disable puppet.service
+  [ -x /bin/systemctl ] &&  systemctl disable puppet.service
+
   
+  /usr/sbin/sinc_puppet &
 exit 0
 
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/etc/default/sincpuppet b/ubuntu/xenial/all/linex-ubuntu-puppet/etc/default/sincpuppet
new file mode 100644
index 0000000..bd798bf
--- /dev/null
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/etc/default/sincpuppet
@@ -0,0 +1,28 @@
+# Defaults for sinc_puppet
+#
+
+# Activar o desactivar sinc_puppet:
+#  ENABLE="yes": activa sinc_puppet (opción por defecto)
+#  ENABLE="no" : desactiva sinc_puppet
+#  Si no existe la variable ENABLE o no tiene valor, es equivalente al valor 'yes'.
+ENABLE="yes"
+
+# Número máximo de horas sin sincronizar con el servidor puppet
+INTERVAL="12" # horas
+
+# Nombre DNS del servidor al que realizar ping para comprobar que estamos en el centro
+PING_SERVER="puppetinstituto"
+
+# Intervalo para volver a realizar ping en segundos
+PING_INTERVAL="30" # segundos
+
+# Número máximo de ping a realizar antes de dejar de intentar sincronizar con puppet
+PING_TRIES="3"
+
+# Definimos un tiempo máximo en minutos para retrasar la sincronización con el servidor
+# El cliente se sincronizará de forma pseudoaleatoria dentro de este intervalo
+# Básicamente sirve para evitar que muchas peticiones simultáneas de clientes saturen al servidor
+# Este ajuste puede definirse en segundos (30 or 30s), minutos (30m), horas (6h),
+# días (2d), o años (5y).
+SPLAYLIMIT="3m"
+
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/etc/pkgsync/mayhave b/ubuntu/xenial/all/linex-ubuntu-puppet/etc/pkgsync/mayhave
deleted file mode 100644
index e69de29..0000000
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/etc/pkgsync/maynothave b/ubuntu/xenial/all/linex-ubuntu-puppet/etc/pkgsync/maynothave
deleted file mode 100644
index e69de29..0000000
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/puppet.conf b/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/puppet.conf
index 695834d..ee0bdc1 100644
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/puppet.conf
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/puppet.conf
@@ -9,7 +9,6 @@ prerun_command=/etc/puppet/etckeeper-commit-pre
 postrun_command=/etc/puppet/etckeeper-commit-post
 server=puppetinstituto
 pluginsync=false
-certname = 
 
 [master]
 # These are needed when the puppetmaster is run by passenger
diff --git a/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/sinc_puppet b/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/sinc_puppet
index fa3e040..92ce083 100755
--- a/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/sinc_puppet
+++ b/ubuntu/xenial/all/linex-ubuntu-puppet/usr/share/linex-ubuntu-puppet/sinc_puppet
@@ -1,61 +1,76 @@
 #!/bin/bash
-#Modificado: 22/10/2015
+# Script para tratar de realizar la sincronización del cliente puppet
+# Colocar en /etc/network/if-up.d/ para que se ejecute al levantar el interfaz de red
+# Esteban M. Navas Martín
+# Modificado: 15/02/2015
+# Modificado: 19/05/2016
 
+# Controlamos la ejecución manual o automática de sinc_puppet
+ENABLE=yes
+[ -r /etc/default/sincpuppet ] && . /etc/default/sincpuppet
+if [ "$ENABLE" == "no" ] || [ ! "$ENABLE" ]; then
+  echo " * [info]: La aplicación 'sinc_puppet' está desactivada en /etc/default/sincpuppet."
+  echo "           Para activarla poner el valor ENABLE=yes."
+  exit 0
+fi
+
+# Número máximo de segundos sin sincronizar con el servidor puppet
+MAXTIME=`expr $INTERVAL \* 3600`
+
+# Calculamos la diferencia
 uno=$(stat -c %Y  /var/log/syslog)
 dos=$(stat -c %Y /var/lib/puppet/state/state.yaml)
 dife=$((uno-dos))
 
-dpkg --configure -a && apt-get -yf install >/dev/null 2>&1
+# Aseguramos paquetes
+dpkg --configure -a && apt-get -yf install && apt-get -y autoremove
 
-echo "La última sincronización con PUPPET fué hace: "$(($dife / 3600)) "horas" | logger -t $0
+echo "La última sincronización con PUPPET fue hace: "$(($dife / 3600)) "horas" | logger -s -t $0
+echo "Intervalo de sincronización con PUPPET: $INTERVAL horas" | logger -s -t $0
+echo
 
-CUENTA=0
+# Salimos si no se ha alcanzado el tiempo máximo sin sincronizar con PUPPET
+if [ $dife -lt $MAXTIME ]; then exit 0; fi
 
-#ip link | grep "state UP"
-GW=`ip route | grep default | cut -f3 -d" "`
-ping -c 1 $GW >/dev/null 2>&1
-until [ $? -eq "0" ]; do
-	if [ $CUENTA -lt 5 ]; then
-		echo "No se detecta ninguna interfaz de red levantada. Nuevo intento en 60 segundo ..." | logger -t $0
-		CUENTA=`expr $CUENTA + 1`
-	fi
-	sleep 60
-	#ip link | grep "state UP"
-	GW=`ip route | grep default | cut -f3 -d" "`
-	ping -c 1 $GW >/dev/null 2>&1
-done
-
-ping -c 1 servidor >/dev/null 2>&1
+ping -c 1 $PING_SERVER >/dev/null 2>&1
 ERROR=$?
 MAX=0
-until [ $ERROR -eq "0" ] || [ $MAX -eq "5" ]; do
-	echo "Falló Ping al servidor Puppet. Nuevo intento en 30 segundos....." | logger -t $0
-	MAX=`expr $MAX + 1`
-	sleep 30
-	ping -c 1 servidor >/dev/null 2>&1
-	ERROR=$?
+
+until [ $ERROR -eq "0" ] || [ $MAX -eq $PING_TRIES ]; do
+ echo "Falló Ping al servidor Puppet. Nuevo intento en $PING_INTERVAL segundos....." | logger -s -t $0
+ MAX=`expr $MAX + 1`
+ sleep $PING_INTERVAL
+ ping -c 1 $PING_SERVER >/dev/null 2>&1
+ ERROR=$?
 done
-if [ $MAX -eq "5" ]; then
-	echo "Imposible contactar con el servidor..... exit 5" | logger -t $0
-	exit 5
+
+if [ $MAX -eq $PING_TRIES ]; then
+ echo "Imposible contactar con el servidor....." | logger -s -t $0
+ exit 5
 fi
 
-#Si ha estado más de 12 horas sin sincronizar con puppet
-if [ $dife -gt  43200 ]; then
-	echo "Conexión con servidor de puppet. Esperando entre 0 y 5 minutos para puppet....." | logger -t $0
-	sleep $(($(od -dN2 /dev/urandom | sed -n 's/[^ ]* //p')%300))
-	#puppetd -t
-	puppet agent --enable
-	puppet agent --test >/dev/null 2>&1
-	while [ $? -eq "1" ]; do
-         rm -f /var/lib/puppet/state/puppetdlock
- 	 rm -rf /var/lib/puppet/ssl
-	 echo "FALLO Puppet. Nuevo intento en 30 segundos" | logger -t $0
-	 sleep 30
-	 #puppetd -t
-	 puppet agent --enable
-	 puppet agent --test >/dev/null 2>&1
-	done
+# Activamos puppet, por si estuviera desactivado
+puppet agent --enable
+
+# Si no existe el certificado del cliente, ejecutamos puppet tratando de recibir un certificado
+test -f /var/lib/puppet/ssl/certs/$(hostname -f).pem
+if [ $? -eq "1" ]; then
+   puppet agent --test --waitforcert 60 >/dev/null 2>&1
+   exit 0
+fi
+
+#Si ha estado más de MAXTIME segundos sin sincronizar con puppet
+if [ $dife -gt  $MAXTIME ]; then
+ echo "Conexión con servidor de puppet. Esperando $SPLAYLIMIT para puppet....." | logger -s -t $0
+ puppet agent --onetime --no-daemonize --splay --splaylimit $SPLAYLIMIT
+
+ while [ $? -eq "1" ]; do
+   test -f /var/lib/puppet/state/puppetdlock && rm -f /var/lib/puppet/state/puppetdlock
+   rm -rf /var/lib/puppet/ssl/certs/$(hostname -f).pem
+   echo "FALLO Puppet. Nuevo intento en 30 segundos" | logger -s -t $0
+   puppet agent --test --waitforcert 60 >/dev/null 2>&1
+ done
 fi
-echo "Sistema PUPPET correcto" | logger -t $0
+echo "Sistema PUPPET correcto" | logger -s -t $0 
 
+exit 0
