propellor spin
This commit is contained in:
parent
4dd35537e6
commit
74e067fa76
|
@ -1,5 +1,11 @@
|
||||||
propellor (0.9.3) UNRELEASED; urgency=medium
|
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.
|
* Added prosody module, contributed by Félix Sipma.
|
||||||
* Can be used to configure tor hidden services. Thanks, 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
|
* 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.
|
kernel when necessary.
|
||||||
* Avoid outputting color setting sequences when not run on a terminal.
|
* Avoid outputting color setting sequences when not run on a terminal.
|
||||||
* Run remote propellor --spin with a controlling 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
|
-- Joey Hess <joeyh@debian.org> Mon, 10 Nov 2014 11:15:27 -0400
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ see [configuration for the Haskell newbie](https://propellor.branchable.com/hask
|
||||||
|
|
||||||
## quick start
|
## quick start
|
||||||
|
|
||||||
1. Get propellor installed
|
1. Get propellor installed on your laptop.
|
||||||
`cabal install propellor`
|
`cabal install propellor`
|
||||||
or
|
or
|
||||||
`apt-get install propellor`
|
`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`
|
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
|
4. Run: `propellor --add-key $KEYID`, which will make propellor trust
|
||||||
your gpg key, and will sign your `~/.propellor` repository using it.
|
your gpg key, and will sign your `~/.propellor` repository using it.
|
||||||
5. Push the git repository to a central server (github or your own):
|
5. Edit `~/.propellor/config.hs`, and add a host you want to manage.
|
||||||
`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.
|
|
||||||
You can start by not adding any properties, or only a few.
|
You can start by not adding any properties, or only a few.
|
||||||
7. Pick a host and run: `propellor --spin $HOST`
|
6. Pick a host and run: `propellor --spin $HOST`
|
||||||
8. Now you have a simple propellor deployment, but it doesn't do
|
7. Now you have a simple propellor deployment, but it doesn't do
|
||||||
much to the host yet, besides installing propellor.
|
much to the host yet, besides installing propellor.
|
||||||
|
|
||||||
So, edit `~/.propellor/config.hs` to configure the host (maybe
|
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. :)
|
Repeat until happy and move on to the next host. :)
|
||||||
9. To move beyond manually running `propellor --spin` against hosts
|
8. Write some neat new properties and send patches!
|
||||||
when you change their properties, add a property to your hosts
|
|
||||||
like: `Cron.runPropellor "30 * * * *"`
|
## 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
|
Now they'll automatically update every 30 minutes, and you can
|
||||||
`git commit -S` and `git push` changes that affect any number of
|
`git commit -S` and `git push` changes that affect any number of
|
||||||
hosts.
|
hosts.
|
||||||
10. Write some neat new properties and send patches!
|
|
||||||
|
|
||||||
## debugging
|
## debugging
|
||||||
|
|
||||||
|
|
|
@ -315,10 +315,8 @@ boot = do
|
||||||
hout <- dup stdOutput
|
hout <- dup stdOutput
|
||||||
hClose stdin
|
hClose stdin
|
||||||
hClose stdout
|
hClose stdout
|
||||||
unlessM (boolSystem "git" [Param "fetch", Param "--progress", Param "--upload-pack", Param $ "./propellor --gitpush " ++ show hin ++ " " ++ show hout, Param "."]) $
|
unlessM (boolSystem "git" [Param "pull", Param "--progress", Param "--upload-pack", Param $ "./propellor --gitpush " ++ show hin ++ " " ++ show hout, Param "."]) $
|
||||||
errorMessage "git fetch from client failed"
|
errorMessage "git pull from client failed"
|
||||||
unlessM (boolSystem "git" [Param "merge", Param "--quiet", Param "FETCH_HEAD"]) $
|
|
||||||
errorMessage "git merge failed"
|
|
||||||
|
|
||||||
-- Shim for git push over the propellor ssh channel.
|
-- Shim for git push over the propellor ssh channel.
|
||||||
-- Reads from stdin and sends it to hout;
|
-- Reads from stdin and sends it to hout;
|
||||||
|
|
Loading…
Reference in New Issue