cdist/docs/speeches/2011-04-27_sans.tex

240 lines
5.9 KiB
TeX

% 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{2011-04-27}
\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}