\documentclass{beamer}

\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage{verbatim}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathenv}
\usepackage{enumerate}
\usetheme{Warsaw}


\title{Bcfg2}
\author{Jérémie~Dimino}

\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Sommaire}
    \tableofcontents[current]
  \end{frame}
}

\begin{document}

\frame{\titlepage}

\begin{frame}
  \frametitle{Sommaire}
  \tableofcontents
\end{frame}

\section{Introduction}

\begin{frame}
  \frametitle{Objectifs}
  \begin{itemize}
  \item
    Centraliser la configuration d'un parc de machines
    sur une seule.
  \item
    Éviter la divergence de configuration entre les machines.
  \item
    Intégrer facilement une nouvelle machine au réseau.
  \end{itemize}
\end{frame}

\section{Le principe}

\subsection{Fonctionnement niveau client}

\begin{frame}
  \frametitle{Desctiption d'une éxécution de bcfg2 niveau client}

  \begin{enumerate}[1]
    \uncover<2-5>{\item
      Le serveur envoie des \textit{probes} au client.}
    \uncover<3-5>{\item
      Le client éxécute les \textit{probes} et renvoie le résultat
      au serveur.}
    \uncover<4-5>{\item
      Le serveur construit la configuration du client et l'envoi à celui-ci.}
    \uncover<5>{\item
      Le client tente d'appliquer cette configuraion et envoie des statitiques au serveurs.}
  \end{enumerate}
\end{frame}

\subsection{Fonctionnement niveau serveur}

\begin{frame}
  \frametitle{Rôle du serveur}

  \begin{itemize}
    \item
      Le serveur construit la configuration de chaque machine qu'il gère à partir d'une descritption
      de celle-ci.
    \item
      Créé des statistiques sur l'état des machines (machine à jour, modifié localement, échec de configuration, ...),
      et divulgue ces informations aux administrateurs (par mails, interface web).
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Construction de la configuration d'un client}

  \begin{enumerate}[1]
  \uncover<1-3>{\item
    Construction des méta-données du client (ip, nom de la machine, profile, groupes, paquets, ...).}
  \uncover<2-3>{\item
    Construction d'une configuration abstraite (élément de configuration sans configuration littérale).}
  \uncover<3>{\item
    Génération de la configuration littérale à partir de la configuration abstraites et de générateurs.}
  \end{enumerate}
\end{frame}

\section{Configuration}

\subsection{Les méta-données}

\begin{frame}
  \frametitle{Les groupes}
  La définition d'un groupe contient:
  \begin{itemize}
    \item
      Les autres groupes qu'il inclu.
    \item
      Les paquets qu'il inclu.
    \item
      Éventuellement d'autres information tels que sa catégories ou le fait qu'il soit un profile ou non.
  \end{itemize}
  La définition des groupes se trouve dans Metadata/groups.xml
\end{frame}

\begin{frame}
  \frametitle{Association client/profile}

  La définition d'un client consiste en son nom et son profile.

  Le fichier Metadata/clients.xml contient la descritption des clients.
\end{frame}

\begin{frame}
  \frametitle{Méta-données d'un client}
  Toutes les méta-données d'un client consiste en:
  \begin{itemize}
  \item
    Les groupes auquels il appartient.
  \item
    Les paquets qu'ils contient.
  \item
    Le résultats de l'éxécution des probes.
  \item
    Des attributs tels que:
    \begin{itemize}
    \item
      Son ip.
    \item
      Son nom d'hôte.
    \item
      ...
    \end{itemize}
  \end{itemize}
\end{frame}

\subsection{La configuration abstraites}

\begin{frame}
  \frametitle{les éléments de configurations}
  Un élément de configuration est le nom d'une partie de la configuration du client.
  Chaque élément est typé, les types possible sont:
  \begin{itemize}
  \item
    Paquet
  \item
    Fichier de configuration
  \item
    Service
  \item
    Répertoire
  \item
    Lien symbolique
  \item
    Permissions
  \item
    Action
  \end{itemize}

Par exemple:
\begin{verbatim}
<Package name="bcfg2"/>

<ConfigFile name="/etc/bcfg2.conf"/>

<Action name="someaction"/>
\end{verbatim}
\end{frame}

\begin{frame}
  \frametitle{Les paquets}
  Un paquet est un ensemble d'élément de configuration interépendant.

  Un paquet peut inclure des conditions pour inclure certaines entrées.
\end{frame}

\begin{frame}
  \frametitle{La configuration abstraite d'un client}
  Une configuration abstraite consite en un ensemble d'élément de configuration.

  Celle-ci est construite à partir des \textit{structures} (bundle et base).
\end{frame}

\subsection{Les Générateurs}

\begin{frame}
  \frametitle{Définition}

  Un générateur est un programme qui prend en entré:
  \begin{itemize}
  \item
    Des méta-données
  \item
    Un élément de configuration
  \end{itemize}
  et qui soit renvoi la configuration littérale de l'élément, soit indique qu'il n'en est pas capable.

  Par exemple:
  \begin{itemize}
  \item
    Pour un fichier de configuration, il renvoi le contenu du fichier.
  \item
    Pour un paquet, il renvoi la version du paquet à installer.
  \item
    ...
  \end{itemize}
\end{frame}

\end{document}
