Commit Graph

516 Commits

Author SHA1 Message Date
Joey Hess cd6ca049b8 cleanup 2014-11-22 00:50:56 -04:00
Joey Hess ea058a5f9f remove test hack 2014-11-22 00:47:26 -04:00
Joey Hess 5d6e1a27a5
propellor spin 2014-11-22 00:46:07 -04:00
Joey Hess 0d65fdeb1d
propellor spin 2014-11-22 00:44:13 -04:00
Joey Hess 083b82d810
propellor spin 2014-11-22 00:36:16 -04:00
Joey Hess 1af398d33e
propellor spin 2014-11-22 00:35:14 -04:00
Joey Hess f1fdd6f678
propellor spin 2014-11-22 00:34:34 -04:00
Joey Hess e5135c1948
propellor spin 2014-11-22 00:32:04 -04:00
Joey Hess 99e0a5fea7
propellor spin 2014-11-22 00:27:35 -04:00
Joey Hess 7fd338f96f
propellor spin 2014-11-22 00:25:00 -04:00
Joey Hess f62d2fb183 propellor --spin can now deploy propellor to hosts that do not have git, ghc, or apt-get. This is accomplished by uploading a fairly portable precompiled tarball of propellor. 2014-11-22 00:22:19 -04:00
Joey Hess 6eb64d56e3 avoid setting title when not at console 2014-11-21 23:33:39 -04:00
Joey Hess 0a415a7b41
show last line if it cannot be parsed as a serialized Result 2014-11-21 23:30:40 -04:00
Joey Hess 403a82b8b7 email update 2014-11-21 22:26:39 -04:00
Joey Hess 6cdd37d9ff
propellor spin 2014-11-21 20:53:38 -04:00
Joey Hess b373ffb761 allow disabling nspawn params, and default to bind mounting /etc/resolv.conf 2014-11-21 20:32:32 -04:00
Joey Hess 96c4890d89
propellor spin 2014-11-21 20:19:20 -04:00
Joey Hess 6be49197f6 allow configuring systemd-nspawn parameters 2014-11-21 20:09:33 -04:00
Joey Hess 6c92f1034f split out info types 2014-11-21 18:55:33 -04:00
Joey Hess 6e8b28cd3c
propellor spin 2014-11-21 17:11:26 -04:00
Joey Hess 33e9b10c19 typo 2014-11-21 16:02:10 -04:00
Joey Hess f6afeb889f lock down chroot perm 2014-11-21 16:01:51 -04:00
Joey Hess 9e611d87cd add debootstrap parameters 2014-11-21 15:55:27 -04:00
Joey Hess fbce215f33 implement teardown 2014-11-21 14:37:19 -04:00
Joey Hess 36e89cd148 os info propigation
Also, lost the systemd-nspawn parameters; I'll do that some other way.
2014-11-21 14:31:13 -04:00
Joey Hess 7d4d3e4451 fix info propigation
Need to propigate the full container info, not the subset used in chroot
deployment.
2014-11-21 14:11:02 -04:00
Joey Hess 5e1a47552a
propellor spin 2014-11-21 13:57:58 -04:00
Joey Hess 09e79e6263
propellor spin 2014-11-21 13:55:42 -04:00
Joey Hess 3ba82a1c9c
propellor spin 2014-11-21 13:49:17 -04:00
Joey Hess ae6a5e815c
propellor spin 2014-11-21 12:35:07 -04:00
Joey Hess 976afedea3
propellor spin 2014-11-21 12:18:03 -04:00
Joey Hess 6a5a1bc761 systemd container may be mostly done (untested) 2014-11-21 12:17:03 -04:00
Joey Hess 45349c210d add missing support for reverting chroot
wow, that was suprisingly trivial!
2014-11-21 01:09:15 -04:00
Joey Hess a904476333 avoid console output when chaining into chroot and not at console 2014-11-21 01:05:51 -04:00
Joey Hess f9cc7c149e incomplete systemd container support 2014-11-20 17:18:26 -04:00
Joey Hess 3669bd61d0
propellor spin 2014-11-20 16:07:57 -04:00
Joey Hess 2293b46bf7 fix chroot info propigation 2014-11-20 16:04:48 -04:00
Joey Hess a4f04fcb02
propellor spin 2014-11-20 15:15:28 -04:00
Joey Hess def4431132 remove unused Eq instance for Info
Its implementation was .. shady at best, as Host has no Eq
2014-11-20 14:16:26 -04:00
Joey Hess b8b746a7f1 starting work on a Chroot module
factored out info up-propigation code rom Docker
2014-11-20 14:15:26 -04:00
Joey Hess 0d4dd37ee7 git commit may or may not be signed 2014-11-20 00:55:28 -04:00
Joey Hess 5e4c57652c fix docker container provisioning
Since the containers are no longer on the host list, they were not found
while provisioning, oops.

