77b1c676ca
Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
200 lines
3.8 KiB
Text
200 lines
3.8 KiB
Text
cdist-tutorial(7)
|
|
=================
|
|
Nico Schottelius <nico-cdist--@--schottelius.org>
|
|
|
|
|
|
NAME
|
|
----
|
|
cdist-tutorial - a guided introduction into cdist
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
YOUR FIRST CONFIGURATION
|
|
------------------------
|
|
|
|
|
|
DEFINE STATE IN THE INITAL MANIFEST
|
|
-----------------------------------
|
|
|
|
The initial manifest is used to map
|
|
configurations to a host.
|
|
|
|
USING SOME BASIC TYPES
|
|
----------------------
|
|
what is a type, how to use it,
|
|
|
|
|
|
CREATING YOUR FIRST OWN TYPE
|
|
----------------------------
|
|
<with object id? or signleton here already>
|
|
|
|
|
|
USE A TYPE TO BUNDLE FUNCTIONALITY
|
|
----------------------------------
|
|
|
|
|
|
USING EXPLORERS
|
|
---------------
|
|
global, type explorer
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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 (__).
|
|
|
|
|
|
SEE ALSO
|
|
--------
|
|
cdist(1), cdist-type(7), cdist-stages(7)
|