summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2016-10-21 14:13:51 -0400
committerJoey Hess2016-10-21 14:13:51 -0400
commit2c58f2a7df719b1443467aa4c22d12de564c6920 (patch)
tree22473df2f67bfa95040fea9d615a0639e70d8c22
parent44d851c1cc1f2044d60f2518e3147644f32ff0bd (diff)
propellor spin
-rw-r--r--debian/changelog1
-rw-r--r--joeyconfig.hs2
-rw-r--r--src/Propellor/Property/HostingProvider/Linode.hs19
3 files changed, 19 insertions, 3 deletions
diff --git a/debian/changelog b/debian/changelog
index 7baa9d79..8d9b6d33 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ propellor (3.2.1) unstable; urgency=medium
* Simplify Debootstrap.sourceInstall since #770217 was fixed.
* Debootstap.installed: Fix inverted logic that made this never install
debootstrap. Thanks, mithrandi.
+ * Added Linode.serialGrub property.
-- Joey Hess <id@joeyh.name> Mon, 03 Oct 2016 18:06:31 -0400
diff --git a/joeyconfig.hs b/joeyconfig.hs
index a8996be9..4a353819 100644
--- a/joeyconfig.hs
+++ b/joeyconfig.hs
@@ -260,6 +260,7 @@ kite = host "kite.kitenet.net" $ props
& Network.static "eth0" `requires` Network.cleanInterfacesFile
& Apt.installed ["linux-image-amd64"]
+ & Linode.serialGrub
& Linode.mlocateEnabled
& Apt.unattendedUpgrades
& Systemd.installed
@@ -456,6 +457,7 @@ pell = host "pell.branchable.com" $ props
& Apt.installed ["linux-image-amd64"]
& Apt.unattendedUpgrades
& Branchable.server hosts
+ & Linode.serialGrub
-- See https://joeyh.name/code/keysafe/servers/ for requirements.
keysafe :: Host
diff --git a/src/Propellor/Property/HostingProvider/Linode.hs b/src/Propellor/Property/HostingProvider/Linode.hs
index 71719d87..fca3df63 100644
--- a/src/Propellor/Property/HostingProvider/Linode.hs
+++ b/src/Propellor/Property/HostingProvider/Linode.hs
@@ -5,9 +5,22 @@ import qualified Propellor.Property.Grub as Grub
import qualified Propellor.Property.File as File
import Utility.FileMode
--- | Linode's pv-grub-x86_64 does not currently support booting recent
--- Debian kernels compressed with xz. This sets up pv-grub chaining to enable
--- it.
+-- | Configures grub to use the serial console as set up by Linode.
+-- Useful when running a distribution supplied kernel.
+-- <https://www.linode.com/docs/tools-reference/custom-kernels-distros/run-a-distribution-supplied-kernel-with-kvm>
+serialGrub :: Property DebianLike
+serialGrub = "/etc/default/grub" `File.containsLines`
+ [ "GRUB_CMDLINE_LINUX=\"console=ttyS0,19200n8\""
+ , "GRUB_DISABLE_LINUX_UUID=true"
+ , "GRUB_SERIAL_COMMAND=\"serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1\""
+ , "GRUB_TERMINAL=serial"
+ ]
+ `onChange` Grub.mkConfig
+ `requires` Grub.installed Grub.PC
+
+-- | Linode's pv-grub-x86_64 (only used for its older XEN instances)
+-- does not support booting recent Debian kernels compressed
+-- with xz. This sets up pv-grub chaining to enable it.
chainPVGrub :: Grub.TimeoutSecs -> Property DebianLike
chainPVGrub = Grub.chainPVGrub "hd0" "xen/xvda"