29
L’industriali sation autour de Zimbra Jeudi 9 mars 2017 dans le monde de l’Open Sourc

20170222 zimbra et-l'industrialisation-v2

Embed Size (px)

Citation preview

Page 1: 20170222 zimbra et-l'industrialisation-v2

L’industrialisation autour de

Zimbra

Jeudi 9 mars 2017

dans le monde de l’Open Source.

Page 2: 20170222 zimbra et-l'industrialisation-v2

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

Soliman [email protected]

Version 1.0, 2017-03-09

Problématique

OS Orchestration

Historiser le code

Questions / réponses

Migration d’une

plateforme

Page 3: 20170222 zimbra et-l'industrialisation-v2

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 ?

Page 4: 20170222 zimbra et-l'industrialisation-v2

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

OSMonitoringSécurité

Système d’exploitation

Page 5: 20170222 zimbra et-l'industrialisation-v2

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

Page 6: 20170222 zimbra et-l'industrialisation-v2

6 4 – Personnalisation de l’installation

Skins

Zimlets

Logos

Certificats SSL

SSO

Reporting

Supervision

Page 7: 20170222 zimbra et-l'industrialisation-v2

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 ?

Page 8: 20170222 zimbra et-l'industrialisation-v2

8 5 – Outils d’orchestration

Environnements

hétérogènes

Gérer des déploieme

nts

Fiabiliser les

processus

Automatiser son travail

Page 9: 20170222 zimbra et-l'industrialisation-v2

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

Page 10: 20170222 zimbra et-l'industrialisation-v2

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

Page 11: 20170222 zimbra et-l'industrialisation-v2

11 5 – Outils d’orchestration

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

Fichier de réponse

./install.sh

Page 12: 20170222 zimbra et-l'industrialisation-v2

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]

Page 13: 20170222 zimbra et-l'industrialisation-v2

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

Page 14: 20170222 zimbra et-l'industrialisation-v2

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

Définition de moduleFichiers

Recettes

Des modèles

Page 15: 20170222 zimbra et-l'industrialisation-v2

15 7 –Puppet : installationRHEL

Ubuntu Server

CentOS

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

# yum install puppet# yum install puppetmaster

Page 16: 20170222 zimbra et-l'industrialisation-v2

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

Page 17: 20170222 zimbra et-l'industrialisation-v2

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

Page 18: 20170222 zimbra et-l'industrialisation-v2

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

Page 19: 20170222 zimbra et-l'industrialisation-v2

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

Page 20: 20170222 zimbra et-l'industrialisation-v2

20 6 – Un exemple : Puppet

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

Exécution de l’agent

Page 21: 20170222 zimbra et-l'industrialisation-v2

21 7 – Versionning : gitHistorique

des modification

sModules

Page 22: 20170222 zimbra et-l'industrialisation-v2

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

Page 23: 20170222 zimbra et-l'industrialisation-v2

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

Contribuer à l’Open Source

Forker le code

Page 24: 20170222 zimbra et-l'industrialisation-v2

24 9 – Migration d’une plateforme ZimbraUne

plateforme source,

version NModule puppet en version NPlateforme destination

en N+1Module

puppet en version N+1

Page 25: 20170222 zimbra et-l'industrialisation-v2

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

Page 26: 20170222 zimbra et-l'industrialisation-v2

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

Page 27: 20170222 zimbra et-l'industrialisation-v2

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

Page 28: 20170222 zimbra et-l'industrialisation-v2

28 10 – Questions / Réponses

J’ai encore 2/3 questions ?

Page 29: 20170222 zimbra et-l'industrialisation-v2

Thanks For Watching