Crear paquete de puppet autocontenido (bundle)
Puede ser que al intentar instalar puppet en un servidor nos salgan problemas con las versiones de ruby o de puppet disponibles. Vamos a ver cómo crear un paquete con las versiones de puppet, ruby, facter y hiera que nos interesen.
Vamos a suponer que necesitaremos las siguientes versiones:
# ruby --version ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] # puppet --version 3.8.3 # facter --version 2.4.1 # hiera --version 1.3.4
Primero deberemos instalar ruby-build para facilitar la instalación de ruby:
cd /usr/local/src/ git clone https://github.com/sstephenson/ruby-build.git cd ruby-build/ ./install.sh
Instalamos la versión de ruby en el path que nos interese indicando que mantenga los ficheros de instalación (opción -k)
ruby-build -k 1.8.7-p374 /opt/puppet
En el /tmp encontraremos los ficheros de la instalación, en mi caso estaba en /tmp/ruby-build.20151005062159.4556 el siguiente contenido:
# ls ruby-1.8.7-p374 ruby-1.8.7-p374.tar.gz rubygems-1.6.2 rubygems-1.6.2.tar.gz
Deberemos instalar la extensión openssl, necesitaremos tener instalado el paquete de devel de openssl, para CentOS haríamos:
yum install openssl-devel -y
En CentOS 6 deberemos aplicar el siguiente patch:
curl -fsSL "https://github.com/ruby/ruby/commit/0d58bb55985e787364b0235e5e69278d0f0ad4b0.patch" > opensslext.patch
Deberemos usar el propio ruby para que se instale correctamente:
cd ext/openssl/ /opt/puppet/bin/ruby extconf.rb make install
Instalamos también zlib:
cd ../../ext/zlib/ /opt/puppet/bin/ruby extconf.rb make install
Seguiremos instalando la gem de json, igualmente con el propio ruby:
/opt/puppet/bin/gem install json
Tal y como podemos encontrar en la referencia de instalación desde tarball en puppetlabs, bajamos los siguientes paquetes:
cd /usr/local/src/ wget https://downloads.puppetlabs.com/puppet/puppet-3.8.3.tar.gz wget http://downloads.puppetlabs.com/facter/facter-2.4.1.tar.gz wget https://downloads.puppetlabs.com/hiera/hiera-1.3.4.tar.gz tar xzf puppet-3.8.3.tar.gz tar xzf facter-2.4.1.tar.gz tar xzf hiera-1.3.4.tar.gz
Y los instalamos de la misma forma:
cd facter-2.4.1 /opt/puppet/bin/ruby install.rb cd ../hiera-1.3.4 /opt/puppet/bin/ruby install.rb cd ../puppet-3.8.3 /opt/puppet/bin/ruby install.rb
Dentro del bin podremos encontrar puppet, facter y hiera instalados:
# /opt/puppet/bin/puppet --version 3.8.3 # /opt/puppet/bin/facter --version 2.4.1 # /opt/puppet/bin/hiera --version 1.3.4 # /opt/puppet/bin/ruby --version ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
Si empaquetamos /opt/puppet y lo distribuimos, ya tendremos las versiones correctas de ruby que nos interesen.
Una pega es que si esta usando puppetlabs/concat éste usará el ruby del sistema, por lo que puede no funcionar (o ni encontrarlo), deberíamos modificar el PATH para que encuentre el que nos interesa
Deja un comentario: