forked from ungleich-public/cdist
118 lines
4 KiB
Markdown
118 lines
4 KiB
Markdown
[[!meta title="Update Guide for 2.0 to 2.1"]]
|
|
|
|
## Introduction
|
|
|
|
When changing your installation from 2.0 to 2.1, there are
|
|
a lot of changes coming up. 2.1 is mainly a cleanup release,
|
|
which removes long time deprecated behaviour, but also makes
|
|
a lot of things more consistent and allows you to split off your types,
|
|
explorers and manifest to custom directories.
|
|
|
|
This document will guide you to a successful update.
|
|
|
|
## Preparation
|
|
|
|
As for every software and system you use in production, you should first of
|
|
all make a backup of your data. To prevent any breakage, it is
|
|
recommended to create a new git branch to do the update on:
|
|
|
|
% git checkout -b update_to_2.1
|
|
|
|
This also ensure that whenever you need to do a change in your
|
|
2.0 based tree, you can simply go back to that branch, apply the change
|
|
and configure your systems - independently of your update progress!
|
|
|
|
Next fetch the latest upstream changes, I assume that
|
|
origin refers to one of the upstream mirrors (change origin if you use
|
|
another remote name for upstream cdist):
|
|
|
|
% git fetch -v origin
|
|
|
|
## Merge the changes
|
|
|
|
Now try to merge upstream into the new branch.
|
|
|
|
% git merge origin/2.1
|
|
|
|
Fix any conflicts that may have been occurred due to local changes
|
|
and then **git add** and *git commit** those changes. This should seldom
|
|
occur and if, it's mostly for people hacking on the cdist core.
|
|
|
|
## Move "conf" directory
|
|
|
|
One of the biggest changes in cdist 2.1 is that you can have multiple
|
|
**conf** directories: Indeed, the new default behaviour of cdist is to
|
|
search for conf directories
|
|
|
|
* below the python module (cdist/conf in the source tree or in the installed location)
|
|
* at ~/.cdist/ (on conf suffix there)
|
|
|
|
So you can now choose, where to store your types.
|
|
|
|
### Integrate your conf/ back into the tree
|
|
|
|
If you choose to store your types together with the upstream types,
|
|
you can just move all your stuff below **cdist/conf**:
|
|
|
|
% git mv conf/type/* cdist/conf/type
|
|
% git mv conf/manifest/* cdist/conf/manifest
|
|
% git mv conf/explorer/* cdist/conf/explorer
|
|
% git commit -m "Re-Integrate my conf directory into cdist 2.1 tree"
|
|
|
|
### Move your conf/ directory to ~/.cdist
|
|
|
|
If you want to store your site specific
|
|
configuration outside of the cdist tree, you
|
|
can move your conf/ directory to your homedirectory ($HOME) under ~/.cdist:
|
|
|
|
% mv conf ~/.cdist
|
|
% git rm -r conf
|
|
% git commit -m "Move my conf directory to ~/.cdist"
|
|
|
|
It it still recommended to use a version control system like git in it:
|
|
|
|
% cd ~/.cdist
|
|
% git init
|
|
% git add .
|
|
% git commit -m "Create new git repository containing my cdist configuration"
|
|
|
|
## Test the migration
|
|
|
|
Some of the types shipped with upstream were changed, so you may want to test
|
|
the result by running cdist on one of your staging target hosts:
|
|
|
|
% ./bin/cdist config -v staging-host
|
|
|
|
All incompatibilities are listed on the [[cdist update page|software/cdist/update]],
|
|
so you can browse through the list and update your configuration.
|
|
|
|
## Final Cleanups
|
|
|
|
When everything is tested, there are some cleanups to be done to finalise the update.
|
|
|
|
### When continuing to keep conf/ in the tree
|
|
|
|
You can then merge back your changes into the master tree and continue to work
|
|
as normal.
|
|
|
|
### When using ~/.cdist
|
|
|
|
If you decided to move your site specific code to ~/.cdist, you can now switch your
|
|
**master** branch or version branch to upstream directly. Assumnig you are in the
|
|
cdist directory, having your previous branch checked out, you can create a clean
|
|
state using the following commands:
|
|
|
|
% upstream_branch=2.1
|
|
% current_branch=$(git rev-parse --abbrev-ref HEAD)
|
|
% git checkout -b archive_my_own_tree
|
|
% git branch -D "$current_branch"
|
|
% git checkout -b "$current_branch" "origin/$upstream_branch"
|
|
|
|
Afther these commands, your previous main branch is accessible at
|
|
**archive_my_own_tree** and your branch is now tracking upstream.
|
|
|
|
## Questions? Critics? Hints?
|
|
|
|
If you think this manual helped or misses some information, do not
|
|
hesitate to contact us on any of the usual ways (irc, mailinglist,
|
|
github issue tracker, ...).
|