I'm using Fedora for the desktop and CentOS on my server. I have many software packages to install. I store them in shell scripts, with lines like this:
yum -y install vim-common vim-enhanced gvim vim-X11 # the latter for clipboard support
I'm thinking about some more elaborate way to do that (to put some packages to specific hosts and groups). Propellor seems an interesting tool for that, but when I see an example configuration file, it looks like this is a mixture of data and logic, which is considered not a very good practice.
I know that Haskell itself is a very declarative language (in the sense it's not imperative), but still I have this feeling of a mixture of code with constants. What do you think of that?
Is there a way to cleanly store names of packages (with comments and some configuration options (e.g. on what hosts they should be used)) in one place and use propellor's logic to install them in another place?
I understand that the power of propellor is to do
things apart of just enumerating them, but I think that this separation could be useful.
I was going to write something asserting that it's entirely data, and not code, though typed data expressed in a programming language.
However, I think it's better to say that this code/data distinction is much less a useful distinction that commonly thought, one that things, especially in the configuration management space often chafe under (see all the turing complete ill-specified languages built on top of what started out as some pure data format that are in use by almost every other configuration management tool), and that Propellor is an attempt to move in a more useful and less ridigly defined direction.