20170222 zimbra et-l'industrialisation-v2

Preview:

Citation preview

L’industrialisation autour de

Zimbra

Jeudi 9 mars 2017

dans le monde de l’Open Source.

2 L’industrialisation autour de Zimbradans le monde de l’Open Source

Soliman Hindysoliman.hindy@cloud-temple.com

Version 1.0, 2017-03-09

Problématique

OS Orchestration

Historiser le code

Questions / réponses

Migration d’une

plateforme

3 1 – Industrialisation : la problématique

Comment s’assurer que les serveurs sont conformes aux spécifications ? Comment répondre aux besoins professionnels autour de la messagerie ?

4 2 – Préparation de l’OSStockage / PartitionnementPhysique / virtuel

OSMonitoringSécurité

Système d’exploitation

5 3 – Installation serveur Zimbra : implications

# ./install.shExécution du script

Installation des

dépendances

Conformité DNS,

/etc/hosts, etc

Exécution des commandes

de post installation

Tuner l’installation

6 4 – Personnalisation de l’installation

Skins

Zimlets

Logos

Certificats SSL

SSO

Reporting

Supervision

7 Le futur c’est quoi ?

???

? ?

??

Comment m’assurer d’avoir une plateforme facile à faire évoluer ?

Comment maintenir ?

Comment modifier l’infrastructure sans casser l’existant ?

Comment assurer la conformité avec les spécifications ?

Améliorer le processus existant ?

8 5 – Outils d’orchestration

Environnements

hétérogènes

Gérer des déploieme

nts

Fiabiliser les

processus

Automatiser son travail

9 5 – Outils d’orchestration

# cat /root/bin/toto.shzmtlsctl bothzmzimletctl install /tmp/com_zimbra_date.zip

zmlocalconfig -e ldap_url="ldap://master:389 ldap://slave:389" postconf -e smtpd_tls_protocols='!SSLv2,!SSLv3’zmcontrol restart

# sh /root/bin/toto.sh

Installation initiale : pas

pour les modification

sFaire des

comparaisons, appliquer

les différences

Scriptshell

10 5 – Outils d’orchestration

# for i in serveur1 serveur2 … serveurN do ssh $i zmzimletctl install /tmp/toto.zip ssh $i zmprov fc zimlet ssh $i zmprov fc all ssh $i zmprov gqu $(zmhostname) > /tmp/gqu.txt ssh $i zmcontrol restartdone

Boucle for

SSH

11 5 – Outils d’orchestration

# cat /root/response.txt | ./install.sh

Fichier de réponse

./install.sh

12 5 – Outils d’orchestrationValeur par

défaut./install.sh

# ./install.sh [-r <dir> -l <file> -a <file> -u -s -c type -x -h] [defaultsfile]

13 6 – Un exemple : puppetUn serveur maître et des serveurs esclaves

Découpage par modules dans /etc/puppet/modules :- System- Monitoring- Zimbra- Security

Un serveur maître

Des serveurs esclaves

Des modules

Ruby

14 6 – Un exemple : PuppetChaque module possède trois dossiers :- files- manifests- templates

Définition de moduleFichiers

Recettes

Des modèles

15 7 –Puppet : installationRHEL

Ubuntu Server

CentOS

# apt-get install puppet# apt-get install puppetmaster

# yum install puppet# yum install puppetmaster

16 6 – Un exemple : Puppetpackage { 'openssh': ensure => present, }

file { '/opt/zimbra/conf/store.sh': ensure => file, mode => '0755', owner => 'zimbra', group => 'zimbra', source => "puppet:///modules/zimbra87/store.sh"}

Exemple :manifest

Couche d’abstraction

17 6 – Un exemple : Puppet$packages = ["sysstat","pax","sqlite3","unzip","libaio1”, "libperl5.18"] package { $packages: ensure => installed }

file {'/root/zcs-8.7.4_GA_1730.UBUNTU16_64.20170227060845.tgz': ensure => file, mode => '0644', source => "puppet:///modules/zimbra87/zcs-8.7.4_GA_1730.UBUNTU16_64.20170227060845.tgz" }

Exemple :manifest

18 6 – Un exemple : Puppet# cat /etc/puppet/modules/system/template/hosts.erb127.0.0.1 localhost<%=@ipaddress_eth0 %> <%=@hostname%>.<%=@domain_name %> <%=@hostname%>

# cat /etc/hosts127.0.0.1 localhost10.96.1.42 zstore42.domaine.fr zstore42

Exemple :template

Utilisation de variables

19 6 – Un exemple : Puppet

node /^zstore\d+\.domaine.fr/ { include system::generic include monitoring::snmpd include monitoring::nrpe include zimbra87::ruby include system::zimbra87 include zimbra87::store include loghost::zimbrastore87}

Définition des serveurs

20 6 – Un exemple : Puppet

# puppet agent –t --noop# puppet agent -t

Exécution de l’agent

21 7 – Versionning : gitHistorique

des modification

sModules

22 Versionning : git

# git status# git add /etc/puppet/modules/zimbra87# git commit −m ’first commit' # git push# git status # git log

Quelques commandes

git

23 8 – Notre Github : https://github.com/cloud-temple

Contribuer à l’Open Source

Forker le code

24 9 – Migration d’une plateforme ZimbraUne

plateforme source,

version NModule puppet en version NPlateforme destination

en N+1Module

puppet en version N+1

25

node zstore43.domaine.fr { include system::generic include monitoring::snmpd include monitoring::nrpe include zimbra874::ruby include system::zimbra874 include zimbra874::store include loghost::zimbrastore874}

Définition des serveurs

Une nouvelleclasse874

9 – Migration d’une plateforme Zimbra

26 10 – Tableau comparatif outils orchestrationNom Licence Langage Agent ? Communautaire Entreprise

Puppet Apache License Ruby Oui Oui Oui

Ansible GPL3 Python Non Oui Oui

Chef Apache License Ruby Oui Oui Oui

Saltstack Apache License Python Non Oui Oui

Choix du langage

Documentation

27 10 – Quelques ressources

J’ai encore 2/3 questions ?

puppet : https://docs.puppet.com/puppet/ git : https://git-scm.com/doc Github Cloud Temple : https://github.com/cloud-temple

28 10 – Questions / Réponses

J’ai encore 2/3 questions ?

Thanks For Watching

Recommended