Merge branch 'master' of ssh://propellor.branchable.com
This commit is contained in:
commit
27f4c9be43
|
@ -1,5 +1,5 @@
|
||||||
The [API documentation](http://hackage.haskell.org/package/propellor) of
|
The [API documentation](http://hackage.haskell.org/package/propellor) of
|
||||||
Propellor's modules is the most important docuemntation of propellor.
|
Propellor's modules is the most important documentation of propellor.
|
||||||
|
|
||||||
Other documentation:
|
Other documentation:
|
||||||
|
|
||||||
|
@ -9,6 +9,6 @@ Other documentation:
|
||||||
* [[Components]]
|
* [[Components]]
|
||||||
* [[Contributing]]
|
* [[Contributing]]
|
||||||
* [[Interface Stability]]
|
* [[Interface Stability]]
|
||||||
* [[Coding Stye]]
|
* [[Coding Style]]
|
||||||
* [[Security]]
|
* [[Security]]
|
||||||
* [[Debugging]]
|
* [[Debugging]]
|
||||||
|
|
|
@ -0,0 +1,160 @@
|
||||||
|
Having taken the inital hurdle of getting propellor running
|
||||||
|
(cf. my last post in this forum), I am beginning to like propellor
|
||||||
|
quite a lot. - This comes not too much as a surprise, as I am
|
||||||
|
a Haskeller really. - I would love to use it for all my configuration
|
||||||
|
needs, and to that end ditch ansible.
|
||||||
|
|
||||||
|
Propellor's biggest show stopper for me is this (maybe I am misunderstanding
|
||||||
|
propellor?):
|
||||||
|
|
||||||
|
I can run
|
||||||
|
|
||||||
|
```
|
||||||
|
propellor --spin myhost
|
||||||
|
```
|
||||||
|
|
||||||
|
from the command line, and all the tasks/properties that I have
|
||||||
|
defined myhost to have beforehand will be executed/realized/configured.
|
||||||
|
|
||||||
|
Say eg. I haved defined
|
||||||
|
|
||||||
|
```
|
||||||
|
myhost :: Host
|
||||||
|
myhost = host "myhost"
|
||||||
|
& os (System (Debian Testing) "amd64")
|
||||||
|
& emacs
|
||||||
|
& apt
|
||||||
|
|
||||||
|
|
||||||
|
emacs :: Property HasInfo
|
||||||
|
emacs = propertyList "install & configure emacs" $ props
|
||||||
|
& Apt.installed ["emacs"
|
||||||
|
, "auto-complete-el"]
|
||||||
|
|
||||||
|
apt :: Property HasInfo
|
||||||
|
apt = propertyList "apt update + upgrade" $ props
|
||||||
|
& Apt.update
|
||||||
|
& Apt.upgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Then running
|
||||||
|
|
||||||
|
```
|
||||||
|
propellor --spin myhost
|
||||||
|
```
|
||||||
|
|
||||||
|
will make sure, that emacs is installed, and all my
|
||||||
|
packages on myhost are up to date.
|
||||||
|
|
||||||
|
It does so every time I run propellor, but normally I install
|
||||||
|
emacs only once (and I know it's installed), whereas
|
||||||
|
the apt update+upgrade combo I would want to run every other day.
|
||||||
|
|
||||||
|
So what I would like is this: have just a minimal config for
|
||||||
|
myhost, like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
myhost :: Host
|
||||||
|
myhost = host "myhost"
|
||||||
|
& os (System (Debian Testing) "amd64")
|
||||||
|
```
|
||||||
|
|
||||||
|
and then run a task (require a property ?) on myhost, somehow
|
||||||
|
from the command line, like this
|
||||||
|
|
||||||
|
```
|
||||||
|
propellor --spin myhost --task apt
|
||||||
|
```
|
||||||
|
|
||||||
|
Many other properties / installation steps I could run in this
|
||||||
|
manner, like installing emacs initially
|
||||||
|
|
||||||
|
```
|
||||||
|
propellor --spin myhost --task emacs
|
||||||
|
```
|
||||||
|
|
||||||
|
In ansible I can do this with playbooks:
|
||||||
|
|
||||||
|
```
|
||||||
|
ansible-playbook -l myhost apt.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
with some preconfigured playbook apt.yml that does just
|
||||||
|
the apt update + upgrade task and nothing else. But I would
|
||||||
|
have other tasks in other playbooks of course: I can install & configure
|
||||||
|
emacs on myhost
|
||||||
|
|
||||||
|
```
|
||||||
|
ansible-playbook -l myhost emacs.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
etc.
|
||||||
|
|
||||||
|
Related to that (but maybe not strictly the same question):
|
||||||
|
|
||||||
|
I wouldn't mind writing my own haskell script that does
|
||||||
|
the command line parsing (with optparse applicative eg):
|
||||||
|
I could have options for
|
||||||
|
|
||||||
|
```
|
||||||
|
--host (myhost/...)
|
||||||
|
```
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
```
|
||||||
|
--task (emacs/apt/...)
|
||||||
|
```
|
||||||
|
and then just call into propellor. Unfortunately propellor's
|
||||||
|
defaultMain does more than I want: gets the command line
|
||||||
|
from processCmdLine.
|
||||||
|
|
||||||
|
So I tried to create my own otherMain (similar to defaultMain,
|
||||||
|
but would let me do my own command line parsing):
|
||||||
|
|
||||||
|
```
|
||||||
|
otherMain :: [Host] -> CmdLine -> IO ()
|
||||||
|
```
|
||||||
|
|
||||||
|
but then at some point just gave up: for one thing: things
|
||||||
|
were getting complicated, because of all the indirection:
|
||||||
|
the propellor command line tool recompiles itself (?),
|
||||||
|
does all this git stuff etc.
|
||||||
|
|
||||||
|
And then: maybe I am approaching things in the wrong direction:
|
||||||
|
maybe it's just not meant to be used that way
|
||||||
|
(but ansible works fine for me in this regard)?
|
||||||
|
|
||||||
|
And I thought: I don't really want to start a major programming
|
||||||
|
task just to get this thing working, the way that seems
|
||||||
|
reasonable to me. Or maybe it's possible already, and I just
|
||||||
|
don't know how to use it? (So I am stuck with ansible for the time
|
||||||
|
being).
|
||||||
|
|
||||||
|
Still more or less related:
|
||||||
|
|
||||||
|
Say this otherMain function existed, that allowed me to
|
||||||
|
to do my own command line parsing and just
|
||||||
|
call propellor on some host with the one or the other task,
|
||||||
|
I am not 100% what's the right
|
||||||
|
way to ensure/require/execute such a task on a host:
|
||||||
|
|
||||||
|
above I am just using
|
||||||
|
|
||||||
|
```
|
||||||
|
host & property
|
||||||
|
```
|
||||||
|
|
||||||
|
(from PropAccum), but maybe ensureProperty is better suited
|
||||||
|
for that?
|
||||||
|
|
||||||
|
Also for the wish list: some CONFIG_FILE env variable that
|
||||||
|
would allow me to keep my config.hs somewhere other than
|
||||||
|
in ~/.propellor/config.hs
|
||||||
|
|
||||||
|
|
||||||
|
Anyway, thanks so far
|
||||||
|
I would certainly want to switch to propellor completely.
|
||||||
|
|
||||||
|
Andreas
|
|
@ -0,0 +1,16 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawm-czsfuWENKQ0GI8l0gnGTeF1JEli1mA0"
|
||||||
|
nickname="Andreas"
|
||||||
|
subject="thanks a lot"
|
||||||
|
date="2015-04-06T21:11:46Z"
|
||||||
|
content="""
|
||||||
|
thanks for your your commments (both of them),
|
||||||
|
and fair enough: have just renamed my origin remote to upstream,
|
||||||
|
will try your installedFromExperimental suggestion next.
|
||||||
|
|
||||||
|
|
||||||
|
I will have more questions about propellor,
|
||||||
|
but aske them in a different thread
|
||||||
|
(as they are not really about installation)
|
||||||
|
|
||||||
|
"""]]
|
Loading…
Reference in New Issue