cdist-tutorial(7)


Table of Contents

1. NAME
2. PREPARING YOUR MACHINE / SETUP
3. YOUR FIRST CONFIGURATION
4. DEFINE STATE IN THE INITAL MANIFEST
5. USING SOME BASIC TYPES
6. CREATING YOUR FIRST OWN TYPE
7. USE A TYPE TO BUNDLE FUNCTIONALITY
8. USING EXPLORERS
9. DEBUGGING YOUR TYPES
10. INTRODUCTION
11. QUICK START
12. SEE ALSO

1. NAME

cdist-tutorial - a guided introduction into cdist

2. PREPARING YOUR MACHINE / SETUP

  • ensure sshd is running on the target host:

ssh target_host

  • ensure you can login as root

ssh root@target host

  • ensure login as root works without keys (see ssh… manpage)

cdist will do a lot of requests to the target host, thus you’ll have to enter your password many times, if you don’t do this :-)

  • speedup processing with ControlMaster option of ssh

3. YOUR FIRST CONFIGURATION

4. DEFINE STATE IN THE INITAL MANIFEST

The initial manifest is used to map configurations to a host.

5. USING SOME BASIC TYPES

what is a type, how to use it,

6. CREATING YOUR FIRST OWN TYPE

<with object id? or signleton here already>

7. USE A TYPE TO BUNDLE FUNCTIONALITY

8. USING EXPLORERS

global, type explorer

9. DEBUGGING YOUR TYPES

__debug
If this variable is setup, cdist runs in debug mode. You can use this information, to only output stuff in debug mode as well. Available for: initial manifest, type manifest, gencode, code

10. INTRODUCTION

This tutorial is aimed at people learning cdist and shows typical approaches as well as gives an easy start into the world of configuration management.

This tutorial assumes you are configuring localhost, because it is always available. Just repace localhost with your target host for real life usage.

11. QUICK START

For those who just want to configure a system with the cdist configuration management and do not need (or want) to understand everything.

Cdist uses ssh for communication and transportation and usually logs into the target host as the root user. So you need to configure the ssh server of the target host to allow root logins: Edit the file /etc/ssh/sshd_config and add one of the following lines:

# Allow login only via public key
PermitRootLogin without-password

# Allow login via password and public key
PermitRootLogin yes

As cdist uses ssh intensively, it is recommended to setup authentication with public keys:

# Generate pubkey pair as a normal user
ssh-keygen

# Copy pubkey over to target host
ssh-copy-id root@localhost

As soon as you are able to login without passwort to the target host, we can use cdist, to configure it. You can copy and paste the following code into your shell to get started and configure localhost:

# Get cdist
git clone git://git.schottelius.org/cdist

# Create manifest (maps configuration to host(s)
cd cdist
echo '__file /etc/cdist-configured' > conf/manifest/init
chmod 0700 conf/manifest/init

# Configure localhost
./bin/cdist config localhost

# Find out that cdist created /etc/cdist-configured
ls -l /etc/cdist-configured

The file conf/manifest/init is usually the entry point for cdist, to find out what to configure on which host. All manifests are essentially shell scripts. Every manifest can use the types known to cdist, which are usually underline prefixed (__).

12. SEE ALSO

cdist(1), cdist-type(7), cdist-stages(7)