summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config-joey.hs3
-rw-r--r--propellor.cabal4
-rw-r--r--src/Propellor/Property/Grub.hs3
-rw-r--r--src/Propellor/Property/HostingProvider/Linode.hs10
4 files changed, 17 insertions, 3 deletions
diff --git a/config-joey.hs b/config-joey.hs
index 6dd56c07..09df857f 100644
--- a/config-joey.hs
+++ b/config-joey.hs
@@ -24,6 +24,7 @@ import qualified Propellor.Property.Service as Service
import qualified Propellor.Property.Grub as Grub
import qualified Propellor.Property.HostingProvider.DigitalOcean as DigitalOcean
import qualified Propellor.Property.HostingProvider.CloudAtCost as CloudAtCost
+import qualified Propellor.Property.HostingProvider.Linode as Linode
import qualified Propellor.Property.SiteSpecific.GitHome as GitHome
import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuilder
import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites
@@ -78,7 +79,7 @@ hosts = -- (o) `
& ipv6 "2600:3c03::f03c:91ff:fe73:b0d2"
& Apt.installed ["linux-image-amd64"]
- & Grub.chainPVGrub "hd0" "xen/xvda"
+ & Linode.chainPVGrub
& Hostname.sane
& Apt.unattendedUpgrades
& Apt.installed ["systemd"]
diff --git a/propellor.cabal b/propellor.cabal
index 1c3c8681..e5c8f48a 100644
--- a/propellor.cabal
+++ b/propellor.cabal
@@ -81,6 +81,7 @@ Library
Propellor.Property.File
Propellor.Property.Git
Propellor.Property.Gpg
+ Propellor.Property.Grub
Propellor.Property.Network
Propellor.Property.Obnam
Propellor.Property.OpenId
@@ -92,8 +93,9 @@ Library
Propellor.Property.Sudo
Propellor.Property.Tor
Propellor.Property.User
- Propellor.Property.HostingProvider.DigitalOcean
Propellor.Property.HostingProvider.CloudAtCost
+ Propellor.Property.HostingProvider.DigitalOcean
+ Propellor.Property.HostingProvider.Linode
Propellor.Property.SiteSpecific.GitHome
Propellor.Property.SiteSpecific.JoeySites
Propellor.Property.SiteSpecific.GitAnnexBuilder
diff --git a/src/Propellor/Property/Grub.hs b/src/Propellor/Property/Grub.hs
index 7ca6275b..b8e1b662 100644
--- a/src/Propellor/Property/Grub.hs
+++ b/src/Propellor/Property/Grub.hs
@@ -17,7 +17,8 @@ type GrubDevice = String
-- "xen/xvda".
chainPVGrub :: GrubDevice -> GrubDevice -> Property
chainPVGrub rootdev bootdev = combineProperties desc
- [ "/boot/grub/menu.lst" `File.hasContent`
+ [ File.dirExists "/boot/grub"
+ , "/boot/grub/menu.lst" `File.hasContent`
[ "default 1"
, "timeout 30"
, ""
diff --git a/src/Propellor/Property/HostingProvider/Linode.hs b/src/Propellor/Property/HostingProvider/Linode.hs
new file mode 100644
index 00000000..cfabe814
--- /dev/null
+++ b/src/Propellor/Property/HostingProvider/Linode.hs
@@ -0,0 +1,10 @@
+module Propellor.Property.HostingProvider.Linode where
+
+import Propellor
+import qualified Propellor.Property.Grub as Grub
+
+-- | Linode's pv-grub-x86_64 does not currently support booting recent
+-- Debian kernels compressed with xz. This sets up pv-grub chaing to enable
+-- it.
+chainPVGrub :: Property
+chainPVGrub = Grub.chainPVGrub "hd0" "xen/xvda"