Download - 20170222 zimbra et-l'industrialisation-v2
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 [email protected]
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