• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz - Todas las novedades sobre VMware, Veeam, InfluxData, Grafana, Zimbra, etc.

  • Home
  • VMware
    • VMworld
    • VMware vSphere 6.7
    • VMware vSphere 6.5
  • Veeam
    • Resumen Contenido 2021
    • Veeam v11
      • Continuous Data Protection (CDP
      • Ransomware Protection
      • Archive Tier
      • Mejoras en Instant Recovery
      • Veeam Agent for Mac
      • Veeam Backup for AHV v2.1
    • Veeam Backup for Microsoft Office 365
      • 1 – Razones para proteger nuestra información en Microsoft Office 365
      • 2 – Componentes lógicos de Veeam Backup for Microsoft Office 365 2.0
      • 3 – Instalación paso a paso de Veeam Backup for Microsoft Office 365 v2.0
      • 4 – Configuración inicial de Veeam Backup for Microsoft Office 365 v2.0
      • 5 – Creando trabajos de copia en Veeam Backup for Microsoft Office 365 v2.0
      • 6 – Restaurando elementos en Veeam Backup for Microsoft Office 365 v2.0
    • Veeam Backup for AWS
      • Veeam: Veeam anuncia Veeam Backup for AWS Free Edition
      • Veeam: Cómo Desplegar Veeam Backup for AWS – paso a paso
      • Veeam: Vistazo en profundidad al nuevo Veeam Backup for AWS – Creación de Políticas de Backup y Restauración
      • Veeam: Cómo conectar nuestro Veeam Backup & Replication a Veeam Backup for AWS
    • Veaam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte I – Introducción a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte II – Descarga e Instalación de Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte III – Añadir una Infraestructura de VMware vSphere a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte IV – Añadir una Infraestructura de Veeam Backup and Replication a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte V – Realizando troubleshooting de vSphere usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VI – Realizando troubleshooting de Veeam Backup and Replication usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VII – Vistazo profundo a los Dashboards en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte VIII – Vistazo profundo a Reportes en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte IX – Chargeback para crear reportes de coste de nuestra Infraestructura
    • Veeam Availability Console
      • 1 – Teoría e información útil sobre el producto
      • 2 – Instalación de Veeam Availability Console
      • 3 – Configuración y conexión con VBR Server
      • 4 – Administración centralizada de Veeam Backup Agents
      • 5 – Backup de Agentes a diferentes destinos, SMB, Repositorio Veeam o Cloud Connect
      • 6 – Reportes de Backup de Veeam Agent y Veeam Backup and Replication
      • 7 – Manejando la Facturación de Veeam Agents, Backup and Replication y Cloud Connect
    • Backup y restore de cargas de trabajo a Microsoft Azure
      • 1 – Introducción
      • 2 – Conectividad entre nuestro Datacenter y Microsoft Azure
      • 3 – Desplegar Veeam Backup and Replication en Microsoft Azure
      • 4 – Configuración en nuestro Datacenter para backup a Microsoft Azure
      • 5 – Restaurando a Microsoft Azure, desde Microsoft Azure
      • 6 – Migrar cargas de trabajo desde Microsoft Azure hacía nuestro Datacenter
    • Veeam v9.5 Update 4
      • Veeam Cloud Tier
        • Cómo controlar el ancho de banda en Veeam Cloud Tier
      • Secure Restore y Staged Restore
      • Mejoras en Veeam Agent Management
      • Veeam Community Edition
      • Actualizar Veeam Enterprise Manager y Veeam Backup and Replication a la última versión
      • VeeamONE con Intelligent Diagnostics, Remediation actions, Business View 2.0 y Application Monitoring
    • VeeamON 2022
      • Novedades en Veeam ONE v12
    • VeeamON 2021
      • VBO v6 – Self-Service y Backup Copy Glacier-Azure Archive
    • VeeamON 2020
      • Veeam Backup for AWS v2.0
    • VeeamON 2019
      • Veeam Availability Orchestrator v2.0 – ¡novedades!
    • VeeamON 2017
      • Sesiones recomendadas
      • Día I – Veeam Availability Suite v10 – ¡novedades!
      • Día II – Veeam Azure PN (Powered Network), Scale-out Archive Tier y mucho más
    • VeeamON 2015
      • VeeamON 2015 volverá a Las Vegas en el único Evento sobre Disponibilidad en el Data Center
      • Completo resumen, keynotes e imágenes
      • vBrownBag – Jorge de la Cruz – Stop sending postcards to your customers
  • Zextras
  • PRTG
  • Office 365
    • Microsoft – Añadiendo nuestro dominio a Office 365, configuración de DNS y migración de actual Mailbox
    • Veeam: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
    • PRTG: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
  • Zimbra
    • Instalación
      • Instalando Zimbra 8.7.6 sobre Ubuntu 14.04 LTS – ¡con Chat y Drive!
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte II
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte I
      • Instalando Zimbra 8.7.x con un solo comando, incluye Chat y Drive
  • Linux
    • InfluxDB, Grafana y Telegraf
      • 1 – Instalación y configuración de los components
      • 2 – Instalar agente en Linux
      • 3 – Integración con PRTG
      • 4 – Instalar agente Telegraf en Nodos remotos Windows
      • 5 – Activar inputs específicos, Red, MySQL/MariaDB, Nginx
      • 6 – Monitorizando Veeam
    • Ansible y Zabbix
      • 1 – Inicio
      • 2 – Instalación de Ansible e integración con Active Directory
      • 3 – Configuración de AutoDiscovery en Zabbix
      • 4 – Instalación del agente de Zabbix en Windows
      • 5 – Instalación del agente de Zabbix en Linux y Auto Remove en Zabbix
    • Jenkins
      • 1 – Inicio
      • 2 – Instalación de Jenkins en Ubuntu
      • 3 – Instalando nuestro primer plugin
      • 4 – Sincronización NTP de Linux
      • 5 – Añadir un Slave Windows a Jenkins
      • 6 – Ejecutar tareas en Linux
      • 7 – Ejecutar tareas en Windows
    • Kubernetes
      • 1 – Introducción a Kubernetes
      • 2 – Instalación paso a paso
      • 3 – RollingUpdate con Kubernetes
      • 4 – Dashboard
      • 5 – Volúmenes NFS
      • 6 – Registry
      • 7 – Traefik
      • 8 – Systemd con Traefik y Proxy de Kubernetes
      • 9 – Heapster Influx Grafana
      • 10 – Labels de Kubernetes
      • 11 – API: Swagger
      • 12 – API: Creando nuestro primer POD
  • Contribuidores
    • Acerca de Jorge
    • Acerca de Oscar Mas
      • Clúster SQL
        • 1 – Introducción
        • 2 – Preparación de los equipos virtuales
        • 3 – Instalación del Clúster de Microsoft
        • 4 – Instalación de SQL Server para Clúster de Microsoft
        • 5 – Configuración de nuestro Clúster de SQL
        • 6 – Monitorización de Clúster de SQL con Zabbix
        • 7 – Actualizando clúster de SQL

Zimbra: Operando Zimbra con Puppet (Parte I)

1 September, 2014 - Escrito en: zimbra

zimbra-puppet-banner

Cuando tienes uno, dos, cuatro, siete servidores de Zimbra, es fácil gestionarlos y no inviertes un tiempo excesivo en realizar cambios. El problema viene, cuando tienes quince, veinte, treinta servidores de Zimbra, entonces empezamos a tener un problema, ya que los cambios en dichos sistemas operativos, o simplemente modificaciones en nuestros servidores de Zimbra, nos pueden ocasionar un trabajo excesivo.

Existen muchas utilidades para poder gestionar nuestros sistemas, una de ellas es Puppet (marioneta en inglés). En concreto he escogido la versión OpenSource, ya que la versión Enterprise, es gratuita hasta los 10 nodos y a partir de aquí hay que pagar.

Desde Puppet, podremos gestionar todos nuestro sistema operativos (Linux, BSD, W$, etc….) de una forma centralizada.

En este howto, simplemente realizo un cambio en el fichero de “hosts”, pero es un buen punto donde empezar. Para hacerlo más ameno, he dividido el procedimiento en tres fases:

Fase – 1

  • Implementeación de puppet en Centos 6

Fase – 2

  • Instalación del agente de puppet en Centos 7
  • Conexión agente con nuestro puppet

Fase – 3

  • Jugando con ficheros hosts

Fase – 1

Instalación de puppet en Centos 6

Añadimos los repositorios de puppet a nuestro servidor de CentOS e instalamos puppet

[syntax type=”php”]
[root@puppet ~]# rpm -ivh https://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
[root@puppet ~]# yum install -y puppet-server
[/syntax]

Arrancamos el servicio y lo habilitamos para que cuando se reinicie el servidor, puppet arranque con el equipo:

[syntax type=”php”]

[root@puppet ~]# service puppetmaster start

[root@puppet ~]# puppet resource service puppetmaster ensure=running enable=true

[/syntax]

zimbra-puppet-001

Instalamos las herramientas que necesitará passanger y posteriormente instalamos passanger. Passanger es un módulo del apache, el cual nos permite interactuar con Puppet:

[syntax type=”php”]

[root@puppet ~]# yum install -y httpd httpd-devel mod_ssl ruby-devel rubygems gcc-c++ curl-devel zlib-devel make automake

[root@puppet ~]# gem install passenger –version 3.0.21

[/syntax]

zimbra-puppet-002

Instalaremos openssl, ya que toda la comunicación es encriptada con certificados autogenerados, e instalaremos el módulo de passanger para apache:

[syntax type=”php”]

[root@puppet ~]# yum install -y openssl-devel

[root@puppet ~]# passenger-install-apache2-module

[/syntax]

zimbra-puppet-003

Crearemos la estructura de directorios:

[syntax type=”php”]

[root@puppet ~]# mkdir -p /usr/share/puppet/rack/puppetmasterd

[root@puppet ~]# mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp

[root@puppet ~]# cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/

[root@puppet ~]# chown puppet /usr/share/puppet/rack/puppetmasterd/config.ru

[/syntax]

Configuraremos nuestro virtualhost de apache, el cual cargará el módulo de passanger y los certificados:

[syntax type=”php”]

[root@puppet ~]# cat /etc/httpd/conf.d/puppetmaster.conf

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.21/ext/apache2/mod_passenger.so

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.21

PassengerRuby /usr/bin/ruby

PassengerHighPerformance On

PassengerMaxPoolSize 6

PassengerMaxRequests 1000

PassengerPoolIdleTime 600

Listen 8140

<VirtualHost *:8140>

SSLEngine On

SSLProtocol             All -SSLv2

SSLCipherSuite          HIGH:!ADH:RC4+RSA:-MEDIUM:-LOW:-EXP

SSLCertificateFile      /var/lib/puppet/ssl/certs/puppet.ilba.cat.pem

SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet.ilba.cat.pem

SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem

SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem

SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem

SSLVerifyClient         optional

SSLVerifyDepth          1

SSLOptions              +StdEnvVars +ExportCertData

RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e

RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e

RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

DocumentRoot /usr/share/puppet/rack/puppetmasterd/public/

<Directory /usr/share/puppet/rack/puppetmasterd/>

Options None

AllowOverride None

Order Allow,Deny

Allow from All

</Directory>

</VirtualHost>

[/syntax]

zimbra-puppet-004

Nos olvidaremos del servidor web que viene por defecto con puppet (puppetmaster) y dejaremos habilitado y corriendo apache:

[syntax type=”php”]

[root@puppet ~]# service puppetmaster stop

[root@puppet ~]# httpd -t

[root@puppet ~]# service httpd start

[root@puppet ~]# chkconfig puppetmaster off

[root@puppet ~]# chkconfig httpd on

[/syntax]

zimbra-puppet-005

Verificaremos que el puerto que escucha puppet, lo haya levantado apache:

[syntax type=”php”][root@puppet syntax]# netstat -nlpt | grep 8140[/syntax]

zimbra-puppet-006

Fase – 2

Instalación del agente de puppet en Centos 7

Como cliente, usaré CentOS 7. Añadiré los repositorios e instalaré el agente de puppet. Ya que puede ser que el servidor de destino no lo administremos nosotros, pero sí que lo gestionemos. Deshabilitaré este repositorio, para que se tenga que forzar el uso y no hayan errores.

[syntax type=”php”]

[root@node1 ~]# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

[root@node1 ~]# sed -i ‘s/enabled=1/enabled=0/g’ /etc/yum.repos.d/puppetlabs.repo

[root@node1 ~]# yum install -y puppet –enablerepo=puppetlabs*

[/syntax]

zimbra-puppet-007

Editaremos el fichero de configuración y le añadiremos los siguientes parámetros:

[syntax type=”php”]

[root@node1 ~]# vim /etc/puppet/puppet.conf

[agent]

…

server = puppet

report = true

pluginsync = true

[/syntax]

zimbra-puppet-008

Habilitamos el agente de puppet, para que cuando se reinicie el servidor arranque con el sistema:

[syntax type=”php”][root@node1 ~]# systemctl enable puppet.service[/syntax]

Conexión agente con nuestro puppet

Una vez montado el servidor y el agente, hemos de solicitar el certificado desde el cliente:

[syntax type=”php”][root@node1 ~]# puppet agent –daemonize[/syntax]

Desde el servidor de Puppet, aceptaremos el certificado y lo firmaremos:

[syntax type=”php”]

[root@puppet ~]# puppet cert list

“node1.ilba.cat” (SHA256) FC:E9:9D:6B:B5:4A:23:F8:CE:0D:7F:D6:94:09:FD:48:18:4E:C7:42:59:2D:41:14:8F:07:1F:EB:1D:F9:1A:CE

[root@puppet ~]# puppet cert sign –all

Notice: Signed certificate request for node1.ilba.cat

Notice: Removing file Puppet::SSL::CertificateRequest node1.ilba.cat at ‘/var/lib/puppet/ssl/ca/requests/node1.ilba.cat.pem’

[/syntax]

zimbra-puppet-009

Una vez hecha la gestión del certificado, verificaremos el correcto funcionamiento del agente contra nuestro servidor de puppet:

[syntax type=”php”]

[root@node1 ~]# puppet agent –test

Info: Retrieving pluginfacts

Info: Retrieving plugin

Info: Caching catalog for node1.ilba.cat

Info: Applying configuration version ‘1408006984’

Notice: Finished catalog run in 0.02 seconds

[/syntax]

zimbra-puppet-010

Fase – 3

Jugando con ficheros hosts

Como práctica y para verificar que todo funciona correctamente, modificaremos el fichero hosts de nuestro cliente. Os dejo un esquema muy ilustrativo de cómo funciona el sistema.

zimbra-puppet-011

Soy un entusiasta y un enamorado del VIM, de hecho recuerdo con nostalgia, la época cuando usaba muttng + vim. Lo que haremos a continuación, es añadir el fichero puppet.vim, para que al editar nuestros ficheros de configuración, nos muestre la sintaxis en colores, de esta manera, conseguiremos eliminar fallos tipográficos:

[syntax type=”php”]

[root@puppet ~]# mkdir -p ~/.vim/syntax

[root@puppet ~]# cd ~/.vim/syntax

[root@puppet syntax]# yum install -y wget

[root@puppet syntax]# wget http://downloads.puppetlabs.com/puppet/puppet.vim

[/syntax]

zimbra-puppet-012

Creamos la estructura para nuestro modulo:

[syntax type=”php”]

[root@puppet ~]# mkdir /etc/puppet/modules/hosts

[root@puppet ~]# mkdir /etc/puppet/modules/hosts/files

[root@puppet ~]# mkdir /etc/puppet/modules/hosts/manifests

[root@puppet ~]# mkdir /etc/puppet/modules/hosts/templates

[root@puppet ~]# touch /etc/puppet/modules/hosts/files/hosts

[root@puppet ~]# touch /etc/puppet/modules/hosts/manifests/init.pp

[/syntax]

Creamos el site:

[syntax type=”php”]

[root@puppet ~]# vim /etc/puppet/manifests/site.pp

import “nodes”

[/syntax]

zimbra-puppet-013

Creamos el node, en el cual añadiremos la clase “hosts”:

[syntax type=”php”]

[root@puppet ~]# vim /etc/puppet/manifests/nodes.pp

node oscarmas {

include hosts

}

node ‘node1.ilba.cat’ inherits oscarmas {

}

[/syntax]

zimbra-puppet-014

Defimos el manifest:

[syntax type=”php”]

[root@puppet ~]# vim /etc/puppet/modules/hosts/manifests/init.pp

class hosts {

file { “/etc/hosts”:

owner => root,

group => root,

mode => 644,

content => template(“hosts/hosts”),

}

}

[/syntax]

zimbra-puppet-015

Y creamos el fichero de hosts, que queremos que se aplique a nuestro servidor de demo:

[root@puppet ~]# vim /etc/puppet/modules/hosts/templates/hosts

[syntax type=”php”]

127.0.0.1 localhost

192.168.250.10 puppet.ilba.cat puppet

192.168.250.21 node1.ilba.cat node1

192.168.250.22 node2.ilba.cat node2

192.168.250.23 node3.ilba.cat node3

[/syntax]

zimbra-puppet-016

La estructura nos ha de quedar de la siguiente manera:

[syntax type=”php”]

[root@puppet ~]# cd /etc/puppet/modules/hosts/

[root@puppet hosts]# yum install tree –y

[root@puppet hosts]# tree –charset=ASCII

[/syntax]

zimbra-puppet-017

Y ahora ya podemos verificar el funcionamiento. Desde el servidor de puppet, verificaremos que no nos hayamos equivocado en la sintaxis:

[syntax type=”php”][root@puppet hosts]# puppet parser validate /etc/puppet/manifests/nodes.pp[/syntax]

Revisaremos el fichero de hosts de nuestro cliente de puppet

[syntax type=”php”]

[root@node1 ~]# cat /etc/hosts

127.0.0.1 localhost

192.168.250.10 puppet.ilba.cat puppet

192.168.250.21 node1.ilba.cat node1

[/syntax]

Cargamos el agente:

[syntax type=”php”][root@node1 ~]# puppet agent –test –verbose –debug[/syntax]

Y ya podemos ver los cambios realizados

[syntax type=”php”]

[root@node1 ~]# cat /etc/hosts

127.0.0.1 localhost

192.168.250.10 puppet.ilba.cat puppet

192.168.250.21 node1.ilba.cat node1

192.168.250.22 node2.ilba.cat node2

192.168.250.23 node3.ilba.cat node3

[/syntax]

zimbra-puppet-018

Espero que os sirva de ayuda para implementar tanto Zimbra, como para gestionar vuestras infraestructuras.

Filed Under: zimbra Tagged With: zimbra automate, zimbra operations, zimbra puppet

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

  • Email
  • GitHub
  • LinkedIn
  • RSS
  • Twitter
  • YouTube

Gold Partners

Silver Partners

Libros Gratuitos

Cloud por vExperts
VMware por vExperts

VMware vExpert

Puesto 16 en Top vBlog

Calendario de Posts

September 2014
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
2930  
« Aug   Oct »

Disclaimer

Todas las opiniones expresadas en este sitio son las mías propias y no representan las opiniones de ninguna compañía con la que haya trabajado, esté trabajando o vaya a estar trabajando.

Copyright © 2026 · El Blog de Jorge de la Cruz