summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog9
-rw-r--r--doc/README.mdwn45
-rw-r--r--src/Propellor/CmdLine.hs6
3 files changed, 41 insertions, 19 deletions
diff --git a/debian/changelog b/debian/changelog
index 4a3853f8..2e5a8bbd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,11 @@
propellor (0.9.3) UNRELEASED; urgency=medium
+ * propellor --spin can now be used to update remote hosts, without
+ any central git repository being used. The git repository is updated
+ over propellor's ssh connection to the remote host. The central
+ git repository is still useful for running propellor from cron,
+ but this simplifies getting started with propellor.
+ * The git repo url, if any, is updated whenever propellor --spin is used.
* Added prosody module, contributed by Félix Sipma.
* Can be used to configure tor hidden services. Thanks, Félix Sipma.
* When multiple gpg keys are added, ensure that the privdata file
@@ -9,9 +15,6 @@ propellor (0.9.3) UNRELEASED; urgency=medium
kernel when necessary.
* Avoid outputting color setting sequences when not run on a terminal.
* Run remote propellor --spin with a controlling terminal.
- * The git repo url is updated whenever propellor --spin is used,
- and a central git repo does not need to be set up before using --spin
- for the first time.
-- Joey Hess <joeyh@debian.org> Mon, 10 Nov 2014 11:15:27 -0400
diff --git a/doc/README.mdwn b/doc/README.mdwn
index a0742f78..47fa8e40 100644
--- a/doc/README.mdwn
+++ b/doc/README.mdwn
@@ -35,7 +35,7 @@ see [configuration for the Haskell newbie](https://propellor.branchable.com/hask
## quick start
-1. Get propellor installed
+1. Get propellor installed on your laptop.
`cabal install propellor`
or
`apt-get install propellor`
@@ -44,25 +44,46 @@ see [configuration for the Haskell newbie](https://propellor.branchable.com/hask
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.
-5. Push the 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`
-6. Edit `~/.propellor/config.hs`, and add a host you want to manage.
+5. Edit `~/.propellor/config.hs`, and add a host you want to manage.
You can start by not adding any properties, or only a few.
-7. Pick a host and run: `propellor --spin $HOST`
-8. Now you have a simple propellor deployment, but it doesn't do
+6. Pick a host and run: `propellor --spin $HOST`
+7. Now you have a simple propellor deployment, but it doesn't do
much to the host yet, besides installing propellor.
So, edit `~/.propellor/config.hs` to configure the host (maybe
- start with a few simple properties), and re-run step 7.
+ start with a few simple properties), and re-run step 6.
Repeat until happy and move on to the next host. :)
-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 * * * *"`
-
+8. Write some neat new properties and send patches!
+
+## adding a central git repository
+
+The above quick start uses propellor without any central git repository.
+Instead, the git repo on a host gets updated from the repo on your laptop
+whenever you run `propellor --spin $HOST`.
+
+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.
+
+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 "30 * * * *"`
+
+3. Let your hosts know about the changed configuration (including the url
+ to the central repository), by running `proellor --spin $HOST` for each
+ of your hosts.
+
Now they'll automatically update every 30 minutes, and you can
`git commit -S` and `git push` changes that affect any number of
hosts.
-10. Write some neat new properties and send patches!
## debugging
diff --git a/src/Propellor/CmdLine.hs b/src/Propellor/CmdLine.hs
index db7d93ae..e7da0a80 100644
--- a/src/Propellor/CmdLine.hs
+++ b/src/Propellor/CmdLine.hs
@@ -315,10 +315,8 @@ boot = do
hout <- dup stdOutput
hClose stdin
hClose stdout
- unlessM (boolSystem "git" [Param "fetch", Param "--progress", Param "--upload-pack", Param $ "./propellor --gitpush " ++ show hin ++ " " ++ show hout, Param "."]) $
- errorMessage "git fetch from client failed"
- unlessM (boolSystem "git" [Param "merge", Param "--quiet", Param "FETCH_HEAD"]) $
- errorMessage "git merge failed"
+ unlessM (boolSystem "git" [Param "pull", Param "--progress", Param "--upload-pack", Param $ "./propellor --gitpush " ++ show hin ++ " " ++ show hout, Param "."]) $
+ errorMessage "git pull from client failed"
-- Shim for git push over the propellor ssh channel.
-- Reads from stdin and sends it to hout;