\begin{frame}
  \frametitle{Dictionnaire Creole}
  \begin{itemize}
    \item Un dictionnaire est un fichier XML Creole ;
    \item décrit les variables présentes dans l'interface de configuration ;
    \item informations utiles pour les services ;
    \item les dictionnaires locaux sont dans /usr/share/eole/creole/dicos/local/.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{CreoleLint}
  \begin{itemize}
    \item Vérifie la syntaxe du dictionnaire : \commande{CreoleLint -d} ;
    \item test la génération d'un template suivant contrainte : \commande{CreoleLint -t nom\_du\_template}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{CreoleCat}
  \begin{itemize}
    \item Templatise un fichier sans faire de reconfigure (objectif de test) ;
    \item \commande{CreoleCat -t nom\_du\_template}
    \item \commande{CreoleCat -t nom\_du\_template -o /tmp/template.tmpl}
    \item \commande{CreoleCat -s /tmp/nom\_du\_template -o /tmp/template.tmpl}
  \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{CreoleGet}
  \framesubtitle{Récupérer la valeur d’une variable}
 \begin{itemize}
   \item \commande{CreoleGet nom\_variable}
   \item \commande{CreoleGet --list}
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{CreoleSet}
  \framesubtitle{Assigner une valeur à une variable}
 \begin{itemize}
   \item \commande{CreoleSet <nom\_variable> <valeur>} ;
   \item Pour une liste : \commande{CreoleSet nom\_variable """valeur1}
   \item \commande{> valeur2"""} ;
 \end{itemize}
  \begin{alertblock}{Manipulation des listes esclaves}
    \commande{CreoleSet} ne permet pas de changer la longueur d’une liste esclave. Une assignation de valeur pour une liste doit respecter la longueur initiale.
  \end{alertblock}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les paquets}
  \begin{itemize}
    \item Les paquets fonctionnent sur le maitre ou dans un conteneur ;
    \item permet d'installer les paquets sans passer par les dépendances de paquet.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les services}
  \begin{itemize}
    \item Services fonctionnent sur le maitre ou dans un conteneur ;
    \item différentes méthodes : service, upstart (version EOLE inférieur à 2.6) ou apache.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Le firewall}
  \begin{itemize}
    \item On commence par ouvrir les accès (service\_access) ;
    \item on ajoute ensuite les restrictions (service\_restiction).
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les familles}
  \begin{itemize}
    \item Les variables sont classées dans des familles.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les variables}
  \begin{itemize}
    \item Les variables sont typées :
      \begin{itemize}
        \item number, port,
        \item string, mail, filename, unix\_user, web\_address,
        \item ip, local\_ip, netmask, network, broadcast,
        \item netbios, domain, domain\_strict, hostname, hostname\_strict,
        \item oui/non, on/off, yes/no.
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les fichiers templates}
  \begin{itemize}
    \item Le nom des fichiers templates sont dans les dictionnaires (file) ;
    \item le répertoire de destination doit exister par défaut ;
    \item possibilité de définir les droits sur le fichier ;
    \item nom de la source peut être différents de la destination.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \frametitle{Les contraintes}
  \begin{itemize}
    \item pour tester/remplir/grouper/conditionner des variables ;
      \begin{itemize}
        \item calcul automatique (fill),
        \item calcul automatique non modifiable (auto),
        \item choix de réponse (valid\_enum),
        \item cacher des variables suivant des contraintes (condition),
        \item groupe de variables (group) :
      \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Dictionnaires Creole}
  \framesubtitle{Redéfinition de variables}
  \begin{itemize}
    \item Permet de redéfinir des attributs et caractéristiques :
      \begin{itemize}
        \item service
        \item variable
      \end{itemize}
    \item remove\_check : supprimer les "check" déjà définit de la variable.
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Langague de template Creole}
  \begin{itemize}
    \item Un template utilise le langage de template Creole.
    \item variable Creole préfixé par \begin{semiverbatim}\%\%\end{semiverbatim}
    \item Test : \begin{semiverbatim}\%if EXPRESSION   code if   \%else   code else   \%end if\end{semiverbatim}
    \item Boucle : \begin{semiverbatim}\%for \%\%i in EXPRESSION    hello \%\%i  \%end for\end{semiverbatim}
    \item Boucle pour variable multi évolué avec esclave : \begin{semiverbatim}\%for \%\%var in \%\%variablemaitre\end{semiverbatim}\begin{semiverbatim}\%\%var, \%\%var.esclave1, \%\%var.esclave2\end{semiverbatim}\begin{semiverbatim}\%end for\end{semiverbatim}
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Langague de template Creole}
  \begin{itemize}
    \item Test existence : \begin{semiverbatim}\%if \%\%is\_defined('variable')    code if   \%end if\end{semiverbatim}
    \item valeur vide : \begin{semiverbatim}\%if \%\%is\_empty(\%\%variable)    code if   \%end if\end{semiverbatim}
    \item nom de variable dans une variable : \begin{semiverbatim}\%set \%\%var='adresse\_ip\_eth0' \%\%getVar(\%\%var)\end{semiverbatim}
  \end{itemize}
\end{frame}