To fix, had to add to a host's info a map of the containers docked to it.

Unfortunately, that required Propellor.Types.Info be glommed into
Propellor.Types, since it needed to refer to Host.
2014-11-20 00:21:40 -04:00
Joey Hess d49d251897 separate docker container type
Docker containers are now a separate data type, cannot be included in the
main host list, and are instead passed to Docker.docked. (API change)
2014-11-19 23:11:34 -04:00
Joey Hess b7d78e679a sigel didn't work out
Unicode output failed in docker, due to no locales, and would be generally
shakey from haskell in all the environments propellor needs to run in.
2014-11-19 21:51:52 -04:00
Joey Hess 7c11d68018
propellor spin 2014-11-19 21:50:49 -04:00
Joey Hess d130e7e628
propellor spin 2014-11-19 21:48:48 -04:00
Joey Hess 3343b220a8
propellor spin 2014-11-19 21:21:20 -04:00
Joey Hess b136609cb5 unicode ahoy 2014-11-19 21:20:19 -04:00
Joey Hess 205d192559 fix param order 2014-11-19 21:16:18 -04:00
Joey Hess 4de7d4295c
propellor spin 2014-11-19 21:03:06 -04:00
Joey Hess 025c7c4b8e avoid double-build in --spin
It was fetching from the central repo, then building that, and then running
the client-to-client git update, and the building after that.

Remove the first build, as all that linking does take time.
2014-11-19 21:00:14 -04:00
Joey Hess 36d4938a19 remove excess verbosity from message 2014-11-19 20:48:36 -04:00
Joey Hess c186f9f4a8
propellor spin 2014-11-19 20:41:35 -04:00
Joey Hess caeed5492f allow debootstrapped to be reverted 2014-11-19 20:35:33 -04:00
Joey Hess 4a9bbd1391 Added support for using debootstrap from propellor.
Most of the hard part was making it be able to install debootstrap from
source, for use on non-debian-derived systems.
2014-11-19 19:30:56 -04:00
Joey Hess 08242e29f6 add fallback combinator 2014-11-19 18:57:58 -04:00
Joey Hess 803e1407a0 improve display 2014-11-19 01:40:56 -04:00
Joey Hess 1872ee1ffc
propellor spin 2014-11-19 01:32:09 -04:00
Joey Hess 4dddbb725d prevent multiple concurrent provisioning inside docker container
Lock a lock file while provisioning inside, otherwise propellor could be
running to init the container when the system has just booted, or the
container was just started from being stopped, and at the same time,
propellor run outside the container chains into it to provision.

Previously, simplesh prevented this in a different way.
2014-11-19 01:28:38 -04:00
Joey Hess c3962dcf7d
propellor spin 2014-11-19 01:04:11 -04:00
Joey Hess f0675727c2
propellor spin 2014-11-19 01:02:54 -04:00
Joey Hess 05086b3abe
propellor spin 2014-11-19 01:02:13 -04:00
Joey Hess 9a779939c4 merge from git-annex 2014-11-19 00:55:07 -04:00
Joey Hess f8b71c0ab4
propellor spin 2014-11-19 00:38:11 -04:00
Joey Hess 325fe4037b
propellor spin 2014-11-19 00:30:06 -04:00
Joey Hess 111e08e156 typo 2014-11-18 23:54:49 -04:00
Joey Hess 6dc7176e7a fix haddock filename display 2014-11-18 23:51:37 -04:00
Joey Hess 745f9e2685 clean up Propellr.CmdLine exports 2014-11-18 23:50:38 -04:00
Joey Hess dac6a87419 broke out Server module 2014-11-18 22:13:13 -04:00
Joey Hess b964b48363 tense 2014-11-18 20:41:41 -04:00
Joey Hess 6e327fa1a3
propellor spin 2014-11-18 20:38:11 -04:00
Joey Hess f9f60822ff
propellor spin 2014-11-18 20:33:25 -04:00
Joey Hess cdad4fbe15
propellor spin 2014-11-18 20:29:31 -04:00
Joey Hess 2ad3334b26
propellor spin 2014-11-18 20:28:16 -04:00
Joey Hess be1287d5f9 refactor 2014-11-18 20:19:50 -04:00
Joey Hess d4a4f0193e refactor 2014-11-18 20:19:10 -04:00
Joey Hess a0d5f41a6c reorger to match usage 2014-11-18 19:49:34 -04:00
Joey Hess ce859eaa9a fix long line 2014-11-18 19:48:02 -04:00
Joey Hess 8b6531ea43 reorg 2014-11-18 19:43:53 -04:00
Joey Hess c9fed0fdaa add --update, which will one day replace --boot
But no time soon, since that would break --spin to old versions of
propellor

