[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Managing apt/dpkg/debconf configurations.

Hi all,

I'm managing a number of (ubuntu) workstations and servers and found it labour-intensive to keep configurations similar.
I use aptitude to set my manual/auto selections and have some preferences on certain debconf questions.
I know about some tricks/hacks to import/export package selections and I know about the debconf-pre-seed configuration at install time.

This all feels to limited to me.

What I would like is a way to 'package' certain parts of the dpkg/apt/debconf configuration and diff them to other systems and apply them on top of each other.
Of course I know about packages like ubuntu-standard and ubuntu-desktop, but they are too limited for my needs, since they only are just a list of dependencies (and recommendations, which can be ignored per system).

I know there are ways of 'cloning' systems, but many times systems don't need to be exactly the same, and after cloning, systems may wander off in different directions.

I would like to have some tool/collection of scripts to be able to diff/apply system/packaging related stuff.
It should be able to have a branching/merging workflow like git.
let's call it 'debdiff'
example (just a brainfart):

(after installing a basic system)
- (un)install some packages
- reconfigure some debconf settings.
- manually edit some files in /etc

> debdiff
--- installed the following packages
build-essential (manual)
kdepim (manual)
kdepimlibs (automatic)
--- uninstalled the following packages
--- changed to manual
--- changed to auto
--- changed debconf settings:
adduser - system wide readable home directories: false
Xorg-base - who can start X: console_users_only
--- diffs to config files

well, you get the picture.
> debdiff save 'basic kde'
> debdiff
no changes
> debdiff list
(0) ubuntu clean install
(1) paranoid system settings
(2) basic kde
(3) non-packaged, local changes

> debdiff export 'basic kde'
> scp 'basic kde.debdiff' othermachine:
(on othermachine)
> debdiff apply 'basic kde'

or comparing entire systems:
> debdiff export
> scp myhostname-200902100802.debdiff othermachine:
(on othermachine)
> debdiff compare myhostname-200902100802.debdiff
--- diffs in paranoid system settings:
package 'apparmor-profiles' is not installed
debconf setting 'shadow passwords'
- true
+ false
-- branch 'basic kde' is not merged on this system

Well, I think this is enough mockup-session for now :)
Of course there are some problems to work out, and I probably forgot some essential stuff.
I would just like to know if there's anything close to the process I described.
If not, what would be needed to get something off the ground?
Basically I think tools like git are very good at merging/diffing, and the de-centralized approach is well suited for configuring individual systems, yet have some 'central' repositories to merge from.
What is missing is a textual representation of apt/dpkg/debconf's state though.
A first step would be to just be able to diff total system states (so no applying/saving of state), so I can manually change stuff I need.
After that, some way to 'package' these diffs and apply them elsewhere would be a next step.

I would like to hear anyone's opinion on this subject and tools/tricks that are already available that might be useful.
If I get enough feedback I might start implementing something.

Have a nice day,

Reply to: