summaryrefslogtreecommitdiff
path: root/doc/centralized_git_repository.mdwn
blob: 1e511398fe60f7ecd53cf1bb8a3e78e142a7b7c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Propellor can be used without any centralized git repsitory. When
`propellor --spin $HOST` is run, propellor pushes the local git repo
directly to the host. This makes it easy to get started with propellor.

A central git repository allows hosts to run propellor from cron and pick
up any updates you may have pushed. This is useful when managing several
hosts with propellor. 

The central repository does not need to be trusted; it can be hosted 
anywhere, and propellor will only accept verified gpg signed git commits
from it. See [[security]] for details, but this means you can put it
on github without github being able to 0wn your propellor driven hosts, for
example.

You can add a central git repository to your existing propellor setup easily:

1. Push propellor's git repository to a central server (github or your own):
   `cd ~/.propellor/; git remote add origin ssh://git.example.com/propellor.git; git push -u origin master`

2. Configure the url your hosts should use for the git repisitory, if
   it differs from the url above, by setting up a remote named "deploy":
   `cd ~/.propellor/; git remote add deploy git://git.example.com/propellor.git`

2. Add a property to your hosts like:
   `Cron.runPropellor (Cron.Times "*/30 * * * *")`

3. Let your hosts know about the changed configuration (including the url
   to the central repository), by running `propellor --spin $HOST` for each
   of your hosts.

Now the hosts will automatically update every 30 minutes, and you can
`git commit -S` and `git push` changes that affect any number of
hosts.

Note that private data, set with `propellor --set`, is gpg encrypted, and
hosts cannot decrypt it! So after updating the private data of a host,
you still need to manually run `propellor --spin $HOST`