forked from ungleich-public/cdist
add tex sources of first two cdist specches
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
parent
4265b0ebc3
commit
0b57d84d66
2 changed files with 449 additions and 0 deletions
210
doc/speeches/2011-03-18_hacker_erwachen.tex
Normal file
210
doc/speeches/2011-03-18_hacker_erwachen.tex
Normal file
|
@ -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}
|
239
doc/speeches/2011-04-27_sans.tex
Normal file
239
doc/speeches/2011-04-27_sans.tex
Normal file
|
@ -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}
|
Loading…
Reference in a new issue