2014-04-19 20:44:17 +00:00
|
|
|
[Propellor](https://propellor.branchable.com/) is a
|
|
|
|
configuration management system using Haskell and Git.
|
|
|
|
Each system has a list of properties, which Propellor ensures
|
|
|
|
are satisfied.
|
2014-04-19 19:45:27 +00:00
|
|
|
|
|
|
|
Propellor is configured via a git repository, which typically lives
|
2014-04-19 20:44:17 +00:00
|
|
|
in `~/.propellor/` on your development machine. Propellor clones the
|
2014-04-19 21:08:20 +00:00
|
|
|
repository to each host it manages, in a
|
2014-05-11 16:32:37 +00:00
|
|
|
[secure](http://propellor.branchable.com/security/) way. The git repository
|
|
|
|
contains the full source code to Propellor, along with its config file.
|
2014-04-19 19:45:27 +00:00
|
|
|
|
2014-04-19 20:44:17 +00:00
|
|
|
Properties are defined using Haskell. Edit `~/.propellor/config.hs`
|
|
|
|
to get started. There is fairly complete
|
2014-04-19 21:22:06 +00:00
|
|
|
[API documentation](http://hackage.haskell.org/package/propellor/),
|
|
|
|
which includes many built-in Properties for dealing with
|
2014-08-19 21:33:00 +00:00
|
|
|
[Apt](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Apt.html)
|
2014-04-19 21:22:06 +00:00
|
|
|
and
|
2014-08-19 21:33:00 +00:00
|
|
|
[Apache](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Apache.html)
|
2014-04-19 21:22:06 +00:00
|
|
|
,
|
2014-08-19 21:33:00 +00:00
|
|
|
[Cron](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Cron.html)
|
2014-04-19 21:22:06 +00:00
|
|
|
and
|
2014-08-19 21:33:00 +00:00
|
|
|
[Commands](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Cmd.html)
|
2014-04-19 21:22:06 +00:00
|
|
|
,
|
2014-08-19 21:33:00 +00:00
|
|
|
[Dns](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Dns.html)
|
2014-04-19 21:22:06 +00:00
|
|
|
and
|
2014-08-19 21:33:00 +00:00
|
|
|
[Docker](http://hackage.haskell.org/package/propellor/docs/Propellor-Property-Docker.html), etc.
|
2014-04-19 19:45:27 +00:00
|
|
|
|
|
|
|
There is no special language as used in puppet, chef, ansible, etc.. just
|
|
|
|
the full power of Haskell. Hopefully that power can be put to good use in
|
|
|
|
making declarative properties that are powerful, nicely idempotent, and
|
2014-04-19 20:44:17 +00:00
|
|
|
easy to adapt to a system's special needs!
|
2014-04-19 19:45:27 +00:00
|
|
|
|
2014-04-19 21:08:20 +00:00
|
|
|
If using Haskell to configure Propellor seems intimidating,
|
2014-04-19 21:09:08 +00:00
|
|
|
see [configuration for the Haskell newbie](https://propellor.branchable.com/haskell_newbie/).
|
2014-04-19 21:08:20 +00:00
|
|
|
|
2014-04-19 19:45:27 +00:00
|
|
|
## quick start
|
|
|
|
|
2014-11-19 01:26:26 +00:00
|
|
|
1. Get propellor installed on your development machine (ie, laptop).
|
2014-04-19 19:45:27 +00:00
|
|
|
`cabal install propellor`
|
|
|
|
or
|
|
|
|
`apt-get install propellor`
|
2014-11-19 01:26:26 +00:00
|
|
|
2. Run `propellor` for the first time. It will set up a `~/.propellor/` git
|
2014-04-19 19:45:27 +00:00
|
|
|
repository for you.
|
2014-05-11 16:32:37 +00:00
|
|
|
3. If you don't have a gpg private key already, generate one: `gpg --gen-key`
|
|
|
|
4. Run: `propellor --add-key $KEYID`, which will make propellor trust
|
|
|
|
your gpg key, and will sign your `~/.propellor` repository using it.
|
2014-11-18 21:26:02 +00:00
|
|
|
5. Edit `~/.propellor/config.hs`, and add a host you want to manage.
|
2014-04-19 19:45:27 +00:00
|
|
|
You can start by not adding any properties, or only a few.
|
2014-11-19 01:26:26 +00:00
|
|
|
6. Run: `propellor --spin $HOST`
|
2014-11-18 21:26:02 +00:00
|
|
|
7. Now you have a simple propellor deployment, but it doesn't do
|
2014-11-18 21:40:25 +00:00
|
|
|
much to the host yet, besides installing propellor.
|
2014-11-19 01:26:26 +00:00
|
|
|
So, edit `~/.propellor/config.hs` to configure the host, add some
|
|
|
|
properties to it, and re-run step 6.
|
2014-04-19 19:45:27 +00:00
|
|
|
Repeat until happy and move on to the next host. :)
|
2014-11-18 21:33:08 +00:00
|
|
|
8. Optionally, set up a [centralized git repository](https://propellor.branchable.com/centralized_git_repository/)
|
2014-11-19 01:26:26 +00:00
|
|
|
so that multiple hosts can be updated with a simple `git commit -S; git push`
|
2014-11-18 21:33:08 +00:00
|
|
|
9. Write some neat new properties and send patches!
|