% first presentation about cmtp
\pdfminorversion=4
%\documentclass[ucs]{beamer}
\documentclass{beamer}
%\documentclass[utf8]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{german}
\usepackage{graphicx}
\usepackage{beamerthemesplit}
\setbeamercovered{dynamic}
\usetheme{Malmoe}
\usecolortheme{crane}

\title{cdist - nutzbare Konfigurationsverwaltung}
\subtitle{Cosin 2011}

\author{Nico -telmich- Schottelius}

\date{25. Juni 2011}

\begin{document}
\frame{\titlepage}

%\section[Outline]{}
\frame{\tableofcontents}

\section{Einleitung}
\frame
{
  \frametitle{Was ist das Problem?}
  \begin{itemize}
  \item Einmal konfigurieren = toll
  \item Zweimal konfigurieren = naja, ...
  \item Neue Sachen machen mehr Spass als alte wiederholen
  \item Viele Rechner = viel Mühe?
  \end{itemize}
}

\frame
{
  \frametitle{Das ist nicht neu...}
  \begin{itemize}
  \item cfengine
  \item Puppet
  \item bcfg2
  \item chef
  \item ...
  \end{itemize}
}

\frame
{
  \frametitle{Warum cdist?}
  \begin{itemize}
     \item Klein
     \item Unix
     \item Leicht zu bedienen
     \item ... zu erweitern
     \item Shell
     \item Weil es Spaß macht!
  \end{itemize}
}

\section{Installieren}
\frame
{
  \frametitle{Vorraussetzungen}
  \begin{itemize}
     \item sshd
     \item root login via sshd
     \item Besser: ssh-pubkey konfiguriert (PermitRootLogin without-password)
     \item git
     \item Asciidoc für dia manpages
  \end{itemize}
}

\frame
{
  \frametitle{Installation}
  \begin{center}
  git clone git://git.schottelius.org/cdist
  \end{center}
}

\begin{frame}[fragile]
  \frametitle{Erstellen der Manpages}

  \begin{verbatim}
  # Braucht asciidoc / a2x
  ./build.sh man
  \end{verbatim}
\end{frame}

\section{Nutzen}
\begin{frame}[fragile]
  \frametitle{Vorbereitung PATH und MANPATH}

  \begin{verbatim}
  cd cdist
  eval `./bin/cdist-env`
  echo $PATH
  echo $MANPATH
  \end{verbatim}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Nun los}
  \begin{verbatim}
  # Fangen wir bei uns an
  cdist-deploy-to localhost
  \end{verbatim}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Der Einstiegspunkt}
  \begin{small}
  \begin{verbatim}
  cat << eof > conf/manifest/init
  __file /etc/cdist-configured

  case "$__target_host" in
     localhost)
         __link /tmp/cdist-testfile          \
            --source /etc/cdist-configured   \ 
            --type symbolic
         __addifnosuchline /tmp/cdist-welcome \
            --line "Welcome to cdist"
      ;;
   esac
   eof
   # Muss ausführbar sein
   chmod u+x conf/manifest/init

  \end{verbatim}
  \end{small}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Nun los}
  \begin{verbatim}
  # Nun läuft es!
  cdist-deploy-to localhost
  \end{verbatim}
\end{frame}

\frame
{
  \frametitle{Funktionalität zusammenfassen}
  \begin{itemize}[<+->]
     \item "`Typen"' (types)
     \item conf/type/*
     \item \_\_ vor jedem Namen (Shell-Umgebung)
     \item z.B. Netzseite, Mailserver, Wiki, ...
  \end{itemize}
}

\begin{frame}[fragile]
   \frametitle{Ein neuer Typ}
   \begin{small}
   \begin{verbatim}
   % mkdir conf/type/__my_mailserver
   % cat << eof > conf/type/__my_mailserver/manifest
   # Dieser Typ konfiguriert meinen Mailserver
   require="__package/nullmailer" \
       __file /etc/nullmailer/remotes \
          --source "$__type/files/remotes"

   # Reihenfolge spielt keine Rolle
   __package nullmailer --state installed
   eof
   \end{verbatim}
   \end{small}
\end{frame}

\begin{frame}[fragile]
   \frametitle{Ein neuer Typ (2)}
   \begin{small}
   \begin{verbatim}
   # Wichtig: Wird ausgeführt
   % chmod u+x conf/type/__my_mailserver/manifest

   # Darf nur einmal verwendet werden pro Rechner
   % touch conf/type/__my_mailserver/singleton

   # Nullmailer Konfiguration
   % mkdir conf/type/__my_mailserver/files
   % echo my.fancy.smart.host > \
       conf/type/__my_mailserver/files/remotes
   \end{verbatim}
   \end{small}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Neuen Typ nutzen}
  \begin{small}
  \begin{verbatim}
  % $EDITOR conf/manifest/init

  case "$__target_host" in
     localhost)
        ...
         __my_mailserver
        ...
      ;;
  \end{verbatim}
  \end{small}
\end{frame}

\section{Aktualisieren}
\begin{frame}[fragile]
  \frametitle{Versionen}
  \begin{itemize}[<+->]
     \item x.y: Stabile Version
     \item master: Entwicklung
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Stabile Version auswählen}
  \begin{center}
  git checkout -b 1.7 origin/1.7
  \end{center}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Aktualisieren}
  \begin{center}
  git pull
  \end{center}
\end{frame}

\frame
{
  \frametitle{Ende}
  \begin{block}{Das war's}
  Viel Spaß - Mehr Infos gibt's auf http://www.nico.schottelius.org/software/cdist/\\
  und http://l.schottelius.org/pipermail/cdist
  \end{block}
}


\end{document}