% $Id$
\documentclass[notes]{beamer}
%\documentclass[blends,frameColor,colorBG,pdf,ps2pdf]{prosper}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage{moreverb}
\usepackage[utf8]{inputenc}

\mode<presentation>
{
  \definecolor{beamerstructure}{RGB}{143,79,112}
  \definecolor{sidebackground}{RGB}{230,242,250}
  \color{beamerstructure}
  \usetheme[secheader]{Madrid}
  \usepackage{times}
  \userightsidebarcolortemplate{\color{sidebackground}}
  \beamertemplateballitem
}

\AtBeginSection[]
{
\begin{frame}<beamer>
    \frametitle{Plan}
    \tableofcontents[currentsection,hideothersubsections]
\end{frame}
}

\title{Versionner les configurations systèmes}
\subtitle{Travail collaboratif entre admin}
\author{Olivier Thauvin}

\begin{document}
    
\begin{frame}
    \maketitle
\end{frame}

\begin{frame}{Plan}
    \tableofcontents
\end{frame}

\section{Versionner les configurations ?}

\begin{frame}
    \frametitle{Le besoin}
    \vfill
    \begin{block}{Répondre aux questions:}
    \pause
    \begin{itemize}
    \item Qui ?
    \pause
    \item Quand ?
    \pause
    \item Quoi et pourquoi ?
    \end{itemize}
    \end{block}
    \vfill
    \pause
    \begin{block}{Information:}
    \begin{itemize}
    \item automatique (via liste de diffusion)
    \end{itemize}
    \end{block}
    \vfill
\end{frame}

\begin{frame}
    \frametitle{Le principe}
    \vfill
    \pause
    \begin{block}{Modifications:}
    Sur une machine quelconque:
    \pause
    \begin{itemize}
    \item sortie ou mise à jour de la copie de travail
    \pause
    \item modification du fichier de configuration
    \pause
    \item commit
    \pause
    \end{itemize}
    \end{block}
    \vfill
    \begin{block}{La propagation vers les serveurs:}
    Deux solutions:
    \pause
    \begin{itemize}
    \item le serveur va chercher les modifications
    \pause
        \begin{itemize}
        \item solution maison
        \pause
        \item logiciels prévus pour
        \end{itemize}
    \pause
    \item le serveur de versionnement pousse vers les serveurs
    \pause
    \end{itemize}
    Le tout doit être automatique, incluant le redémarrage des démons.
    \end{block}
    \vfill
\end{frame}

\begin{frame}
    \frametitle{Avantage/Inconvénients}
    \vfill
    \begin{block}{Avantages:}
    \begin{itemize}
    \pause
    \item plus besoin de se connecter sur chaque serveur pour les tâches régulières
    \pause
    \item plus de log dans les fichers (svn log)
    \pause
    \item modification de plusieurs fichiers
    \pause
    \item on sait qui a modifié quoi même longtemps après
    \pause
    \item travail collectif
    \pause
    \item possibilité de vérification au commit
    \end{itemize}
    \end{block}
    \vfill
    \pause
    \begin{alertblock}{Inconvénients:}
    \begin{itemize}
    \pause
    \item les tests de nouvelles config sont à reporter dans le svn
    \pause
    \item la prise en compte n'est pas forcément instantanée
    \end{itemize}
    \end{alertblock}
    \vfill
\end{frame}

\section{Solution maison (Aerov)}

\begin{frame}
    \frametitle{Cron + make sur chaque serveur}
    \vfill
    \begin{block}{Fonctionnement:}
    Script en cron (lancé toutes les heures)
    \pause
    \begin{enumerate}
    \item met à jour un copie de travail locale
    \pause
    \item make (cible = hostname)
        \begin{itemize}
        \item detecte les fichiers modifiés
        \item les met en place
        \item relance les démons si besoin
        \end{itemize}
    \end{enumerate}
    \end{block}
    \vfill
    \pause
    \begin{block}{Utilisation:}
    \begin{itemize}
    \item comptes utilisateurs (avec verification unicité des logins et UIDs)
    \pause
    \item zones DNS
    \pause
    \item configuration DHCP
    \pause
    \item map automount (autofs et amd)
    \end{itemize}
    \end{block}
    \vfill
\end{frame}

\begin{frame}[fragile]
    \frametitle{Exemple de mail}
    \vfill
    \tiny
    \begin{exampleblock}{[Latmos-devel] [912]  - Transfert de la messagerie de hirtzig}
    \begin{verbatim}
Revision: 912
Author:   delcambre
Date:     2009-09-26 19:29:46 +0200 (Sat, 26 Sep 2009)
Log Message:
-----------
 - Transfert de la messagerie de hirtzig

Modified Paths:
--------------
    system/latmosvb/aliases

Modified: system/latmosvb/aliases
===================================================================
--- system/latmosvb/aliases     2009-09-26 16:01:12 UTC (rev 911)
+++ system/latmosvb/aliases     2009-09-26 17:29:46 UTC (rev 912)
@@ -1101,8 +1101,8 @@
 Vidyaranya.devarayapalli:devaraya
 Ella.Obrien:obrien
 Obrien.Ella:obrien
-Mathieu.Hirtzig:hirtzig
-Hirtzig.Mathieu:hirtzig
+Mathieu.Hirtzig:mhlmd@lmd.jussieu.fr
+Hirtzig.Mathieu:mhlmd@lmd.jussieu.fr
 khelfi.khaled:khelfi
 khaled.khelfi:khelfi
 Jean-Pierre.Saufourche:sanfourc
    \end{verbatim}
    \end{exampleblock}
    \vfill
\end{frame}
\section{Solution avec distribution (Zarb)}

\begin{frame}
    \frametitle{cfengine et puppet}
    \vfill
    \begin{block}{Role:}
    Distribuer massivement les configurations vers les machines
    \pause
    \begin{itemize}
    \item mode Client/Serveur
    \pause
    \item le serveur distribue les règles et les fichiers
    \pause
    \item le client vient régulièrement chercher les nouveautés
    \pause
    \item apporte une abstraction par rapport au système
    \end{itemize}
    \end{block}
    \vfill
    \pause
    \begin{block}{Comparaison}
    \begin{center}
    \begin{tabular}{|c|l|l|}
    \hline
    &cfengine&puppet\\
    \hline
    \hline
    langage&C&Ruby\\
    \hline
    âge&ancien&jeune\\
    \hline
    syntaxe&simple&complexe\\
    \hline
    \end{tabular}
    \end{center}
    \end{block}
    \vfill
\end{frame}

\begin{frame}
    \frametitle{Les deux approches}
    \vfill
    \begin{block}{zarb.org: svn + cfengine:}
    \begin{itemize}
    \item la config cfengine et une copie de travail subversion
    \item elle est mise à jour à chaque commit
    \item cfengine est lancé coté client via cron
    \end{itemize}
    \end{block}
    \pause
    \vfill
    \begin{block}{nanardon.zarb.org: darcs + puppet:}
    le dépot est lui même un copie de travail, l'équivalent d'un
    commit met à jours la config puppet
    \end{block}
    \vfill
\end{frame}

\section*{fin}

\begin{frame}
    \frametitle{Fin}
    \vfill
    \begin{block}{}
    \begin{center}
    Des questions ?
    \end{center}
    \end{block}
    \vfill
\end{frame}
   
\end{document}
