diff options
| author | Joey Hess <joeyh@joeyh.name> | 2017-05-20 09:28:22 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2017-05-20 09:28:22 -0400 |
| commit | 24e789a2ac981b3d4b2dfaf1af359c4407587a00 (patch) | |
| tree | e676038cd69b8ff91efc3b7b5a85e63aad5214d4 | |
| parent | d499d8d668fa8ec32833edb4b7a5677dcbf75c56 (diff) | |
| parent | 3dd36f7e922b0dfdde54420a931e77fd02e6b83c (diff) | |
Merge branch 'joeyconfig' of ssh://propellor.branchable.com into joeyconfig
67 files changed, 2421 insertions, 1591 deletions
@@ -1 +1 @@ -config-simple.hs
\ No newline at end of file +joeyconfig.hs
\ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 11c9922f..90205ece 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,21 @@ -propellor (4.0.2) UNRELEASED; urgency=medium +propellor (4.0.4) UNRELEASED; urgency=medium + + * Propellor.Property.Restic added for yet another backup program. + Thanks, Félix Sipma. + * Removed dependency on MissingH, instead depends on split and hashable. + + -- Joey Hess <id@joeyh.name> Thu, 27 Apr 2017 16:31:26 -0400 + +propellor (4.0.3) unstable; urgency=medium + + * Added Fstab.listed, Fstab.swap, and Mount.swapOn properties. + Thanks, Daniel Brooks. + * Added Propellor.Property.Bootstrap, which can be used to make + disk images contain their own installation of propellor. + + -- Joey Hess <id@joeyh.name> Thu, 20 Apr 2017 00:54:32 -0400 + +propellor (4.0.2) unstable; urgency=medium * Apt.mirror can be used to set the preferred apt mirror of a host, overriding the default CDN. This info is used by @@ -10,8 +27,8 @@ propellor (4.0.2) UNRELEASED; urgency=medium properties added to a chroot that way from being seen when propellor was running inside the chroot. This affected disk image creation, and possibly other things that use chroots. - - -- Joey Hess <id@joeyh.name> Sun, 19 Mar 2017 16:37:27 -0400 + + -- Joey Hess <id@joeyh.name> Fri, 24 Mar 2017 14:04:50 -0400 propellor (4.0.1) unstable; urgency=medium diff --git a/debian/control b/debian/control index 289e663b..e6819060 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Build-Depends: ghc (>= 7.6), cabal-install, libghc-async-dev, - libghc-missingh-dev, + libghc-split-dev, libghc-hslogger-dev, libghc-unix-compat-dev, libghc-ansi-terminal-dev, @@ -18,6 +18,7 @@ Build-Depends: libghc-exceptions-dev (>= 0.6), libghc-stm-dev, libghc-text-dev, + libghc-hashable-dev, libghc-concurrent-output-dev, Maintainer: Joey Hess <id@joeyh.name> Standards-Version: 3.9.8 @@ -31,7 +32,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, ghc (>= 7.4), cabal-install, libghc-async-dev, - libghc-missingh-dev, + libghc-split-dev, libghc-hslogger-dev, libghc-unix-compat-dev, libghc-ansi-terminal-dev, @@ -42,6 +43,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, libghc-exceptions-dev (>= 0.6), libghc-stm-dev, libghc-text-dev, + libghc-hashable-dev, libghc-concurrent-output-dev, git, Description: property-based host configuration management in haskell diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap.mdwn b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap.mdwn new file mode 100644 index 00000000..61cd10cc --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap.mdwn @@ -0,0 +1,3 @@ +The mount command won't work when activating a swap partition/file, so we should call swapon instead. + +https://github.com/ArchiveTeam/glowing-computing-machine/tree/fstab-swap diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_1_8ab6b313c80486f8f87a5e13e830bfa9._comment b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_1_8ab6b313c80486f8f87a5e13e830bfa9._comment new file mode 100644 index 00000000..4a144df5 --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_1_8ab6b313c80486f8f87a5e13e830bfa9._comment @@ -0,0 +1,20 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-04-05T02:17:00Z" + content=""" +This idea kind of makes sense, because swap partitions in /etc/fstab +get swaponed at boot. + +But, the implementation doesn't take the types into account. The `mounted` +property takes a FilePath for the mountpoint, but for swap that +needs to be "none", which is not really a file-path. Also, the `fstabbed` +property has a separate `SwapPartition` type, so making `mount` support +swap partitions without using that type feels wrong. + +It might be simpler all round to treat swap partitions being able to +be specified in /etc/fstab as a historical accident, which it kind of +is (increasingly so, since eg systemd has other ways to accomplish +that), and instead of shoehorning this into the `mounted` property, +add a new `swaponed` property. +"""]] diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_2_773fc1441dd06e9dd41508bd800298eb._comment b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_2_773fc1441dd06e9dd41508bd800298eb._comment new file mode 100644 index 00000000..62cabc0a --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_2_773fc1441dd06e9dd41508bd800298eb._comment @@ -0,0 +1,13 @@ +[[!comment format=mdwn + username="db48x@80bd751a72d5a80737e2f875342cf845629c7202" + nickname="db48x" + avatar="http://cdn.libravatar.org/avatar/ad2688127feb555a92154b16d8eeb5d3" + subject="comment 2" + date="2017-04-05T02:48:08Z" + content=""" +Yes, perhaps if it took an Option FilePath (am I saying this correctly in Haskellese?) it would be nicer. + +I don't mind much how it's structured; this was just the smallest obvious change, since it was failing to mount it. Perhaps breaking it up into smaller, more primitive, pieces would help. Fstab.mounted could = Fstab.fstabbed `onChange` Fstab.mounted, for instance, and then I could write Fstab.fstabbed `onChange` Swap.swapEnabled (oh, but Fstab.fstabbed already exists; I'm not using it because it replaces the whole file, which seems like an odd thing to do. Maybe call it Fstab.listed instead?). + +Also, for maximum irony I was just perusing your most recent dozen commits or so, and saw you enable Apt.serviceInstalledRunning \"swapspace\" on one of your machines. That's amazing; I had no idea it existed! I am re-evaluating all of my life choices now. +"""]] diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_3_f48a6191c56bed41eda55436f0aa3e9c._comment b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_3_f48a6191c56bed41eda55436f0aa3e9c._comment new file mode 100644 index 00000000..95c69551 --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_3_f48a6191c56bed41eda55436f0aa3e9c._comment @@ -0,0 +1,15 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 3""" + date="2017-04-05T03:08:30Z" + content=""" +I like the idea of composing smaller properties to build the current +property, and add flexability. + +Renaming the existing `fstabbed` would probably be too much bother. +(Also, I think I picked that name because it kind of hints that the +existing fstab does not come out alive.) + +(The swapspace package is great if you can eat the now tiny overhead of a +swap file compared to a swap partition.) +"""]] diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_4_b1769231a633ad2b978ee4c9fa90591c._comment b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_4_b1769231a633ad2b978ee4c9fa90591c._comment new file mode 100644 index 00000000..ca04f945 --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_4_b1769231a633ad2b978ee4c9fa90591c._comment @@ -0,0 +1,9 @@ +[[!comment format=mdwn + username="db48x@80bd751a72d5a80737e2f875342cf845629c7202" + nickname="db48x" + avatar="http://cdn.libravatar.org/avatar/ad2688127feb555a92154b16d8eeb5d3" + subject="comment 4" + date="2017-04-05T06:39:49Z" + content=""" +I took a stab at implementing this. It compiles, but I've not tested it yet as I need to get some sleep; consider it a work in progress. Looks right to me though. +"""]] diff --git a/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_5_6dc24952c8efa31a401191a8cf2d0b39._comment b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_5_6dc24952c8efa31a401191a8cf2d0b39._comment new file mode 100644 index 00000000..f87500b2 --- /dev/null +++ b/doc/forum/Fstab.mounted_could_call_swapon_when_activating_swap/comment_5_6dc24952c8efa31a401191a8cf2d0b39._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 5""" + date="2017-04-06T23:51:08Z" + content=""" +Merged. Have not tested it either. + +On my Debian system, the swapon command does not support the +`--no-headings` that you used. It's `--noheadings` here. Is that a typo in +your patch? + +I've simply removed that option for now, since it probably won't +hurt if it treats the heading like another device that's swapped on. +"""]] diff --git a/doc/forum/Git.cloned_deletes_harmless_empty_directory.mdwn b/doc/forum/Git.cloned_deletes_harmless_empty_directory.mdwn new file mode 100644 index 00000000..ce3c192c --- /dev/null +++ b/doc/forum/Git.cloned_deletes_harmless_empty_directory.mdwn @@ -0,0 +1,3 @@ +In my case I have carefully set up the directory that I'm going to clone into with the correct group ownership and setgid permission, so that the cloned files will also have the correct ownership. This change just checks to see if the directory actually has anything in it before it deletes it. + +https://github.com/ArchiveTeam/glowing-computing-machine/tree/git-in-emtpy-directory diff --git a/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_1_7cd0521c6d071b25852f8355f4f61f94._comment b/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_1_7cd0521c6d071b25852f8355f4f61f94._comment new file mode 100644 index 00000000..91b403b0 --- /dev/null +++ b/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_1_7cd0521c6d071b25852f8355f4f61f94._comment @@ -0,0 +1,20 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-04-05T02:22:54Z" + content=""" +I am not entirely happy with this patch, because it seems that if +Git.cloned took care to preserve permissions in this case, it could be +argued that it should also preserve permissions when the directory already +exists but has the wrong content. Or equally well argued that it should not +preserve permissions, which might be a leftover from some past unwanted +state. + +Is that really the best way to do it? You could instead say: + + Git.cloned user repo dir Nothing + `onChange` recursiveSetGID user dir + +And then you just have to write a recursiveSetGID which would be a +generally useful property. +"""]] diff --git a/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_2_289f157f129511242d93beae76fd03a3._comment b/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_2_289f157f129511242d93beae76fd03a3._comment new file mode 100644 index 00000000..1a8c1447 --- /dev/null +++ b/doc/forum/Git.cloned_deletes_harmless_empty_directory/comment_2_289f157f129511242d93beae76fd03a3._comment @@ -0,0 +1,11 @@ +[[!comment format=mdwn + username="db48x@80bd751a72d5a80737e2f875342cf845629c7202" + nickname="db48x" + avatar="http://cdn.libravatar.org/avatar/ad2688127feb555a92154b16d8eeb5d3" + subject="comment 2" + date="2017-04-05T02:37:44Z" + content=""" +Yea, I guess that's a fair point about the other cases. + +It just seems inelegant to go back over all the files and fix up their permissions, when it could just have been set right to begin with. +"""]] diff --git a/doc/forum/Manage_multiple_different_projects_with_propellor.mdwn b/doc/forum/Manage_multiple_different_projects_with_propellor.mdwn new file mode 100644 index 00000000..bcba383c --- /dev/null +++ b/doc/forum/Manage_multiple_different_projects_with_propellor.mdwn @@ -0,0 +1,7 @@ +Hi there, + +I've been tasked with investigating propellor as an alternative to Ansible. I'm a little bit confused about how one might go about managing a *single* project's hosts with propellor, without infecting the global propellor config. It seems that everything is concerned with the ~/.propellor repository. However, I don't want project A's hosts to know about project B's and vice versa. I'm sure I'm overlooking something obvious! + +Thanks very much! + +Mitchell diff --git a/doc/forum/Manage_multiple_different_projects_with_propellor/comment_1_dbad48163b2efd6434ea7c37a72dfd30._comment b/doc/forum/Manage_multiple_different_projects_with_propellor/comment_1_dbad48163b2efd6434ea7c37a72dfd30._comment new file mode 100644 index 00000000..7513cc09 --- /dev/null +++ b/doc/forum/Manage_multiple_different_projects_with_propellor/comment_1_dbad48163b2efd6434ea7c37a72dfd30._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-03-24T18:14:14Z" + content=""" +There did not used to be a good way to do that, but since propellor 3.2.3, +when you run eg "propellor --spin host", it first checks to see if there is +a `./config.hs` file, and if so, uses it instead of the user-global +`~/.propellor/config.hs`. + +So, just make different git repos for the different projects with propellor +`config.hs` files in them, and `cd` into the one you want to run before running +propellor. +"""]] diff --git a/doc/forum/Using_propellor_for_continers_only.mdwn b/doc/forum/Using_propellor_for_continers_only.mdwn new file mode 100644 index 00000000..faf07956 --- /dev/null +++ b/doc/forum/Using_propellor_for_continers_only.mdwn @@ -0,0 +1,5 @@ +Hi, + +I was wondering: Is it possible to use propellor to generate images only without actually managing any hosts per-se? I couldn't find any documentation on that. + +Ideally, I'd also be able to use it directly from a sandbox so that I wouldn't have to even "pollute" the GHC/Cabal "global" (user home dir) database on the development machine. I see that there's support for having the config.hs stored in a different directory than ~/.propellor, but I haven't managed to get it working when I use a sandbox in e.g. ~/foo with the config.hs stored in the same directory. Perhaps that's just a bug? If it's supposed to work I can provide detailed error messages, etc. **EDIT:** I'd also like to manage the git repository myself -- is that possible? diff --git a/doc/forum/Using_propellor_for_continers_only/comment_1_95e8b7103f248d93570fecb6b8999996._comment b/doc/forum/Using_propellor_for_continers_only/comment_1_95e8b7103f248d93570fecb6b8999996._comment new file mode 100644 index 00000000..dc6cc616 --- /dev/null +++ b/doc/forum/Using_propellor_for_continers_only/comment_1_95e8b7103f248d93570fecb6b8999996._comment @@ -0,0 +1,20 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-03-29T19:09:37Z" + content=""" +Sounds like you may want to write a program that uses propellor as a +library. `Propellor.Engine.mainProperties` is a reasonable +entry point, just pass it a Host that has the properties you want +to run. + +For example: + + import Propellor + import Propellor.Engine + import Propellor.Property.DiskImage + + main :: IO () + main = mainProperties $ host "whatever" $ props + & imageBuilt "/some/disk.img" ... +"""]] diff --git a/doc/forum/Using_propellor_for_continers_only/comment_2_42b45a126cfdf1dfc370b166c8042690._comment b/doc/forum/Using_propellor_for_continers_only/comment_2_42b45a126cfdf1dfc370b166c8042690._comment new file mode 100644 index 00000000..45cd3e0c --- /dev/null +++ b/doc/forum/Using_propellor_for_continers_only/comment_2_42b45a126cfdf1dfc370b166c8042690._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="bardur.arantsson" + avatar="http://cdn.libravatar.org/avatar/a0be0039b44d33262b7ae650a0803ad5" + subject="comment 2" + date="2017-04-06T02:14:58Z" + content=""" +I'll try that this weekend, thanks! +"""]] diff --git a/doc/forum/Using_propellor_for_continers_only/comment_3_cd4b9b9e160469e9f0b105f6c40a4ef8._comment b/doc/forum/Using_propellor_for_continers_only/comment_3_cd4b9b9e160469e9f0b105f6c40a4ef8._comment new file mode 100644 index 00000000..fceeedcf --- /dev/null +++ b/doc/forum/Using_propellor_for_continers_only/comment_3_cd4b9b9e160469e9f0b105f6c40a4ef8._comment @@ -0,0 +1,54 @@ +[[!comment format=mdwn + username="bardur.arantsson" + avatar="http://cdn.libravatar.org/avatar/a0be0039b44d33262b7ae650a0803ad5" + subject="comment 3" + date="2017-05-12T06:50:49Z" + content=""" +Ok, so I've tried to use this to build a Chroot (a reasonable starting point for building containers), using the following program: + + module Main + ( main + ) where + + import Propellor + import Propellor.Engine + import Propellor.Property.DiskImage + import qualified Propellor.Property.Apt as Apt + import qualified Propellor.Property.User as User + import Propellor.Property.Chroot + + main :: IO () + main = mainProperties $ host \"whatever\" $ props + & provisioned (mychroot \"out\") + where + mychroot d = debootstrapped mempty d $ props + & osDebian Unstable X86_64 + & Apt.installed [\"linux-image-amd64\"] + & User.hasPassword (User \"root\") + & User.accountFor (User \"demo\") + & User.hasPassword (User \"demo\") + +It seems that \"debootstrap\" finishes: + + I: Configuring apt-transport-https... + I: Configuring tasksel... + I: Configuring tasksel-data... + I: Configuring libc-bin... + I: Configuring systemd... + I: Configuring ca-certificates... + I: Base system installed successfully. + +But fails immediately afterwards: + + ldd: /usr/local/propellor/propellor: No such file or directory + ** warning: user error (ldd [\"/usr/local/propellor/propellor\"] exited 1) + whatever chroot out exists ... failed + whatever overall ... failed + +(I should probably have used a different hostname than \"whatever\", but... whatever :).) + +So it seems that the chroot support still expects propellor to be installed on the host system? + +I should mention that I've done an extremely small patch to Propellor locally, just to the ChrootBootstrapper instance for ArchLinux to allow it to call debootstrap on Arch Linux -- it seems to exist as a package these days, not sure if it did when that Propellor code was written. Anyway... + +"""]] diff --git a/doc/forum/Using_propellor_for_continers_only/comment_4_9dc985b26c29b9ce21e6c75ec03f6262._comment b/doc/forum/Using_propellor_for_continers_only/comment_4_9dc985b26c29b9ce21e6c75ec03f6262._comment new file mode 100644 index 00000000..72d7ca83 --- /dev/null +++ b/doc/forum/Using_propellor_for_continers_only/comment_4_9dc985b26c29b9ce21e6c75ec03f6262._comment @@ -0,0 +1,21 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 4""" + date="2017-05-13T17:42:41Z" + content=""" +The way propellor handles running in a chroot or container is it exports +its binary and support files into the container. This way the +haskell code can run in a container, rather than being limited to +only running shell commands in the container, and without needing ghc in +the container. + +It does use the hardcoded `localdir` for that. +It would certianly be possible to make it use propellor in a different +location, perhaps using `getExecutablePath`. + +Since the git-annex outside the container passes command-line options to +the one running inside the container to tell it what to do, using +`mainProperties` would also not work since that does not look at +command-line options. It would need to use `defaultMain` or +`processCmdLine` and dispatch itself, or something.. +"""]] diff --git a/doc/forum/Work_on_OS_X.mdwn b/doc/forum/Work_on_OS_X.mdwn new file mode 100644 index 00000000..e3c5fd64 --- /dev/null +++ b/doc/forum/Work_on_OS_X.mdwn @@ -0,0 +1,5 @@ +I'm interested in using Propellor on OS X. I understand that it is not supported though. + +Is there anyone doing this? If it was developed, would support for OS X be merged upstream? + +Thanks! diff --git a/doc/forum/Work_on_OS_X/comment_1_6d7d5b89f1de9604718f7973e4b3eeb1._comment b/doc/forum/Work_on_OS_X/comment_1_6d7d5b89f1de9604718f7973e4b3eeb1._comment new file mode 100644 index 00000000..4eac2063 --- /dev/null +++ b/doc/forum/Work_on_OS_X/comment_1_6d7d5b89f1de9604718f7973e4b3eeb1._comment @@ -0,0 +1,20 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-04-13T21:36:20Z" + content=""" +I got a patch some years back to make propellor compile on OSX. +I merged it. You might want to get in touch with its author, as +he may be doing something with propellor on OSX. +<https://github.com/tittoassini/propellor> + +Anyway, I'd probably merge OSX patches, if they were not super +intrusive. And I don't see why it would be, as propellor already supports +FreeBSD. + +Since `Property` is parameterized by the operating systems it +supports, it should be easy to start by only porting the core parts +of propellor, and then port over individual Properties one by one as +needed. See the commits for the recent FreeBSD port for a nice walkthough +of the changes you'll want to make. +"""]] diff --git a/doc/forum/Work_on_OS_X/comment_2_00b20c240fc13bed6dc54e5b985b41e2._comment b/doc/forum/Work_on_OS_X/comment_2_00b20c240fc13bed6dc54e5b985b41e2._comment new file mode 100644 index 00000000..aa33c85b --- /dev/null +++ b/doc/forum/Work_on_OS_X/comment_2_00b20c240fc13bed6dc54e5b985b41e2._comment @@ -0,0 +1,17 @@ +[[!comment format=mdwn + username="joelmccracken" + avatar="http://cdn.libravatar.org/avatar/45175015b9eb3dd3f6c740b3fe920fed" + subject="comment 2" + date="2017-04-17T17:47:30Z" + content=""" +Sounds good. I contacted the person you linked to, have not heard back yet. + + + +The first issue I ran into is that propellor wants to connect to \"root@<hostname>\", and it doesn't look like this is configurable. +Would you accept a patch to make this configurable? + +Additionally, is this the best place to ask questions about what you would/would not accept? + +Thank you!!! +"""]] diff --git a/doc/forum/Work_on_OS_X/comment_3_294f4783522a8e4887793aac921ee546._comment b/doc/forum/Work_on_OS_X/comment_3_294f4783522a8e4887793aac921ee546._comment new file mode 100644 index 00000000..ed654d3f --- /dev/null +++ b/doc/forum/Work_on_OS_X/comment_3_294f4783522a8e4887793aac921ee546._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 3""" + date="2017-04-18T00:08:13Z" + content=""" +Yes, this is the place. Or you can email me directly, but I prefer to keep +discussions public. + +`propellor --spin` needs a way to run commands as root on the remote host. +If ssh as root on OSX is not allowed, it would need a way to get to a user +who can get root, and it would be very annoying if a password needed to be +entered since each `propellor --spin` actually makes several ssh connections to +the remote host. Anything that works within these constraints would be ok. +"""]] diff --git a/doc/forum/Work_on_OS_X/comment_4_74b579d4d590432b6bd236ccb929cc11._comment b/doc/forum/Work_on_OS_X/comment_4_74b579d4d590432b6bd236ccb929cc11._comment new file mode 100644 index 00000000..d386c1b5 --- /dev/null +++ b/doc/forum/Work_on_OS_X/comment_4_74b579d4d590432b6bd236ccb929cc11._comment @@ -0,0 +1,16 @@ +[[!comment format=mdwn + username="joelmccracken" + avatar="http://cdn.libravatar.org/avatar/45175015b9eb3dd3f6c740b3fe920fed" + subject="comment 4" + date="2017-04-20T02:23:06Z" + content=""" +So, it turns out that yes, root is a thing on os x... but it is complicated. I'm going to put what I learned here because I think it will be useful, at least for telling folks how to use propellor on os x. + +1. Enable the root account. Steps are here: https://support.apple.com/en-us/HT204012 +2. password-authentication as root is disabled -- if you try to `ssh root@localhost`, it wont work. you need a key pair. +3. use su/sudo to install a public key (probably at `.ssh/id_rsa.pub`) to roots authorized_keys. adapted from: https://discussions.apple.com/thread/4078360?start=0&tstart=0 +4. copy the the pub file to authorized keys: `sudo cp /Users/joel/.ssh/id_rsa.pub /var/root/.ssh/authorized_keys` +5. you should now be able to `ssh root@localhost` without a password. + +I'm not super sure that this is even the best way forward, but lets get this working first, then we'll see. +"""]] diff --git a/doc/news/version_4.0.1.mdwn b/doc/news/version_4.0.1.mdwn deleted file mode 100644 index e870a510..00000000 --- a/doc/news/version_4.0.1.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -propellor 4.0.1 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * Fix build with pre-AMP ghc. - * Tor: Restart daemon after installing private key. - * Tor.named, Tor.torPrivKey: Include the new ed25519 public/private key - pair in addition to the old secret\_id\_key."""]]
\ No newline at end of file diff --git a/doc/news/version_4.0.3.mdwn b/doc/news/version_4.0.3.mdwn new file mode 100644 index 00000000..eb467287 --- /dev/null +++ b/doc/news/version_4.0.3.mdwn @@ -0,0 +1,6 @@ +propellor 4.0.3 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * Added Fstab.listed, Fstab.swap, and Mount.swapOn properties. + Thanks, Daniel Brooks. + * Added Propellor.Property.Bootstrap, which can be used to make + disk images contain their own installation of propellor."""]]
\ No newline at end of file diff --git a/doc/todo/initial_spin_compile_failure_recovery.mdwn b/doc/todo/initial_spin_compile_failure_recovery.mdwn new file mode 100644 index 00000000..423b279c --- /dev/null +++ b/doc/todo/initial_spin_compile_failure_recovery.mdwn @@ -0,0 +1,5 @@ +When initial propellor --spin host fails to compile propellor +perhaps due to a ghc compatability bug, spinning again doesn't fix the +problem. IIRC /usr/local/propellor has a git repo set up, but no remote +set, and so the subsequent spin doesn't update it, since propellor is not +running there to receive a git push into the repo. --[[Joey]] diff --git a/doc/todo/property_to_install_propellor.mdwn b/doc/todo/property_to_install_propellor.mdwn new file mode 100644 index 00000000..184977f5 --- /dev/null +++ b/doc/todo/property_to_install_propellor.mdwn @@ -0,0 +1,16 @@ +This seems redundant, since propellor must be running to ensure such a +Property, but a Property to install propellor is useful when eg, creating a +disk image that itself will need to run propellor. --[[Joey]] + +Should support: + +* Cloning the git repo propellor is running in. (Using eg `hostChroot`) +* Cloning some other git repo. +* Installing the precompiled propellor binary. +* Installing the propellor haskell library using cabal/stack/apt. + +Much of this is already implemented, in non-Property form, in +Propellor.Bootstrap, but will need adjustments for this new context. +--[[Joey]] + +> [[done]] diff --git a/doc/todo/property_to_install_propellor/comment_1_b05e9a44e5c7130d9cc928223cd82d78._comment b/doc/todo/property_to_install_propellor/comment_1_b05e9a44e5c7130d9cc928223cd82d78._comment new file mode 100644 index 00000000..5a826fea --- /dev/null +++ b/doc/todo/property_to_install_propellor/comment_1_b05e9a44e5c7130d9cc928223cd82d78._comment @@ -0,0 +1,16 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2017-04-09T17:42:10Z" + content=""" +Making this work when propellor is setting up a chroot is difficult, +because the localdir is bind mounted into the chroot. + +Hmm, `unshare` could be helpful. Run shell commands to clone the localdir +inside `unshare -m`, prefixed with a `umount localdir`. This way, the bind +mount is avoided, and it writes "under" it. Limits the commands that can be +run to set up the localdir to shell commands, but bootstrap already +operates on terms of shell commands so that seems ok. + +`unshare` is linux-specific; comes in util-linux on modern linuxes. +"""]] diff --git a/doc/todo/property_to_install_propellor/comment_2_9fea601af57777e1cb49952483f4da63._comment b/doc/todo/property_to_install_propellor/comment_2_9fea601af57777e1cb49952483f4da63._comment new file mode 100644 index 00000000..f862f79b --- /dev/null +++ b/doc/todo/property_to_install_propellor/comment_2_9fea601af57777e1cb49952483f4da63._comment @@ -0,0 +1,7 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 2""" + date="2017-04-09T20:49:04Z" + content=""" +Well, seems that `unshare` does not work in a chroot. Hmm. +"""]] diff --git a/doc/todo/spin_failure_HEAD.mdwn b/doc/todo/spin_failure_HEAD.mdwn new file mode 100644 index 00000000..c131591b --- /dev/null +++ b/doc/todo/spin_failure_HEAD.mdwn @@ -0,0 +1,10 @@ +Seen recently on 2 hosts: + + Sending privdata (73139 bytes) to kite.kitenet.net ... done + fatal: Couldn't find remote ref HEAD + propellor: <stdout>: hPutStr: illegal operation (handle is closed) + fatal: The remote end hung up unexpectedly + Sending git update to kite.kitenet.net ... failed + +Despite the error, HEAD seems to be updated to the commit that is being spun, +but the rest of the propellor runs doesn't happen. --[[Joey]] diff --git a/joeyconfig.hs b/joeyconfig.hs index 6563dd6f..c1af0a0b 100644 --- a/joeyconfig.hs +++ b/joeyconfig.hs @@ -38,6 +38,7 @@ import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuil import qualified Propellor.Property.SiteSpecific.Branchable as Branchable import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites import Propellor.Property.DiskImage +import Propellor.Property.Bootstrap main :: IO () -- _ ______`| ,-.__ main = defaultMain hosts -- / \___-=O`/|O`/__| (____.' @@ -50,13 +51,13 @@ hosts = -- (o) ` , dragon , clam , mayfly - , oyster , orca , baleen , honeybee , kite , elephant , beaver + , mouse , pell , keysafe ] ++ monsters @@ -82,6 +83,7 @@ testvm = host "testvm.kitenet.net" $ props darkstar :: Host darkstar = host "darkstar.kitenet.net" $ props + & osDebian Unstable X86_64 & ipv6 "2001:4830:1600:187::2" & Aiccu.hasConfig "T18376" "JHZ2-SIXXS" @@ -92,7 +94,7 @@ darkstar = host "darkstar.kitenet.net" $ props [ (SshRsa, "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1YoyHxZwG5Eg0yiMTJLSWJ/+dMM6zZkZiR4JJ0iUfP+tT2bm/lxYompbSqBeiCq+PYcSC67mALxp1vfmdOV//LWlbXfotpxtyxbdTcQbHhdz4num9rJQz1tjsOsxTEheX5jKirFNC5OiKhqwIuNydKWDS9qHGqsKcZQ8p+n1g9Lr3nJVGY7eRRXzw/HopTpwmGmAmb9IXY6DC2k91KReRZAlOrk0287LaK3eCe1z0bu7LYzqqS+w99iXZ/Qs0m9OqAPnHZjWQQ0fN4xn5JQpZSJ7sqO38TBAimM+IHPmy2FTNVVn9zGM+vN1O2xr3l796QmaUG1+XLL0shfR/OZbb joey@darkstar") ] - ! imageBuilt "/tmp/img" c MSDOS (grubBooted PC) + & imageBuilt "/srv/propellor-disk.img" c MSDOS (grubBooted PC) [ partition EXT2 `mountedAt` "/boot" `setFlag` BootFlag , partition EXT4 `mountedAt` "/" @@ -105,6 +107,7 @@ darkstar = host "darkstar.kitenet.net" $ props & Hostname.setTo "demo" & Apt.installed ["linux-image-amd64"] & User "root" `User.hasInsecurePassword` "root" + & bootstrappedFrom GitRepoOutsideChroot gnu :: Host gnu = host "gnu.kitenet.net" $ props @@ -118,7 +121,7 @@ clam :: Host clam = host "clam.kitenet.net" $ props & standardSystem Unstable X86_64 ["Unreliable server. Anything here may be lost at any time!" ] - & ipv4 "167.88.41.194" + & ipv4 "64.137.231.62" & CloudAtCost.decruft & Ssh.hostKeys hostContext @@ -157,31 +160,6 @@ mayfly = host "mayfly.kitenet.net" $ props & Tor.named "kite3" & Tor.bandwidthRate (Tor.PerMonth "400 GB") -oyster :: Host -oyster = host "oyster.kitenet.net" $ props - & standardSystem Unstable X86_64 - [ "Unreliable server. Anything here may be lost at any time!" ] - & ipv4 "64.137.179.21" - - & CloudAtCost.decruft - & Ssh.hostKeys hostContext - [ (SshEcdsa, "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP0ws/IxQegVU0RhqnIm5A/vRSPTO70wD4o2Bd1jL970dTetNyXzvWGe1spEbLjIYSLIO7WvOBSE5RhplBKFMUU=") - ] - & Apt.unattendedUpgrades - & Network.ipv6to4 - & Systemd.persistentJournal - & Journald.systemMaxUse "500MiB" - & Apt.serviceInstalledRunning "swapspace" - - & Tor.isRelay - & Tor.named "kite4" - & Tor.bandwidthRate (Tor.PerMonth "400 GB") - - -- Nothing is using http port 80, so listen on - -- that port for ssh, for traveling on bad networks that - -- block 22. - & Ssh.listenPort (Port 80) - baleen :: Host baleen = host "baleen.kitenet.net" $ props & standardSystem Unstable X86_64 [ "New git-annex build box." ] @@ -356,7 +334,9 @@ kite = host "kite.kitenet.net" $ props & JoeySites.oldUseNetServer hosts & alias "ns4.kitenet.net" - & myDnsPrimary True "kitenet.net" [] + & myDnsPrimary True "kitenet.net" + [ (RelDomain "mouse-onion", CNAME $ AbsDomain "htieo6yu2qtcn2j3.onion") + ] & myDnsPrimary True "joeyh.name" [] & myDnsPrimary True "ikiwiki.info" [] & myDnsPrimary True "olduse.net" @@ -366,6 +346,10 @@ kite = host "kite.kitenet.net" $ props & branchableSecondary & Dns.secondaryFor ["animx"] hosts "animx.eu.org" + & alias "debug-me.joeyh.name" + -- debug-me installed manually until package is available + & Systemd.enabled "debug-me" + -- testing & Apache.httpsVirtualHost "letsencrypt.joeyh.name" "/var/www/html" (LetsEncrypt.AgreeTOS (Just "id@joeyh.name")) @@ -450,6 +434,13 @@ beaver = host "beaver.kitenet.net" $ props & Cron.niceJob "system disk backed up" Cron.Weekly (User "root") "/" "rsync -a -x / /home/joey/lib/backup/beaver.kitenet.net/" +mouse :: Host +mouse = host "mouse.kitenet.net" $ props + & ipv4 "67.223.19.96" + & Apt.installed ["ssh"] + & Tor.installed + & Tor.hiddenServiceAvailable "ssh" (Port 22) + -- Branchable is not completely deployed with propellor yet. pell :: Host pell = host "pell.branchable.com" $ props @@ -650,12 +641,9 @@ monsters = -- but do want to track their public keys etc. & Ssh.hostPubKey SshEcdsa "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=" , host "ns6.gandi.net" $ props & ipv4 "217.70.177.40" - , host "mouse.kitenet.net" $ props - & ipv6 "2001:4830:1600:492::2" - & ipv4 "67.223.19.96" , host "animx" $ props - & ipv4 "76.7.162.101" & ipv4 "76.7.162.186" + & ipv4 "76.7.162.187" ] diff --git a/privdata/.joeyconfig/keyring.gpg b/privdata/.joeyconfig/keyring.gpg Binary files differindex 01dd24e7..d5a1c070 100644 --- a/privdata/.joeyconfig/keyring.gpg +++ b/privdata/.joeyconfig/keyring.gpg diff --git a/privdata/.joeyconfig/privdata.gpg b/privdata/.joeyconfig/privdata.gpg index e1d68081..9c6150d9 100644 --- a/privdata/.joeyconfig/privdata.gpg +++ b/privdata/.joeyconfig/privdata.gpg @@ -1,1436 +1,1436 @@ -----BEGIN PGP MESSAGE----- -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 -LpzHUjRGyqQ7is/IDlvEKkJrfbzVguoJMqk9rT8y+Ptn0Z3+YKjVwo0bGrmSjFua -JwhoLNw+ZHD97vhx6NkUFCoJq7/Oxg7Ky8igdNWJM1BSiV4EvwyzQic0IlgIs4YZ -8njVa5mfs2zYsa2Kn5/urFgJ506tA25TGMlkd/pPaJo3oQ7DZhIM1fZKNS4PonY9 -lHfGFM63ourqMnxDZKs+vaj+mNnbY0OR5rSL43JqoqfYxBJaVcKlMTXHUeUvTMnY -zWJlHikZUsWDogcFHcoZ8yo1RpLQmjIbz8IcKfZJAhTRme/5EJbI/hy8NR4hqSrS -KDrH7y/ZV869Ex2XasOr7+V9NL8e5RZlMbL7kyuxy8c86VtQuPLjahCLf9Incles -4UeGHLDTAQXyK7XzwA0zrKZr4gCIBOpNBaO+DNbp1JAIQ3qq3btcAInlKyiJrmvj -kwq+a/N8XwWcUZ84UGegOGxSSVLTIofvWYSf06iPEvTwz2XBUJ46weKfWjBjzO6h -Y4I1IzGbSIneStjIMzSixtRiDVY/tE5Eu+in7gWgYP+22LmzPM4RESrddBTeXvae -vtaZ3TIRy4YNarLNCfyu7FtMQKmUUgXcuGLhFrQnnri3qrrWAz39UhRVmV3LjO8h -SWeyAo3a864+/d8Skj/mDsBmdTPEMcZdmsjD4IN4+9i/9FvwKwpF8oOZLJ7eNOuf -MUF2vp468cXbf2KWu0+XLU55yG49mX9C2+KWo2pxpyH7o7gw4DqYXnLu0mbbhU64 -VShGky7DAUgOf1ovVMvRaHCIpC43oPtEX8nf7Xd0i+q9kVBrcvlgHJofBW2VFd6+ -kxXsUNLIJpsipQ1iQWGwmNh99qXPfpldK3sHVQrOgS11y7O7KrVja/z1OOyCAI/V -c3VdaXGnkt6NvBxiUjB8s2SQL7Y0/Un3+jYJ8ALCMZOgfmMiX8ce47+SYGCKYNIy -RVilruXylm4E3aSdgB6+O5dbXofPZSCfjQqt4o4T73n6vGnGzTBXYOL3lPTjg4JU -jFBrXw1nxglYrSdyYCwI3bwYiw2s/XENQsPfTVmFRFsb4ZcL1vhn20CKZwi/90WA -tdNUCeh6ZZzyk8v99k0zOJnnXOeWqoMfu8a36SWz7/Gsj6/OXvdtrZSOmeUoz7rT -iy0lUK+oaLGp8qHBLaUxwiNbsImyhD4Gpiu7S3kj2Lan3Qrr+/8ydHE/zjPzyTSx -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 -3+TJ7B0= -=9WOK +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 +SqnwqXgbrPQbnqnb +=p9gn -----END PGP MESSAGE----- diff --git a/privdata/relocate b/privdata/relocate new file mode 100644 index 00000000..271692d8 --- /dev/null +++ b/privdata/relocate @@ -0,0 +1 @@ +.joeyconfig diff --git a/propellor.cabal b/propellor.cabal index a04089b5..3b12344f 100644 --- a/propellor.cabal +++ b/propellor.cabal @@ -1,6 +1,6 @@ Name: propellor -Version: 4.0.1 -Cabal-Version: >= 1.8 +Version: 4.0.3 +Cabal-Version: >= 1.20 License: BSD2 Maintainer: Joey Hess <id@joeyh.name> Author: Joey Hess @@ -36,6 +36,7 @@ Description: It is configured using haskell. Executable propellor + Default-Language: Haskell98 Main-Is: wrapper.hs GHC-Options: -threaded -Wall -fno-warn-tabs -O0 if impl(ghc >= 8.0) @@ -46,13 +47,14 @@ Executable propellor -- propellor needs to support the ghc shipped in Debian stable, -- and also only depends on packages in Debian stable. base >= 4.5, base < 5, - MissingH, directory, filepath, IfElse, process, bytestring, hslogger, + directory, filepath, IfElse, process, bytestring, hslogger, split, unix, unix-compat, ansi-terminal, containers (>= 0.5), network, async, - time, mtl, transformers, exceptions (>= 0.6), stm, text + time, mtl, transformers, exceptions (>= 0.6), stm, text, hashable Other-Modules: Propellor.DotDir Executable propellor-config + Default-Language: Haskell98 Main-Is: config.hs GHC-Options: -threaded -Wall -fno-warn-tabs -O0 if impl(ghc >= 8.0) @@ -61,11 +63,12 @@ Executable propellor-config Hs-Source-Dirs: src Build-Depends: base >= 4.5, base < 5, - MissingH, directory, filepath, IfElse, process, bytestring, hslogger, + directory, filepath, IfElse, process, bytestring, hslogger, split, unix, unix-compat, ansi-terminal, containers (>= 0.5), network, async, - time, mtl, transformers, exceptions (>= 0.6), stm, text + time, mtl, transformers, exceptions (>= 0.6), stm, text, hashable Library + Default-Language: Haskell98 GHC-Options: -Wall -fno-warn-tabs -O0 if impl(ghc >= 8.0) GHC-Options: -fno-warn-redundant-constraints @@ -73,9 +76,9 @@ Library Hs-Source-Dirs: src Build-Depends: base >= 4.5, base < 5, - MissingH, directory, filepath, IfElse, process, bytestring, hslogger, + directory, filepath, IfElse, process, bytestring, hslogger, split, unix, unix-compat, ansi-terminal, containers (>= 0.5), network, async, - time, mtl, transformers, exceptions (>= 0.6), stm, text + time, mtl, transformers, exceptions (>= 0.6), stm, text, hashable Exposed-Modules: Propellor @@ -87,6 +90,7 @@ Library Propellor.Property.Apt Propellor.Property.Apt.PPA Propellor.Property.Attic + Propellor.Property.Bootstrap Propellor.Property.Borg Propellor.Property.Ccache Propellor.Property.Cmd @@ -135,6 +139,7 @@ Library Propellor.Property.PropellorRepo Propellor.Property.Prosody Propellor.Property.Reboot + Propellor.Property.Restic Propellor.Property.Rsync Propellor.Property.Sbuild Propellor.Property.Scheduled @@ -220,10 +225,13 @@ Library Utility.Process.NonConcurrent Utility.SafeCommand Utility.Scheduled + Utility.Scheduled + Utility.Split Utility.SystemDirectory Utility.Table Utility.ThreadScheduler Utility.Tmp + Utility.Tuple Utility.UserInfo System.Console.Concurrent System.Console.Concurrent.Internal diff --git a/src/Propellor/Bootstrap.hs b/src/Propellor/Bootstrap.hs index 9d2d603d..a3b7f315 100644 --- a/src/Propellor/Bootstrap.hs +++ b/src/Propellor/Bootstrap.hs @@ -83,7 +83,7 @@ depsCommand msys = "( " ++ intercalate " ; " (concat [osinstall, cabalinstall]) , "ghc" , "cabal-install" , "libghc-async-dev" - , "libghc-missingh-dev" + , "libghc-split-dev" , "libghc-hslogger-dev" , "libghc-unix-compat-dev" , "libghc-ansi-terminal-dev" @@ -94,13 +94,14 @@ depsCommand msys = "( " ++ intercalate " ; " (concat [osinstall, cabalinstall]) , "libghc-exceptions-dev" , "libghc-stm-dev" , "libghc-text-dev" + , "libghc-hashable-dev" ] fbsddeps = [ "gnupg" , "ghc" , "hs-cabal-install" , "hs-async" - , "hs-MissingH" + , "hs-split" , "hs-hslogger" , "hs-unix-compat" , "hs-ansi-terminal" @@ -111,13 +112,14 @@ depsCommand msys = "( " ++ intercalate " ; " (concat [osinstall, cabalinstall]) , "hs-exceptions" , "hs-stm" , "hs-text" + , "hs-hashable" ] archlinuxdeps = [ "gnupg" , "ghc" , "cabal-install" , "haskell-async" - , "haskell-missingh" + , "haskell-split" , "haskell-hslogger" , "haskell-unix-compat" , "haskell-ansi-terminal" @@ -129,6 +131,7 @@ depsCommand msys = "( " ++ intercalate " ; " (concat [osinstall, cabalinstall]) , "haskell-exceptions" , "haskell-stm" , "haskell-text" + , "hashell-hashable" ] installGitCommand :: Maybe System -> ShellCommand @@ -144,7 +147,7 @@ installGitCommand msys = case msys of -- assume a debian derived system when not specified Nothing -> use apt where - use cmds = "if ! git --version >/dev/null; then " ++ intercalate " && " cmds ++ "; fi" + use cmds = "if ! git --version >/dev/null 2>&1; then " ++ intercalate " && " cmds ++ "; fi" apt = [ "apt-get update" , "DEBIAN_FRONTEND=noninteractive apt-get -qq --no-install-recommends --no-upgrade -y install git" diff --git a/src/Propellor/Gpg.hs b/src/Propellor/Gpg.hs index 6ac153cc..43c4eddf 100644 --- a/src/Propellor/Gpg.hs +++ b/src/Propellor/Gpg.hs @@ -2,7 +2,6 @@ module Propellor.Gpg where import System.IO import Data.Maybe -import Data.List.Utils import Control.Monad import Control.Applicative import Prelude @@ -18,6 +17,7 @@ import Utility.Misc import Utility.Tmp import Utility.Env import Utility.Directory +import Utility.Split type KeyId = String diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs index 94c82c9f..8b2a4e3d 100644 --- a/src/Propellor/Property.hs +++ b/src/Propellor/Property.hs @@ -50,8 +50,8 @@ import Data.Monoid import Control.Monad.IfElse import "mtl" Control.Monad.RWS.Strict import System.Posix.Files -import qualified Data.Hash.MD5 as MD5 import Data.List +import Data.Hashable import Control.Applicative import Prelude @@ -64,8 +64,8 @@ import Propellor.Info import Propellor.EnsureProperty import Utility.Exception import Utility.Monad -import Utility.Misc import Utility.Directory +import Utility.Misc -- | Makes a perhaps non-idempotent Property be idempotent by using a flag -- file to indicate whether it has run before. @@ -228,12 +228,12 @@ changesFile p f = checkResult getstat comparestat p -- Changes to mtime etc that do not change file content are treated as -- NoChange. changesFileContent :: Checkable p i => p i -> FilePath -> Property i -changesFileContent p f = checkResult getmd5 comparemd5 p +changesFileContent p f = checkResult gethash comparehash p where - getmd5 = catchMaybeIO $ MD5.md5 . MD5.Str <$> readFileStrict f - comparemd5 oldmd5 = do - newmd5 <- getmd5 - return $ if oldmd5 == newmd5 then NoChange else MadeChange + gethash = catchMaybeIO $ hash <$> readFileStrict f + comparehash oldhash = do + newhash <- gethash + return $ if oldhash == newhash then NoChange else MadeChange -- | Determines if the first file is newer than the second file. -- diff --git a/src/Propellor/Property/Apt/PPA.hs b/src/Propellor/Property/Apt/PPA.hs index 346125ff..a8f7db15 100644 --- a/src/Propellor/Property/Apt/PPA.hs +++ b/src/Propellor/Property/Apt/PPA.hs @@ -6,10 +6,11 @@ module Propellor.Property.Apt.PPA where import Data.List import Control.Applicative import Prelude -import Data.String.Utils import Data.String (IsString(..)) + import Propellor.Base import qualified Propellor.Property.Apt as Apt +import Utility.Split -- | Ensure software-properties-common is installed. installed :: Property DebianLike diff --git a/src/Propellor/Property/Bootstrap.hs b/src/Propellor/Property/Bootstrap.hs new file mode 100644 index 00000000..5678a865 --- /dev/null +++ b/src/Propellor/Property/Bootstrap.hs @@ -0,0 +1,111 @@ +module Propellor.Property.Bootstrap (RepoSource(..), bootstrappedFrom, clonedFrom) where + +import Propellor.Base +import Propellor.Bootstrap +import Propellor.Property.Chroot + +import Data.List +import qualified Data.ByteString as B + +-- | Where a propellor repository should be bootstrapped from. +data RepoSource + = GitRepoUrl String + | GitRepoOutsideChroot + -- ^ When used in a chroot, this copies the git repository from + -- outside the chroot, including its configuration. + +-- | Bootstraps a propellor installation into +-- /usr/local/propellor/ +-- +-- Normally, propellor is already bootstrapped when it runs, so this +-- property is not useful. However, this can be useful inside a +-- chroot used to build a disk image, to make the disk image +-- have propellor installed. +-- +-- The git repository is cloned (or pulled to update if it already exists). +-- +-- All build dependencies are installed, using distribution packages +-- or falling back to using cabal. +bootstrappedFrom :: RepoSource -> Property Linux +bootstrappedFrom reposource = go `requires` clonedFrom reposource + where + go :: Property Linux + go = property "Propellor bootstrapped" $ do + system <- getOS + assumeChange $ exposeTrueLocaldir $ const $ + runShellCommand $ buildShellCommand + [ "cd " ++ localdir + , bootstrapPropellorCommand system + ] + +-- | Clones the propellor repeository into /usr/local/propellor/ +-- +-- If the propellor repo has already been cloned, pulls to get it +-- up-to-date. +clonedFrom :: RepoSource -> Property Linux +clonedFrom reposource = case reposource of + GitRepoOutsideChroot -> go `onChange` copygitconfig + _ -> go + where + go :: Property Linux + go = property ("Propellor repo cloned from " ++ sourcedesc) $ + ifM needclone (makeclone, updateclone) + + makeclone = do + let tmpclone = localdir ++ ".tmpclone" + system <- getOS + assumeChange $ exposeTrueLocaldir $ \sysdir -> do + let originloc = case reposource of + GitRepoUrl s -> s + GitRepoOutsideChroot -> sysdir + runShellCommand $ buildShellCommand + [ installGitCommand system + , "rm -rf " ++ tmpclone + , "git clone " ++ shellEscape originloc ++ " " ++ tmpclone + , "mkdir -p " ++ localdir + -- This is done rather than deleting + -- the old localdir, because if it is bound + -- mounted from outside the chroot, deleting + -- it after unmounting in unshare will remove + -- the bind mount outside the unshare. + , "(cd " ++ tmpclone ++ " && tar c .) | (cd " ++ localdir ++ " && tar x)" + , "rm -rf " ++ tmpclone + ] + + updateclone = assumeChange $ exposeTrueLocaldir $ const $ + runShellCommand $ buildShellCommand + [ "cd " ++ localdir + , "git pull" + ] + + -- Copy the git config of the repo outside the chroot into the + -- chroot. This way it has the same remote urls, and other git + -- configuration. + copygitconfig :: Property Linux + copygitconfig = property ("Propellor repo git config copied from outside the chroot") $ do + let gitconfig = localdir <> ".git" <> "config" + cfg <- liftIO $ B.readFile gitconfig + exposeTrueLocaldir $ const $ + liftIO $ B.writeFile gitconfig cfg + return MadeChange + + needclone = (inChroot <&&> truelocaldirisempty) + <||> (liftIO (not <$> doesDirectoryExist localdir)) + + truelocaldirisempty = exposeTrueLocaldir $ const $ + runShellCommand ("test ! -d " ++ localdir ++ "/.git") + + sourcedesc = case reposource of + GitRepoUrl s -> s + GitRepoOutsideChroot -> localdir ++ " outside the chroot" + +assumeChange :: Propellor Bool -> Propellor Result +assumeChange a = do + ok <- a + return (cmdResult ok <> MadeChange) + +buildShellCommand :: [String] -> String +buildShellCommand = intercalate "&&" . map (\c -> "(" ++ c ++ ")") + +runShellCommand :: String -> Propellor Bool +runShellCommand s = liftIO $ boolSystem "sh" [ Param "-c", Param s] diff --git a/src/Propellor/Property/Chroot.hs b/src/Propellor/Property/Chroot.hs index 7738d97e..ad2ae705 100644 --- a/src/Propellor/Property/Chroot.hs +++ b/src/Propellor/Property/Chroot.hs @@ -11,6 +11,7 @@ module Propellor.Property.Chroot ( ChrootTarball(..), noServices, inChroot, + exposeTrueLocaldir, -- * Internal use provisioned', propagateChrootInfo, @@ -32,9 +33,9 @@ import qualified Propellor.Property.File as File import qualified Propellor.Shim as Shim import Propellor.Property.Mount import Utility.FileMode +import Utility.Split import qualified Data.Map as M -import Data.List.Utils import System.Posix.Directory import System.Console.Concurrent @@ -295,6 +296,38 @@ setInChroot h = h { hostInfo = hostInfo h `addInfo` InfoVal (InChroot True) } newtype InChroot = InChroot Bool deriving (Typeable, Show) +-- | Runs an action with the true localdir exposed, +-- not the one bind-mounted into a chroot. The action is passed the +-- path containing the contents of the localdir outside the chroot. +-- +-- In a chroot, this is accomplished by temporily bind mounting the localdir +-- to a temp directory, to preserve access to the original bind mount. Then +-- we unmount the localdir to expose the true localdir. Finally, to cleanup, +-- the temp directory is bind mounted back to the localdir. +exposeTrueLocaldir :: (FilePath -> Propellor a) -> Propellor a +exposeTrueLocaldir a = ifM inChroot + ( withTmpDirIn (takeDirectory localdir) "propellor.tmp" $ \tmpdir -> + bracket_ + (movebindmount localdir tmpdir) + (movebindmount tmpdir localdir) + (a tmpdir) + , a localdir + ) + where + movebindmount from to = liftIO $ do + run "mount" [Param "--bind", File from, File to] + -- Have to lazy unmount, because the propellor process + -- is running in the localdir that it's unmounting.. + run "umount" [Param "-l", File from] + -- We were in the old localdir; move to the new one after + -- flipping the bind mounts. Otherwise, commands that try + -- to access the cwd will fail because it got umounted out + -- from under. + changeWorkingDirectory "/" + changeWorkingDirectory localdir + run cmd ps = unlessM (boolSystem cmd ps) $ + error $ "exposeTrueLocaldir failed to run " ++ show (cmd, ps) + -- | Generates a Chroot that has all the properties of a Host. -- -- Note that it's possible to create loops using this, where a host diff --git a/src/Propellor/Property/Cmd.hs b/src/Propellor/Property/Cmd.hs index 6b84acb5..f2de1a27 100644 --- a/src/Propellor/Property/Cmd.hs +++ b/src/Propellor/Property/Cmd.hs @@ -33,6 +33,7 @@ module Propellor.Property.Cmd ( Script, scriptProperty, userScriptProperty, + cmdResult, -- * Lower-level interface for running commands CommandParam(..), boolSystem, diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs index 1080418b..d53bab71 100644 --- a/src/Propellor/Property/Docker.hs +++ b/src/Propellor/Property/Docker.hs @@ -59,13 +59,13 @@ import qualified Propellor.Property.Pacman as Pacman import qualified Propellor.Shim as Shim import Utility.Path import Utility.ThreadScheduler +import Utility.Split import Control.Concurrent.Async hiding (link) import System.Posix.Directory import System.Posix.Process import Prelude hiding (init) import Data.List hiding (init) -import Data.List.Utils import qualified Data.Map as M import System.Console.Concurrent diff --git a/src/Propellor/Property/Fstab.hs b/src/Propellor/Property/Fstab.hs index 60f11d8e..29b85426 100644 --- a/src/Propellor/Property/Fstab.hs +++ b/src/Propellor/Property/Fstab.hs @@ -24,19 +24,32 @@ import Utility.Table -- Note that if anything else is already mounted at the `MountPoint`, it -- will be left as-is by this property. mounted :: FsType -> Source -> MountPoint -> MountOpts -> Property Linux -mounted fs src mnt opts = tightenTargets $ - "/etc/fstab" `File.containsLine` l - `describe` (mnt ++ " mounted by fstab") +mounted fs src mnt opts = tightenTargets $ + listed fs src mnt opts `onChange` mountnow where - l = intercalate "\t" [src, mnt, fs, formatMountOpts opts, dump, passno] - dump = "0" - passno = "2" -- This use of mountPoints, which is linux-only, is why this -- property currently only supports linux. mountnow = check (notElem mnt <$> mountPoints) $ cmdProperty "mount" [mnt] +-- | Ensures that </etc/fstab> contains a line mounting the specified +-- `Source` on the specified `MountPoint`. Does not ensure that it's +-- currently `mounted`. +listed :: FsType -> Source -> MountPoint -> MountOpts -> Property UnixLike +listed fs src mnt opts = "/etc/fstab" `File.containsLine` l + `describe` (mnt ++ " mounted by fstab") + where + l = intercalate "\t" [src, mnt, fs, formatMountOpts opts, dump, passno] + dump = "0" + passno = "2" + +-- | Ensures that </etc/fstab> contains a line enabling the specified +-- `Source` to be used as swap space, and that it's enabled. +swap :: Source -> Property Linux +swap src = listed "swap" src "none" mempty + `onChange` swapOn src + newtype SwapPartition = SwapPartition FilePath -- | Replaces </etc/fstab> with a file that should cause the currently @@ -77,8 +90,8 @@ genFstab mnts swaps mnttransform = do , pure "0" , pure (if mnt == "/" then "1" else "2") ] - getswapcfg (SwapPartition swap) = sequence - [ fromMaybe swap <$> getM (\a -> a swap) + getswapcfg (SwapPartition s) = sequence + [ fromMaybe s <$> getM (\a -> a s) [ uuidprefix getSourceUUID , sourceprefix getSourceLabel ] diff --git a/src/Propellor/Property/Hostname.hs b/src/Propellor/Property/Hostname.hs index e1342d91..1eb9d690 100644 --- a/src/Propellor/Property/Hostname.hs +++ b/src/Propellor/Property/Hostname.hs @@ -3,9 +3,9 @@ module Propellor.Property.Hostname where import Propellor.Base import qualified Propellor.Property.File as File import Propellor.Property.Chroot (inChroot) +import Utility.Split import Data.List -import Data.List.Utils -- | Ensures that the hostname is set using best practices, to whatever -- name the `Host` has. diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs index 026509a9..5dcc5fe1 100644 --- a/src/Propellor/Property/Mount.hs +++ b/src/Propellor/Property/Mount.hs @@ -40,6 +40,9 @@ formatMountOpts (MountOpts []) = "defaults" formatMountOpts (MountOpts l) = intercalate "," l -- | Mounts a device, without listing it in </etc/fstab>. +-- +-- Note that this property will fail if the device is already mounted +-- at the MountPoint. mounted :: FsType -> Source -> MountPoint -> MountOpts -> Property UnixLike mounted fs src mnt opts = property (mnt ++ " mounted") $ toResult <$> liftIO (mount fs src mnt opts) @@ -52,6 +55,17 @@ bindMount src dest = tightenTargets $ `assume` MadeChange `describe` ("bind mounted " ++ src ++ " to " ++ dest) +-- | Enables swapping to a device, which must be formatted already as a swap +-- partition. +swapOn :: Source -> RevertableProperty Linux Linux +swapOn mnt = tightenTargets doswapon <!> tightenTargets doswapoff + where + swaps = lines <$> readProcess "swapon" ["--show=NAME"] + doswapon = check (notElem mnt <$> swaps) $ + cmdProperty "swapon" [mnt] + doswapoff = check (elem mnt <$> swaps) $ + cmdProperty "swapoff" [mnt] + mount :: FsType -> Source -> MountPoint -> MountOpts -> IO Bool mount fs src mnt opts = boolSystem "mount" $ [ Param "-t", Param fs diff --git a/src/Propellor/Property/Restic.hs b/src/Propellor/Property/Restic.hs new file mode 100644 index 00000000..64cd4091 --- /dev/null +++ b/src/Propellor/Property/Restic.hs @@ -0,0 +1,202 @@ +-- | Maintainer: Félix Sipma <felix+propellor@gueux.org> +-- +-- Support for the restic backup tool <https://github.com/restic/restic> + +module Propellor.Property.Restic + ( ResticRepo (..) + , installed + , repoExists + , init + , restored + , backup + , KeepPolicy (..) + ) where + +import Propellor.Base hiding (init) +import Prelude hiding (init) +import qualified Propellor.Property.Apt as Apt +import qualified Propellor.Property.Cron as Cron +import qualified Propellor.Property.File as File +import Data.List (intercalate) + +type Url = String + +type ResticParam = String + +data ResticRepo + = Direct FilePath + | SFTP User HostName FilePath + | REST Url + +instance ConfigurableValue ResticRepo where + val (Direct fp) = fp + val (SFTP u h fp) = "sftp:" ++ val u ++ "@" ++ val h ++ ":" ++ fp + val (REST url) = "rest:" ++ url + +installed :: Property DebianLike +installed = withOS desc $ \w o -> case o of + (Just (System (Debian _ (Stable "jessie")) _)) -> ensureProperty w $ + Apt.installedBackport ["restic"] + _ -> ensureProperty w $ + Apt.installed ["restic"] + where + desc = "installed restic" + +repoExists :: ResticRepo -> IO Bool +repoExists repo = boolSystem "restic" + [ Param "-r" + , File (val repo) + , Param "--password-file" + , File (getPasswordFile repo) + , Param "snapshots" + ] + +passwordFileDir :: FilePath +passwordFileDir = "/etc/restic-keys" + +getPasswordFile :: ResticRepo -> FilePath +getPasswordFile repo = passwordFileDir </> File.configFileName (val repo) + +passwordFileConfigured :: ResticRepo -> Property (HasInfo + UnixLike) +passwordFileConfigured repo = propertyList "restic password file" $ props + & File.dirExists passwordFileDir + & File.mode passwordFileDir 0O2700 + & getPasswordFile repo `File.hasPrivContent` hostContext + +-- | Inits a new restic repository +init :: ResticRepo -> Property (HasInfo + DebianLike) +init repo = check (not <$> repoExists repo) (cmdProperty "restic" initargs) + `requires` installed + `requires` passwordFileConfigured repo + where + initargs = + [ "-r" + , val repo + , "--password-file" + , getPasswordFile repo + , "init" + ] + +-- | Restores a directory from a restic backup. +-- +-- Only does anything if the directory does not exist, or exists, +-- but is completely empty. +-- +-- The restore is performed atomically; restoring to a temp directory +-- and then moving it to the directory. +restored :: FilePath -> ResticRepo -> Property (HasInfo + DebianLike) +restored dir repo = go + `requires` init repo + where + go :: Property DebianLike + go = property (dir ++ " restored by restic") $ ifM (liftIO needsRestore) + ( do + warningMessage $ dir ++ " is empty/missing; restoring from backup ..." + liftIO restore + , noChange + ) + + needsRestore = null <$> catchDefaultIO [] (dirContents dir) + + restore = withTmpDirIn (takeDirectory dir) "restic-restore" $ \tmpdir -> do + ok <- boolSystem "restic" + [ Param "-r" + , File (val repo) + , Param "--password-file" + , File (getPasswordFile repo) + , Param "restore" + , Param "latest" + , Param "--target" + , File tmpdir + ] + let restoreddir = tmpdir ++ "/" ++ dir + ifM (pure ok <&&> doesDirectoryExist restoreddir) + ( do + void $ tryIO $ removeDirectory dir + renameDirectory restoreddir dir + return MadeChange + , return FailedChange + ) + +-- | Installs a cron job that causes a given directory to be backed +-- up, by running restic with some parameters. +-- +-- If the directory does not exist, or exists but is completely empty, +-- this Property will immediately restore it from an existing backup. +-- +-- So, this property can be used to deploy a directory of content +-- to a host, while also ensuring any changes made to it get backed up. +-- For example: +-- +-- > & Restic.backup "/srv/git" +-- > (Restic.SFTP (User root) (HostName myserver) /mnt/backup/git.restic") +-- > Cron.Daily +-- > ["--exclude=/srv/git/tobeignored"] +-- > [Restic.KeepDays 7, Restic.KeepWeeks 4, Restic.KeepMonths 6, Restic.KeepYears 1] +-- +-- Since restic uses a fair amount of system resources, only one restic +-- backup job will be run at a time. Other jobs will wait their turns to +-- run. +backup :: FilePath -> ResticRepo -> Cron.Times -> [ResticParam] -> [KeepPolicy] -> Property (HasInfo + DebianLike) +backup dir repo crontimes extraargs kp = backup' dir repo crontimes extraargs kp + `requires` restored dir repo + +-- | Does a backup, but does not automatically restore. +backup' :: FilePath -> ResticRepo -> Cron.Times -> [ResticParam] -> [KeepPolicy] -> Property (HasInfo + DebianLike) +backup' dir repo crontimes extraargs kp = cronjob + `describe` desc + `requires` init repo + where + desc = val repo ++ " restic backup" + cronjob = Cron.niceJob ("restic_backup" ++ dir) crontimes (User "root") "/" $ + "flock " ++ shellEscape lockfile ++ " sh -c " ++ shellEscape backupcmd + lockfile = "/var/lock/propellor-restic.lock" + backupcmd = intercalate " && " $ + createCommand + : if null kp then [] else [pruneCommand] + createCommand = unwords $ + [ "restic" + , "-r" + , shellEscape (val repo) + , "--password-file" + , shellEscape (getPasswordFile repo) + ] + ++ map shellEscape extraargs ++ + [ "backup" + , shellEscape dir + ] + pruneCommand = unwords $ + [ "restic" + , "-r" + , shellEscape (val repo) + , "--password-file" + , shellEscape (getPasswordFile repo) + , "forget" + , "--prune" + ] + ++ + map keepParam kp + +-- | Constructs a ResticParam that specifies which old backup generations to +-- keep. By default, all generations are kept. However, when this parameter is +-- passed to the `backup` property, they will run restic prune to clean out +-- generations not specified here. +keepParam :: KeepPolicy -> ResticParam +keepParam (KeepLast n) = "--keep-last=" ++ val n +keepParam (KeepHours n) = "--keep-hourly=" ++ val n +keepParam (KeepDays n) = "--keep-daily=" ++ val n +keepParam (KeepWeeks n) = "--keep-weekly=" ++ val n +keepParam (KeepMonths n) = "--keep-monthly=" ++ val n +keepParam (KeepYears n) = "--keep-yearly=" ++ val n + +-- | Policy for backup generations to keep. For example, KeepDays 30 will +-- keep the latest backup for each day when a backup was made, and keep the +-- last 30 such backups. When multiple KeepPolicies are combined together, +-- backups meeting any policy are kept. See restic's man page for details. +data KeepPolicy + = KeepLast Int + | KeepHours Int + | KeepDays Int + | KeepWeeks Int + | KeepMonths Int + | KeepYears Int diff --git a/src/Propellor/Property/Sbuild.hs b/src/Propellor/Property/Sbuild.hs index 00109381..460d0b16 100644 --- a/src/Propellor/Property/Sbuild.hs +++ b/src/Propellor/Property/Sbuild.hs @@ -98,10 +98,10 @@ import qualified Propellor.Property.File as File import qualified Propellor.Property.Schroot as Schroot import qualified Propellor.Property.Reboot as Reboot import qualified Propellor.Property.User as User - import Utility.FileMode +import Utility.Split + import Data.List -import Data.List.Utils type Suite = String diff --git a/src/Propellor/Property/SiteSpecific/JoeySites.hs b/src/Propellor/Property/SiteSpecific/JoeySites.hs index 28246dfe..9b4a3378 100644 --- a/src/Propellor/Property/SiteSpecific/JoeySites.hs +++ b/src/Propellor/Property/SiteSpecific/JoeySites.hs @@ -22,10 +22,10 @@ import qualified Propellor.Property.Systemd as Systemd import qualified Propellor.Property.Fail2Ban as Fail2Ban import qualified Propellor.Property.LetsEncrypt as LetsEncrypt import Utility.FileMode +import Utility.Split import Data.List import System.Posix.Files -import Data.String.Utils scrollBox :: Property (HasInfo + DebianLike) scrollBox = propertyList "scroll server" $ props @@ -573,8 +573,8 @@ kiteMailServer = propertyList "kitenet.net mail server" $ props , "# Enable postgrey." , "smtpd_recipient_restrictions = permit_tls_clientcerts,permit_sasl_authenticated,,permit_mynetworks,reject_unauth_destination,check_policy_service inet:127.0.0.1:10023" - , "# Enable spamass-milter, amavis-milter, opendkim" - , "smtpd_milters = unix:/spamass/spamass.sock unix:amavis/amavis.sock inet:localhost:8891" + , "# Enable spamass-milter, amavis-milter (opendkim is not enabled because it causes mails forwarded from eg gmail to be rejected)" + , "smtpd_milters = unix:/spamass/spamass.sock unix:amavis/amavis.sock" , "# opendkim is used for outgoing mail" , "non_smtpd_milters = inet:localhost:8891" , "milter_connect_macros = j {daemon_name} v {if_name} _" diff --git a/src/Propellor/Property/Systemd.hs b/src/Propellor/Property/Systemd.hs index 7c40bd16..d1a94aa8 100644 --- a/src/Propellor/Property/Systemd.hs +++ b/src/Propellor/Property/Systemd.hs @@ -55,9 +55,9 @@ import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.File as File import Propellor.Property.Systemd.Core import Utility.FileMode +import Utility.Split import Data.List -import Data.List.Utils import qualified Data.Map as M type ServiceName = String diff --git a/src/Propellor/Property/ZFS/Process.hs b/src/Propellor/Property/ZFS/Process.hs index 372bac6d..42b23df2 100644 --- a/src/Propellor/Property/ZFS/Process.hs +++ b/src/Propellor/Property/ZFS/Process.hs @@ -5,7 +5,8 @@ module Propellor.Property.ZFS.Process where import Propellor.Base -import Data.String.Utils (split) +import Utility.Split + import Data.List -- | Gets the properties of a ZFS volume. diff --git a/src/Propellor/Spin.hs b/src/Propellor/Spin.hs index 447f8e9f..3b3729f9 100644 --- a/src/Propellor/Spin.hs +++ b/src/Propellor/Spin.hs @@ -87,7 +87,7 @@ spin' mprivdata relay target hst = do -- And now we can run it. unlessM (boolSystemNonConcurrent "ssh" (map Param $ cacheparams ++ ["-t", sshtarget, shellWrap runcmd])) $ - error "remote propellor failed" + giveup "remote propellor failed" where hn = fromMaybe target relay sys = case fromInfo (hostInfo hst) of diff --git a/src/Propellor/Ssh.hs b/src/Propellor/Ssh.hs index a7a9452e..a8f50ed0 100644 --- a/src/Propellor/Ssh.hs +++ b/src/Propellor/Ssh.hs @@ -6,7 +6,7 @@ import Utility.FileSystemEncoding import System.PosixCompat import Data.Time.Clock.POSIX -import qualified Data.Hash.MD5 as MD5 +import Data.Hashable -- Parameters can be passed to both ssh and scp, to enable a ssh connection -- caching socket. @@ -50,24 +50,22 @@ sshCachingParams hn = do -- 100 bytes. Try to never construct a filename longer than that. -- -- When space allows, include the full hostname in the socket filename. --- Otherwise, include at least a partial md5sum of it, --- to avoid using the same socket file for multiple hosts. +-- Otherwise, a checksum of the hostname is included in the name, to +-- avoid using the same socket file for multiple hosts. socketFile :: FilePath -> HostName -> FilePath socketFile home hn = selectSocketFile - [ sshdir </> hn ++ ".sock" + [ sshdir </> hn ++ ".sock" , sshdir </> hn - , sshdir </> take 10 hn ++ "-" ++ md5 - , sshdir </> md5 - , home </> ".propellor-" ++ md5 + , sshdir </> take 10 hn ++ "-" ++ checksum + , sshdir </> checksum ] - (".propellor-" ++ md5) + (home </> ".propellor-" ++ checksum) where sshdir = home </> ".ssh" </> "propellor" - md5 = take 9 $ MD5.md5s $ MD5.Str hn + checksum = take 9 $ show $ abs $ hash hn selectSocketFile :: [FilePath] -> FilePath -> FilePath selectSocketFile [] d = d -selectSocketFile [f] _ = f selectSocketFile (f:fs) d | valid_unix_socket_path f = f | otherwise = selectSocketFile fs d diff --git a/src/Propellor/Types/Dns.hs b/src/Propellor/Types/Dns.hs index 8d62e63b..87756d81 100644 --- a/src/Propellor/Types/Dns.hs +++ b/src/Propellor/Types/Dns.hs @@ -6,12 +6,12 @@ import Propellor.Types.OS (HostName) import Propellor.Types.Empty import Propellor.Types.Info import Propellor.Types.ConfigurableValue +import Utility.Split import Data.Word import qualified Data.Map as M import qualified Data.Set as S import Data.List -import Data.String.Utils (split, replace) import Data.Monoid import Prelude @@ -102,14 +102,14 @@ data Record type ReverseIP = String reverseIP :: IPAddr -> ReverseIP -reverseIP (IPv4 addr) = intercalate "." (reverse $ split "." addr) ++ ".in-addr.arpa" +reverseIP (IPv4 addr) = intercalate "." (reverse $ splitc '.' addr) ++ ".in-addr.arpa" reverseIP addr@(IPv6 _) = reverse (intersperse '.' $ replace ":" "" $ val $ canonicalIP addr) ++ ".ip6.arpa" -- | Converts an IP address (particularly IPv6) to canonical, fully -- expanded form. canonicalIP :: IPAddr -> IPAddr canonicalIP (IPv4 addr) = IPv4 addr -canonicalIP (IPv6 addr) = IPv6 $ intercalate ":" $ map canonicalGroup $ split ":" $ replaceImplicitGroups addr +canonicalIP (IPv6 addr) = IPv6 $ intercalate ":" $ map canonicalGroup $ splitc ':' $ replaceImplicitGroups addr where canonicalGroup g | l <= 4 = replicate (4 - l) '0' ++ g @@ -117,7 +117,7 @@ canonicalIP (IPv6 addr) = IPv6 $ intercalate ":" $ map canonicalGroup $ split ": where l = length g emptyGroups n = iterate (++ ":") "" !! n - numberOfImplicitGroups a = 8 - length (split ":" $ replace "::" "" a) + numberOfImplicitGroups a = 8 - length (splitc ':' $ replace "::" "" a) replaceImplicitGroups a = concat $ aux $ split "::" a where aux [] = [] diff --git a/src/Propellor/Types/ZFS.hs b/src/Propellor/Types/ZFS.hs index 22b848fa..c68f6ba5 100644 --- a/src/Propellor/Types/ZFS.hs +++ b/src/Propellor/Types/ZFS.hs @@ -7,10 +7,10 @@ module Propellor.Types.ZFS where import Propellor.Types.ConfigurableValue +import Utility.Split import Data.String import qualified Data.Set as Set -import qualified Data.String.Utils as SU import Data.List -- | A single ZFS filesystem. @@ -46,7 +46,7 @@ instance Show ZDataset where show = val instance IsString ZDataset where - fromString s = ZDataset $ SU.split "/" s + fromString s = ZDataset $ splitc '/' s instance IsString ZPool where fromString p = ZPool p diff --git a/src/Utility/DataUnits.hs b/src/Utility/DataUnits.hs index 6e40932e..a6c9ffcf 100644 --- a/src/Utility/DataUnits.hs +++ b/src/Utility/DataUnits.hs @@ -45,6 +45,7 @@ module Utility.DataUnits ( ByteSize, roughSize, + roughSize', compareSizes, readSize ) where @@ -109,7 +110,10 @@ oldSchoolUnits = zipWith (curry mingle) storageUnits memoryUnits {- approximate display of a particular number of bytes -} roughSize :: [Unit] -> Bool -> ByteSize -> String -roughSize units short i +roughSize units short i = roughSize' units short 2 i + +roughSize' :: [Unit] -> Bool -> Int -> ByteSize -> String +roughSize' units short precision i | i < 0 = '-' : findUnit units' (negate i) | otherwise = findUnit units' i where @@ -123,7 +127,7 @@ roughSize units short i showUnit x (Unit size abbrev name) = s ++ " " ++ unit where v = (fromInteger x :: Double) / fromInteger size - s = showImprecise 2 v + s = showImprecise precision v unit | short = abbrev | s == "1" = name diff --git a/src/Utility/FileMode.hs b/src/Utility/FileMode.hs index bb3780c6..d9a26944 100644 --- a/src/Utility/FileMode.hs +++ b/src/Utility/FileMode.hs @@ -1,6 +1,6 @@ {- File mode utilities. - - - Copyright 2010-2012 Joey Hess <id@joeyh.name> + - Copyright 2010-2017 Joey Hess <id@joeyh.name> - - License: BSD-2-clause -} @@ -130,6 +130,21 @@ withUmask umask a = bracket setup cleanup go withUmask _ a = a #endif +getUmask :: IO FileMode +#ifndef mingw32_HOST_OS +getUmask = bracket setup cleanup return + where + setup = setFileCreationMask nullFileMode + cleanup = setFileCreationMask +#else +getUmask = return nullFileMode +#endif + +defaultFileMode :: IO FileMode +defaultFileMode = do + umask <- getUmask + return $ intersectFileModes (complement umask) stdFileMode + combineModes :: [FileMode] -> FileMode combineModes [] = 0 combineModes [m] = m @@ -162,7 +177,10 @@ writeFileProtected file content = writeFileProtected' file (\h -> hPutStr h content) writeFileProtected' :: FilePath -> (Handle -> IO ()) -> IO () -writeFileProtected' file writer = withUmask 0o0077 $ +writeFileProtected' file writer = protectedOutput $ withFile file WriteMode $ \h -> do void $ tryIO $ modifyFileMode file $ removeModes otherGroupModes writer h + +protectedOutput :: IO a -> IO a +protectedOutput = withUmask 0o0077 diff --git a/src/Utility/FileSystemEncoding.hs b/src/Utility/FileSystemEncoding.hs index be43ace9..444dc4a9 100644 --- a/src/Utility/FileSystemEncoding.hs +++ b/src/Utility/FileSystemEncoding.hs @@ -10,8 +10,8 @@ module Utility.FileSystemEncoding ( useFileSystemEncoding, + fileEncoding, withFilePath, - md5FilePath, decodeBS, encodeBS, decodeW8, @@ -19,6 +19,10 @@ module Utility.FileSystemEncoding ( encodeW8NUL, decodeW8NUL, truncateFilePath, + s2w8, + w82s, + c2w8, + w82c, ) where import qualified GHC.Foreign as GHC @@ -26,17 +30,15 @@ import qualified GHC.IO.Encoding as Encoding import Foreign.C import System.IO import System.IO.Unsafe -import qualified Data.Hash.MD5 as MD5 import Data.Word -import Data.Bits.Utils import Data.List -import Data.List.Utils import qualified Data.ByteString.Lazy as L #ifdef mingw32_HOST_OS import qualified Data.ByteString.Lazy.UTF8 as L8 #endif import Utility.Exception +import Utility.Split {- Makes all subsequent Handles that are opened, as well as stdio Handles, - use the filesystem encoding, instead of the encoding of the current @@ -63,6 +65,13 @@ useFileSystemEncoding = do hSetEncoding stderr e Encoding.setLocaleEncoding e +fileEncoding :: Handle -> IO () +#ifndef mingw32_HOST_OS +fileEncoding h = hSetEncoding h =<< Encoding.getFileSystemEncoding +#else +fileEncoding h = hSetEncoding h Encoding.utf8 +#endif + {- Marshal a Haskell FilePath into a NUL terminated C string using temporary - storage. The FilePath is encoded using the filesystem encoding, - reversing the decoding that should have been done when the FilePath @@ -93,10 +102,6 @@ _encodeFilePath fp = unsafePerformIO $ do GHC.withCString enc fp (GHC.peekCString Encoding.char8) `catchNonAsync` (\_ -> return fp) -{- Encodes a FilePath into a Md5.Str, applying the filesystem encoding. -} -md5FilePath :: FilePath -> MD5.Str -md5FilePath = MD5.Str . _encodeFilePath - {- Decodes a ByteString into a FilePath, applying the filesystem encoding. -} decodeBS :: L.ByteString -> FilePath #ifndef mingw32_HOST_OS @@ -137,14 +142,26 @@ decodeW8 = s2w8 . _encodeFilePath {- Like encodeW8 and decodeW8, but NULs are passed through unchanged. -} encodeW8NUL :: [Word8] -> FilePath -encodeW8NUL = intercalate nul . map encodeW8 . split (s2w8 nul) +encodeW8NUL = intercalate [nul] . map encodeW8 . splitc (c2w8 nul) where - nul = ['\NUL'] + nul = '\NUL' decodeW8NUL :: FilePath -> [Word8] -decodeW8NUL = intercalate (s2w8 nul) . map decodeW8 . split nul +decodeW8NUL = intercalate [c2w8 nul] . map decodeW8 . splitc nul where - nul = ['\NUL'] + nul = '\NUL' + +c2w8 :: Char -> Word8 +c2w8 = fromIntegral . fromEnum + +w82c :: Word8 -> Char +w82c = toEnum . fromIntegral + +s2w8 :: String -> [Word8] +s2w8 = map c2w8 + +w82s :: [Word8] -> String +w82s = map w82c {- Truncates a FilePath to the given number of bytes (or less), - as represented on disk. diff --git a/src/Utility/LinuxMkLibs.hs b/src/Utility/LinuxMkLibs.hs index 122f3964..15f82fd1 100644 --- a/src/Utility/LinuxMkLibs.hs +++ b/src/Utility/LinuxMkLibs.hs @@ -12,10 +12,10 @@ import Utility.Directory import Utility.Process import Utility.Monad import Utility.Path +import Utility.Split import Data.Maybe import System.FilePath -import Data.List.Utils import System.Posix.Files import Data.Char import Control.Monad.IfElse diff --git a/src/Utility/PartialPrelude.hs b/src/Utility/PartialPrelude.hs index 55795563..47e98318 100644 --- a/src/Utility/PartialPrelude.hs +++ b/src/Utility/PartialPrelude.hs @@ -2,7 +2,7 @@ - bugs. - - This exports functions that conflict with the prelude, which avoids - - them being accidentially used. + - them being accidentally used. -} {-# OPTIONS_GHC -fno-warn-tabs #-} diff --git a/src/Utility/Path.hs b/src/Utility/Path.hs index 3ee5ff39..0779d167 100644 --- a/src/Utility/Path.hs +++ b/src/Utility/Path.hs @@ -10,7 +10,6 @@ module Utility.Path where -import Data.String.Utils import System.FilePath import Data.List import Data.Maybe @@ -25,10 +24,10 @@ import System.Posix.Files import Utility.Exception #endif -import qualified "MissingH" System.Path as MissingH import Utility.Monad import Utility.UserInfo import Utility.Directory +import Utility.Split {- Simplifies a path, removing any "." component, collapsing "dir/..", - and removing the trailing path separator. @@ -68,18 +67,6 @@ simplifyPath path = dropTrailingPathSeparator $ absPathFrom :: FilePath -> FilePath -> FilePath absPathFrom dir path = simplifyPath (combine dir path) -{- On Windows, this converts the paths to unix-style, in order to run - - MissingH's absNormPath on them. -} -absNormPathUnix :: FilePath -> FilePath -> Maybe FilePath -#ifndef mingw32_HOST_OS -absNormPathUnix dir path = MissingH.absNormPath dir path -#else -absNormPathUnix dir path = todos <$> MissingH.absNormPath (fromdos dir) (fromdos path) - where - fromdos = replace "\\" "/" - todos = replace "/" "\\" -#endif - {- takeDirectory "foo/bar/" is "foo/bar". This instead yields "foo" -} parentDir :: FilePath -> FilePath parentDir = takeDirectory . dropTrailingPathSeparator @@ -89,12 +76,13 @@ parentDir = takeDirectory . dropTrailingPathSeparator upFrom :: FilePath -> Maybe FilePath upFrom dir | length dirs < 2 = Nothing - | otherwise = Just $ joinDrive drive (intercalate s $ init dirs) + | otherwise = Just $ joinDrive drive $ intercalate s $ init dirs where - -- on Unix, the drive will be "/" when the dir is absolute, otherwise "" + -- on Unix, the drive will be "/" when the dir is absolute, + -- otherwise "" (drive, path) = splitDrive dir - dirs = filter (not . null) $ split s path s = [pathSeparator] + dirs = filter (not . null) $ split s path prop_upFrom_basics :: FilePath -> Bool prop_upFrom_basics dir @@ -149,11 +137,11 @@ relPathDirToFile from to = relPathDirToFileAbs <$> absPath from <*> absPath to relPathDirToFileAbs :: FilePath -> FilePath -> FilePath relPathDirToFileAbs from to | takeDrive from /= takeDrive to = to - | otherwise = intercalate s $ dotdots ++ uncommon + | otherwise = joinPath $ dotdots ++ uncommon where - s = [pathSeparator] - pfrom = split s from - pto = split s to + pfrom = sp from + pto = sp to + sp = map dropTrailingPathSeparator . splitPath common = map fst $ takeWhile same $ zip pfrom pto same (c,d) = c == d uncommon = drop numcommon pto @@ -227,6 +215,8 @@ inPath command = isJust <$> searchPath command - - The command may be fully qualified already, in which case it will - be returned if it exists. + - + - Note that this will find commands in PATH that are not executable. -} searchPath :: String -> IO (Maybe FilePath) searchPath command diff --git a/src/Utility/Process.hs b/src/Utility/Process.hs index ed02f49e..6d981cb5 100644 --- a/src/Utility/Process.hs +++ b/src/Utility/Process.hs @@ -174,22 +174,21 @@ createBackgroundProcess p a = a =<< createProcess p -- returns a transcript combining its stdout and stderr, and -- whether it succeeded or failed. processTranscript :: String -> [String] -> (Maybe String) -> IO (String, Bool) -processTranscript = processTranscript' id +processTranscript cmd opts = processTranscript' (proc cmd opts) -processTranscript' :: (CreateProcess -> CreateProcess) -> String -> [String] -> Maybe String -> IO (String, Bool) -processTranscript' modproc cmd opts input = do +processTranscript' :: CreateProcess -> Maybe String -> IO (String, Bool) +processTranscript' cp input = do #ifndef mingw32_HOST_OS {- This implementation interleves stdout and stderr in exactly the order - the process writes them. -} (readf, writef) <- System.Posix.IO.createPipe readh <- System.Posix.IO.fdToHandle readf writeh <- System.Posix.IO.fdToHandle writef - p@(_, _, _, pid) <- createProcess $ modproc $ - (proc cmd opts) - { std_in = if isJust input then CreatePipe else Inherit - , std_out = UseHandle writeh - , std_err = UseHandle writeh - } + p@(_, _, _, pid) <- createProcess $ cp + { std_in = if isJust input then CreatePipe else Inherit + , std_out = UseHandle writeh + , std_err = UseHandle writeh + } hClose writeh get <- mkreader readh @@ -200,12 +199,11 @@ processTranscript' modproc cmd opts input = do return (transcript, ok) #else {- This implementation for Windows puts stderr after stdout. -} - p@(_, _, _, pid) <- createProcess $ modproc $ - (proc cmd opts) - { std_in = if isJust input then CreatePipe else Inherit - , std_out = CreatePipe - , std_err = CreatePipe - } + p@(_, _, _, pid) <- createProcess $ cp + { std_in = if isJust input then CreatePipe else Inherit + , std_out = CreatePipe + , std_err = CreatePipe + } getout <- mkreader (stdoutHandle p) geterr <- mkreader (stderrHandle p) diff --git a/src/Utility/SafeCommand.hs b/src/Utility/SafeCommand.hs index 5ce17a84..eb34d3de 100644 --- a/src/Utility/SafeCommand.hs +++ b/src/Utility/SafeCommand.hs @@ -11,7 +11,7 @@ module Utility.SafeCommand where import System.Exit import Utility.Process -import Data.String.Utils +import Utility.Split import System.FilePath import Data.Char import Data.List @@ -86,7 +86,7 @@ shellEscape :: String -> String shellEscape f = "'" ++ escaped ++ "'" where -- replace ' with '"'"' - escaped = intercalate "'\"'\"'" $ split "'" f + escaped = intercalate "'\"'\"'" $ splitc '\'' f -- | Unescapes a set of shellEscaped words or filenames. shellUnEscape :: String -> [String] diff --git a/src/Utility/Scheduled.hs b/src/Utility/Scheduled.hs index d23aaf03..b68ff901 100644 --- a/src/Utility/Scheduled.hs +++ b/src/Utility/Scheduled.hs @@ -29,6 +29,7 @@ module Utility.Scheduled ( import Utility.Data import Utility.PartialPrelude import Utility.Misc +import Utility.Tuple import Data.List import Data.Time.Clock @@ -37,7 +38,6 @@ import Data.Time.Calendar import Data.Time.Calendar.WeekDate import Data.Time.Calendar.OrdinalDate import Data.Time.Format () -import Data.Tuple.Utils import Data.Char import Control.Applicative import Prelude diff --git a/src/Utility/Split.hs b/src/Utility/Split.hs new file mode 100644 index 00000000..decfe7d3 --- /dev/null +++ b/src/Utility/Split.hs @@ -0,0 +1,30 @@ +{- split utility functions + - + - Copyright 2017 Joey Hess <id@joeyh.name> + - + - License: BSD-2-clause + -} + +{-# OPTIONS_GHC -fno-warn-tabs #-} + +module Utility.Split where + +import Data.List (intercalate) +import Data.List.Split (splitOn) + +-- | same as Data.List.Utils.split +-- +-- intercalate x . splitOn x === id +split :: Eq a => [a] -> [a] -> [[a]] +split = splitOn + +-- | Split on a single character. This is over twice as fast as using +-- split on a list of length 1, while producing identical results. -} +splitc :: Eq c => c -> [c] -> [[c]] +splitc c s = case break (== c) s of + (i, _c:rest) -> i : splitc c rest + (i, []) -> i : [] + +-- | same as Data.List.Utils.replace +replace :: Eq a => [a] -> [a] -> [a] -> [a] +replace old new = intercalate new . split old diff --git a/src/Utility/Tuple.hs b/src/Utility/Tuple.hs new file mode 100644 index 00000000..25c6e8f3 --- /dev/null +++ b/src/Utility/Tuple.hs @@ -0,0 +1,17 @@ +{- tuple utility functions + - + - Copyright 2017 Joey Hess <id@joeyh.name> + - + - License: BSD-2-clause + -} + +module Utility.Tuple where + +fst3 :: (a,b,c) -> a +fst3 (a,_,_) = a + +snd3 :: (a,b,c) -> b +snd3 (_,b,_) = b + +thd3 :: (a,b,c) -> c +thd3 (_,_,c) = c |