Maybe after 1 year?
2014-11-18 19:36:30 -04:00
Joey Hess 65d3f085dc remove what should be dead code
While old propellor's can emit Ready, they won't if they've managed to
updateFirst. If updateFirst fails due to eg, inaccessiable central repo,
those old propellor's are not able to receive inline git pushes anyway,
so are not going to update no matter what, so no point in making --spin
work in that case.
2014-11-18 19:33:11 -04:00
Joey Hess 2bbb2aa6e2 remove --docker; use Continue
And --chain was already not used.
2014-11-18 18:52:00 -04:00
Joey Hess 34cbe738b7 don't need to parse --gitpush; just use a Continue 2014-11-18 18:47:44 -04:00
Joey Hess 80a20d6df3 cleanup 2014-11-18 18:46:10 -04:00
Joey Hess 66466a953d reorg 2014-11-18 18:44:24 -04:00
Joey Hess 47bcd4e130 factor out ssh module 2014-11-18 18:42:36 -04:00
Joey Hess 45592b442b factor out git repo module 2014-11-18 18:39:10 -04:00
Joey Hess b7bbde3d72 avoid extra git pull when --spin calles first --boot and then --run 2014-11-18 18:26:15 -04:00
Joey Hess 8f5166748a
propellor spin 2014-11-18 18:15:04 -04:00
Joey Hess 18903ad30c display improvements 2014-11-18 18:13:42 -04:00
Joey Hess e262a49a80 enable terminal for --boot 2014-11-18 18:11:04 -04:00
Joey Hess 557458d03c wording 2014-11-18 17:59:26 -04:00
Joey Hess 75a824c788 fix display of progress etc lines before protocol line 2014-11-18 17:57:04 -04:00
Joey Hess 4a0cac113c fix color display when running propellor inside docker 2014-11-18 17:53:42 -04:00
Joey Hess 74e067fa76
propellor spin 2014-11-18 17:26:02 -04:00
Joey Hess 7fd8150b1f
propellor spin 2014-11-18 17:12:17 -04:00
Joey Hess 4f352327be
propellor spin 2014-11-18 17:10:10 -04:00
Joey Hess ec9cdf5d73
propellor spin 2014-11-18 17:06:39 -04:00
Joey Hess efa3283975 reformat 2014-11-18 17:05:25 -04:00
Joey Hess fc657d62cb action message 2014-11-18 16:55:20 -04:00
Joey Hess 511a728b38 finally cracked it!
A newline was slipping in and messing up the git protocol.
2014-11-18 16:52:20 -04:00
Joey Hess 83431b7b58
propellor spin 2014-11-18 16:49:37 -04:00
Joey Hess bdbb1686df
propellor spin 2014-11-18 16:47:41 -04:00
Joey Hess 12aa7f4948 set handles to binary mode 2014-11-18 16:45:31 -04:00
Joey Hess c008813bec close handles 2014-11-18 16:36:43 -04:00
Joey Hess 257f9f6bb2 debug 2014-11-18 16:28:27 -04:00
Joey Hess 935e1d11fe
propellor spin 2014-11-18 16:24:45 -04:00
Joey Hess 06add92bce tweak 2014-11-18 16:12:27 -04:00
Joey Hess c1a6f81c7e better IO loop, with debugging 2014-11-18 16:10:13 -04:00
Joey Hess 6f93f8496f use lazy bytestrings so it streams 2014-11-18 16:03:19 -04:00
Joey Hess 7956fda7d5 get handles right way roung 2014-11-18 15:53:15 -04:00
Joey Hess 18ac1234ac fix command again 2014-11-18 15:49:23 -04:00
Joey Hess 75591eb2e8 avoid pulling when there is no origin 2014-11-18 15:43:30 -04:00
Joey Hess 32dbfd62fb disable always debug 2014-11-18 15:38:18 -04:00
Joey Hess b120262482 fix proto 2014-11-18 15:37:22 -04:00
Joey Hess 1a910f2516 typo 2014-11-18 15:35:42 -04:00
Joey Hess d07edfdbeb temporarily always debug 2014-11-18 15:34:58 -04:00
Joey Hess 2ca292a2b4 hook up handles 2014-11-18 15:32:53 -04:00
Joey Hess e96a66709a run upload-pack, not send-pack
we're doing a reverse pull from the client
2014-11-18 15:25:55 -04:00
Joey Hess 6cb060b653 problem running propellor --gitpush 2014-11-18 15:23:39 -04:00
Joey Hess 72e8086d7e updte 2014-11-18 15:20:28 -04:00
Joey Hess 02fc9fcca9
propellor spin 2014-11-18 15:18:26 -04:00
Joey Hess 573c6ab4b8
propellor spin 2014-11-18 15:17:12 -04:00
Joey Hess 9dfae00bd3
propellor spin 2014-11-18 15:15:56 -04:00
Joey Hess 781e35a333 protocol is one line response, not multiline
The privdata is shown, so contains no literal newlines, so that's ok.
2014-11-18 15:14:36 -04:00
Joey Hess dccdf0c0f0
propellor spin 2014-11-18 15:09:35 -04:00
Joey Hess d5091b6082
propellor spin 2014-11-18 15:09:13 -04:00
Joey Hess bad6a8c3e6
propellor spin 2014-11-18 15:05:15 -04:00
Joey Hess 473ce8b757 Nothing means end of protocol, not protocol error 2014-11-18 14:13:52 -04:00
Joey Hess aa9aa832d2 refactor 2014-11-18 14:12:07 -04:00
Joey Hess 45f8ebf0ef
propellor spin 2014-11-18 13:59:50 -04:00
Joey Hess 9463963d85 reorg 2014-11-18 13:32:33 -04:00
Joey Hess 46076e9a37 reorg and clean up bootstrap protocol 2014-11-18 13:29:50 -04:00
Joey Hess e4e2f44392
propellor spin 2014-11-18 01:25:54 -04:00
Joey Hess a30b5a6bfd
propellor spin 2014-11-18 01:17:22 -04:00
Joey Hess bc6b199d53
propellor spin 2014-11-18 01:15:34 -04:00
Joey Hess 8d995b1574 need to chain, not spin 2014-11-18 01:11:32 -04:00
Joey Hess 8ea43c6302 avoid renaming --boot to --sync
That broke updating existing systems, since --boot is what makes the remote
propellor update itself.

