docs
This commit is contained in:
parent
2f3cac42f3
commit
680d480921
21
README.md
21
README.md
|
@ -35,7 +35,7 @@ and so it's easy to factor out things like classes of hosts as desired.
|
|||
`apt-get install propellor`
|
||||
2. Run propellor for the first time. It will set up a `~/.propellor/` git
|
||||
repository for you.
|
||||
3. In `~/.propellor/`, use git to push the repository to a central
|
||||
3. `cd ~/.propellor/`; use git to push the repository to a central
|
||||
server (github, or your own git server). Configure that central
|
||||
server as the origin remote of the repository.
|
||||
4. If you don't have a gpg private key, generate one: `gpg --gen-key`
|
||||
|
@ -49,19 +49,19 @@ and so it's easy to factor out things like classes of hosts as desired.
|
|||
So, edit `~/.propellor/config.hs` to configure the host (maybe
|
||||
start with a few simple properties), and re-run step 7.
|
||||
Repeat until happy and move on to the next host. :)
|
||||
9. To move beyond manually running propellor --spin against hosts
|
||||
when you change configuration, add a property to your hosts
|
||||
9. To move beyond manually running `propellor --spin` against hosts
|
||||
when you change their properties, add a property to your hosts
|
||||
like: `Cron.runPropellor "30 * * * *"`
|
||||
|
||||
Now they'll automatically update every 30 minutes, and you can
|
||||
`git commit -S` and `git push` changes that affect any number of
|
||||
hosts.
|
||||
8. Write some neat new properties and send patches to <propellor@joeyh.name>!
|
||||
10. Write some neat new properties and send patches to <propellor@joeyh.name>!
|
||||
|
||||
## security
|
||||
|
||||
Propellor's security model is that the hosts it's used to deploy are
|
||||
untrusted, and that the central git repository server is untrusted.
|
||||
untrusted, and that the central git repository server is untrusted too.
|
||||
|
||||
The only trusted machine is the laptop where you run `propellor --spin`
|
||||
to connect to a remote host. And that one only because you have a ssh key
|
||||
|
@ -71,13 +71,13 @@ Since the hosts propellor deploys are not trusted by the central git
|
|||
repository, they have to use git:// or http:// to pull from the central
|
||||
git repository, rather than ssh://.
|
||||
|
||||
So, to avoid a MITM attack, propellor checks that any commit it fetched
|
||||
So, to avoid a MITM attack, propellor checks that any commit it fetches
|
||||
from origin is gpg signed by a trusted gpg key, and refuses to deploy it
|
||||
otherwise.
|
||||
|
||||
That is only done when privdata/keyring.gpg exists. To set it up:
|
||||
|
||||
gpg --gen-key # only if you don't already have a gpg key
|
||||
gpg --gen-key # only if you don't already have a gpg key
|
||||
propellor --add-key $MYKEYID
|
||||
|
||||
In order to be secure from the beginning, when `propellor --spin` is used
|
||||
|
@ -88,9 +88,10 @@ gpg key, and will use it to verify git fetches.
|
|||
Since the propoellor git repository is public, you can't store
|
||||
in cleartext private data such as passwords, ssh private keys, etc.
|
||||
|
||||
Instead, `propellor --spin $host` looks for a `~/.propellor/privdata/$host.gpg` file and
|
||||
if found decrypts it and sends it to the remote host using ssh. This lets
|
||||
a remote host know its own private data, without seeing all the rest.
|
||||
Instead, `propellor --spin $host` looks for a
|
||||
`~/.propellor/privdata/$host.gpg` file and if found decrypts it and sends
|
||||
it to the remote host using ssh. This lets a remote host know its own
|
||||
private data, without seeing all the rest.
|
||||
|
||||
To securely store private data, use: `propellor --set $host $field`
|
||||
The field name will be something like 'Password "root"'; see PrivData.hs
|
||||
|
|
Loading…
Reference in New Issue