diff --git a/doc/speeches/2011-03-18_hacker_erwachen.tex b/doc/speeches/2011-03-18_hacker_erwachen.tex new file mode 100644 index 00000000..8acadd50 --- /dev/null +++ b/doc/speeches/2011-03-18_hacker_erwachen.tex @@ -0,0 +1,210 @@ +% 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{Hacker Erwachen 2011} + +\author{Nico -telmich- Schottelius} + +\date{18. März 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 (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 + make 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} + # So wird es laufen... + 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 + __package nullmailer --state installed + + require="__package/nullmailer" \ + __file /etc/nullmailer/remotes \ + --source "$__type/files/remotes" + eof + chmod u+x conf/type/__my_mailserver/manifest + + mkdir conf/type/__my_mailserver/files + echo my.fancy.smart.host > \ + conf/type/__my_mailserver/files/remotes + \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.2 origin/1.2 + \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/ + \end{block} +} + + +\end{document} diff --git a/doc/speeches/2011-04-27_sans.tex b/doc/speeches/2011-04-27_sans.tex new file mode 100644 index 00000000..f89c5f07 --- /dev/null +++ b/doc/speeches/2011-04-27_sans.tex @@ -0,0 +1,239 @@ +% first presentation about cmtp +\documentclass{beamer} +% \usepackage{german} +\usepackage{graphicx} +\usepackage{beamerthemesplit} +\setbeamercovered{dynamic} +\usepackage[utf8]{inputenc} +\usetheme{Malmoe} +\usecolortheme{crane} + +% \usepackage{minted} + +% grahpic! +\usepackage[dvips]{epsfig} + +\title{cdist configuration management} +\subtitle{History and current status at ETH Zurich} +\author{Nico -telmich- Schottelius} +\date{\today} + +\begin{document} +\frame{\titlepage} +\section[Outline]{} +\frame{\tableofcontents} + + +\section{Introduction} +\frame +{ + \frametitle{Outline} + \begin{itemize} + \item From configuration management + \item to puppet and existing products + \item to cdist development, design and status + \end{itemize} +} + +\frame +{ + \frametitle{Why Configuration Management?} + \begin{itemize} + \item Needed for automatisation + \item Removes burden on reinstallation + \item Helps to scale to a big number of hosts + \item Has documentation character + \end{itemize} +} + +\frame +{ + \frametitle{Why cdist?} + \begin{itemize} + \item Stopped using puppet (mostly due to bugs and non-intuitive configuration) + \item Cfengine2 is more complicated + \item Cfengine3 spams into your logfiles + \item Did not investitage to deep into chef (based on puppet) or bcfg2 + \end{itemize} +} + +\section{cdist} +\begin{frame} + \frametitle{Features} + \begin{itemize} +\item Simplicity: There is only one type to extend cdist called type +\item Design: Type and core cleanly seperated +\item Design: Sticks completly to the KISS (keep it simple and stupid) paradigma +\item Design: Meaningful error messages - do not lose time debugging error messages + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Features (2)} + \begin{itemize} +\item Design: Consistency in behaviour, naming and documentation +\item Design: No surprise factor: Only do what is obviously clear, no magic +\item Design: Define target state, do not focus on methods or scripts +\item Design: Push architecture: Instantly apply your changes + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Features (3)} + \begin{itemize} +\item Small core: cdist's core is very small - less code, less bugs +\item Fast development: Focus on straightforwardness of type creation is a main development objective + \end{itemize} +\end{frame} +\begin{frame}[fragile] + \frametitle{Features (4)} + \begin{itemize} +\item Requirements, Scalability: No central server needed, cdist operates in push mode and can be run from any computer +\item Requirements, Scalability, Upgrade: cdist only needs to be updated on the master, not on the target hosts +\item Requirements, Security: Uses well-know SSH as transport protocol +\item Requirements, Simplicity: Requires only shell and SSH server on the target + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Features (5)} + \begin{itemize} +\item UNIX: Reuse of existing tools like cat, find, mv, ... +\item UNIX, familar environment, documentation: Is available as manpages and HTML +\item UNIX, simplicity, familar environment: cdist is written in POSIX shell +\item UNIX, simplicity, familar environment: cdist is configured in POSIX shell + \end{itemize} +\end{frame} + +\subsection{Installation} +\frame +{ + \frametitle{Installation} + \begin{center} + git clone git://git.schottelius.org/cdist + \end{center} +} + +\begin{frame}[fragile] + \frametitle{Documentation: Manpages} + + \begin{verbatim} + # Requires asciidoc / a2x + make man + \end{verbatim} +\end{frame} + +\subsection{Using} +\begin{frame}[fragile] + \frametitle{Setup PATH and MANPATH} + + \begin{verbatim} + cd cdist + eval `./bin/cdist-env` + echo $PATH + echo $MANPATH + \end{verbatim} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Deploying configuration to a host} + \begin{verbatim} + # So wird es laufen... + cdist-deploy-to localhost + \end{verbatim} +\end{frame} +\begin{frame}[fragile] + \frametitle{Initial manifest} + \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 + # Needs to be executable + chmod u+x conf/manifest/init + + \end{verbatim} + \end{small} +\end{frame} +\begin{frame}[fragile] + \frametitle{Now with working initial manifest} + \begin{verbatim} + cdist-deploy-to localhost + \end{verbatim} +\end{frame} + +\frame +{ + \frametitle{Combine functionality} + % \begin{itemize}[<+->] + \begin{itemize} + \item Types + \item conf/type/* + \item \_\_ prefixed (do not clash with other stuff in \$PATH) + \item i.e. webserver, mailserver, desktop, ... + \end{itemize} +} +\begin{frame}[fragile] + \frametitle{Creating a new type} + \begin{small} + \begin{verbatim} + mkdir conf/type/__my_mailserver + cat << eof > conf/type/__my_mailserver/manifest + __package nullmailer --state installed + + require="__package/nullmailer" \ + __file /etc/nullmailer/remotes \ + --source "$__type/files/remotes" + eof + chmod u+x conf/type/__my_mailserver/manifest + + mkdir conf/type/__my_mailserver/files + echo my.fancy.smart.host > \ + conf/type/__my_mailserver/files/remotes + \end{verbatim} + \end{small} +\end{frame} + +\subsection{Update} +\begin{frame}[fragile] + \frametitle{Versions} + \begin{itemize} + \item x.y: Stable version + \item master: Development + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Checkout and stay on stable version} + \begin{center} + git checkout -b 1.6 origin/1.6 + \end{center} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Update to latest} + \begin{center} + git pull + \end{center} +\end{frame} + +\frame +{ + \frametitle{End} + \begin{block}{That's it!} + Have fun! - More information: http://www.nico.schottelius.org/software/cdist/ + \end{block} +} + + +\end{document}