The hostname is no longer needed by --boot for new propellor's, but is
still passed for old ones.

Note that there will be a double run of propellor when upgrading via
--spin, because it now runs --boot followed by --spin on the remote host,
and the old --boot also satisfied all properties.
2014-11-18 01:04:41 -04:00
Joey Hess 40f6d06f1a Run remote propellor --spin with a controlling terminal.
Avoids need for hack to make ansi colors work, but also things like apt-get
and wget process bars will be displayed.
2014-11-18 01:01:50 -04:00
Joey Hess 1a90604851 ssh won't allocate a tty; work around
stdin is not a terminal, drat ssh

I don't much like this workaround
2014-11-18 00:42:12 -04:00
Joey Hess 194785b556
propellor spin 2014-11-18 00:36:00 -04:00
Joey Hess 340c8d1060
propellor spin 2014-11-18 00:30:19 -04:00
Joey Hess e6ff8bfc47 can't rely on TERM; use hIsTerminalDevice
This calls an ioctl, I don't think it's very expensive.
2014-11-18 00:28:46 -04:00
Joey Hess 7b796bcb9c enable tty over ssh 2014-11-18 00:22:05 -04:00
Joey Hess 82d50a5796 Avoid outputting color setting sequences when not run on a terminal.
Currently TERM is checked for every message. Could be memoized, but it
would add complexity, and typical propellor output is not going to be more
than a few hundred messages, and likely this will be swamped by the actual
work.
2014-11-18 00:19:11 -04:00
Félix Sipma fbd8ea3b3d Git: rename isRepo to isGitDir
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
2014-11-17 17:02:31 -04:00
Félix Sipma f3beea212c Git: isRepo
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
2014-11-17 17:02:31 -04:00
Joey Hess 46cd2ad0e0 DigitalOcean.distroKernel property now reboots into the distribution kernel when necessary.
It might be better to do this check on boot to limit the time running the
DO kernel (which is not well security supported), but that has the
possibility of entering a bad reboot loop. Limiting this check to when
propellor runs avoids that, while still fixing the problem pretty fast.
2014-11-17 16:42:15 -04:00
Joey Hess 8d91b5de6b Convert GpgKeyId to newtype 2014-11-15 17:02:30 -04:00
Joey Hess 269996e25d moving privdata to privdata.joey (for joeyconfig branch only)
This will be reverted on master. This way, my ongoing development on my
joeyconfig branch, including privdata changes, won't result in changes
being merged into the privdata/ dir on master. Such changes can cause
problems for other propellor users, who can get conflicts in their own
privdata when merging from master.
2014-11-15 13:45:23 -04:00