Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>remotes/origin/1.7
parent
4265b0ebc3
commit
0b57d84d66
@ -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} |
@ -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 new issue