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