239 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			239 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}
 |