propellor spin
This commit is contained in:
parent
4f239d1360
commit
0ec565a590
|
@ -21,6 +21,8 @@ import qualified Propellor.Property.Git as Git
|
||||||
import qualified Propellor.Property.Apache as Apache
|
import qualified Propellor.Property.Apache as Apache
|
||||||
import qualified Propellor.Property.Postfix as Postfix
|
import qualified Propellor.Property.Postfix as Postfix
|
||||||
import qualified Propellor.Property.Service as Service
|
import qualified Propellor.Property.Service as Service
|
||||||
|
import qualified Propellor.Property.HostingProvider.DigitalOcean as DigitalOcean
|
||||||
|
import qualified Propellor.Property.HostingProvider.CloudAtCost as CloudAtCost
|
||||||
import qualified Propellor.Property.SiteSpecific.GitHome as GitHome
|
import qualified Propellor.Property.SiteSpecific.GitHome as GitHome
|
||||||
import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuilder
|
import qualified Propellor.Property.SiteSpecific.GitAnnexBuilder as GitAnnexBuilder
|
||||||
import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites
|
import qualified Propellor.Property.SiteSpecific.JoeySites as JoeySites
|
||||||
|
@ -46,7 +48,7 @@ hosts = -- (o) `
|
||||||
& ipv4 "162.248.143.249"
|
& ipv4 "162.248.143.249"
|
||||||
& ipv6 "2002:5044:5531::1"
|
& ipv6 "2002:5044:5531::1"
|
||||||
|
|
||||||
& cleanCloudAtCost
|
& CloudAtCost.decruft
|
||||||
& Apt.unattendedUpgrades
|
& Apt.unattendedUpgrades
|
||||||
& Network.ipv6to4
|
& Network.ipv6to4
|
||||||
& Tor.isBridge
|
& Tor.isBridge
|
||||||
|
@ -103,6 +105,7 @@ hosts = -- (o) `
|
||||||
, standardSystem "diatom.kitenet.net" Stable "amd64"
|
, standardSystem "diatom.kitenet.net" Stable "amd64"
|
||||||
& ipv4 "107.170.31.195"
|
& ipv4 "107.170.31.195"
|
||||||
|
|
||||||
|
& DigitalOcean.distroKernel
|
||||||
& Hostname.sane
|
& Hostname.sane
|
||||||
& Ssh.hostKey SshDsa
|
& Ssh.hostKey SshDsa
|
||||||
& Ssh.hostKey SshRsa
|
& Ssh.hostKey SshRsa
|
||||||
|
@ -234,38 +237,6 @@ dockerImage (System (Debian Unstable) arch) = "joeyh/debian-unstable-" ++ arch
|
||||||
dockerImage (System (Debian Stable) arch) = "joeyh/debian-stable-" ++ arch
|
dockerImage (System (Debian Stable) arch) = "joeyh/debian-stable-" ++ arch
|
||||||
dockerImage _ = "debian-stable-official" -- does not currently exist!
|
dockerImage _ = "debian-stable-official" -- does not currently exist!
|
||||||
|
|
||||||
-- Digital Ocean does not provide any way to boot
|
|
||||||
-- the kernel provided by the distribution, except using kexec.
|
|
||||||
-- Without this, some old, and perhaps insecure kernel will be used.
|
|
||||||
--
|
|
||||||
-- Note that this only causes the new kernel to be loaded on reboot.
|
|
||||||
-- If the power is cycled, the old kernel still boots up.
|
|
||||||
-- TODO: detect this and reboot immediately?
|
|
||||||
digitalOceanDistroKernel :: Property
|
|
||||||
digitalOceanDistroKernel = propertyList "digital ocean distro kernel hack"
|
|
||||||
[ Apt.installed ["grub-pc", "kexec-tools"]
|
|
||||||
, "/etc/default/kexec" `File.containsLines`
|
|
||||||
[ "LOAD_KEXEC=true"
|
|
||||||
, "USE_GRUB_CONFIG=true"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
-- Clean up a system as installed by cloudatcost.com
|
|
||||||
cleanCloudAtCost :: Property
|
|
||||||
cleanCloudAtCost = propertyList "cloudatcost cleanup"
|
|
||||||
[ Hostname.sane
|
|
||||||
, Ssh.randomHostKeys
|
|
||||||
, "worked around grub/lvm boot bug #743126" ==>
|
|
||||||
"/etc/default/grub" `File.containsLine` "GRUB_DISABLE_LINUX_UUID=true"
|
|
||||||
`onChange` cmdProperty "update-grub" []
|
|
||||||
`onChange` cmdProperty "update-initramfs" ["-u"]
|
|
||||||
, combineProperties "nuked cloudatcost cruft"
|
|
||||||
[ File.notPresent "/etc/rc.local"
|
|
||||||
, File.notPresent "/etc/init.d/S97-setup.sh"
|
|
||||||
, User.nuked "user" User.YesReallyDeleteHome
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
myDnsSecondary :: Property
|
myDnsSecondary :: Property
|
||||||
myDnsSecondary = propertyList "dns secondary for all my domains" $ map toProp
|
myDnsSecondary = propertyList "dns secondary for all my domains" $ map toProp
|
||||||
[ Dns.secondary hosts "kitenet.net"
|
[ Dns.secondary hosts "kitenet.net"
|
||||||
|
|
|
@ -3,6 +3,7 @@ propellor (0.5.3) UNRELEASED; urgency=medium
|
||||||
* Fix unattended-upgrades config for !stable.
|
* Fix unattended-upgrades config for !stable.
|
||||||
* Ensure that kernel hostname is same as /etc/hostname when configuring
|
* Ensure that kernel hostname is same as /etc/hostname when configuring
|
||||||
hostname.
|
hostname.
|
||||||
|
* Added modules for some hosting providers (DigitalOcean, CloudAtCost).
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Sun, 18 May 2014 13:44:00 -0400
|
-- Joey Hess <joeyh@debian.org> Sun, 18 May 2014 13:44:00 -0400
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,8 @@ Library
|
||||||
Propellor.Property.Sudo
|
Propellor.Property.Sudo
|
||||||
Propellor.Property.Tor
|
Propellor.Property.Tor
|
||||||
Propellor.Property.User
|
Propellor.Property.User
|
||||||
|
Propellor.Property.HostingProvider.DigitalOcean
|
||||||
|
Propellor.Property.HostingProvider.CloudAtCost
|
||||||
Propellor.Property.SiteSpecific.GitHome
|
Propellor.Property.SiteSpecific.GitHome
|
||||||
Propellor.Property.SiteSpecific.JoeySites
|
Propellor.Property.SiteSpecific.JoeySites
|
||||||
Propellor.Property.SiteSpecific.GitAnnexBuilder
|
Propellor.Property.SiteSpecific.GitAnnexBuilder
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
module Propellor.Property.HostingProvider.CloudAtCost where
|
||||||
|
|
||||||
|
import Propellor
|
||||||
|
import qualified Propellor.Property.Hostname as Hostname
|
||||||
|
import qualified Propellor.Property.File as File
|
||||||
|
import qualified Propellor.Property.Ssh as Ssh
|
||||||
|
import qualified Propellor.Property.User as User
|
||||||
|
|
||||||
|
-- Clean up a system as installed by cloudatcost.com
|
||||||
|
decruft :: Property
|
||||||
|
decruft = propertyList "cloudatcost cleanup"
|
||||||
|
[ Hostname.sane
|
||||||
|
, Ssh.randomHostKeys
|
||||||
|
, "worked around grub/lvm boot bug #743126" ==>
|
||||||
|
"/etc/default/grub" `File.containsLine` "GRUB_DISABLE_LINUX_UUID=true"
|
||||||
|
`onChange` cmdProperty "update-grub" []
|
||||||
|
`onChange` cmdProperty "update-initramfs" ["-u"]
|
||||||
|
, combineProperties "nuked cloudatcost cruft"
|
||||||
|
[ File.notPresent "/etc/rc.local"
|
||||||
|
, File.notPresent "/etc/init.d/S97-setup.sh"
|
||||||
|
, User.nuked "user" User.YesReallyDeleteHome
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
module Propellor.Property.HostingProvider.DigitalOcean where
|
||||||
|
|
||||||
|
import Propellor
|
||||||
|
import qualified Propellor.Property.Apt as Apt
|
||||||
|
import qualified Propellor.Property.File as File
|
||||||
|
|
||||||
|
-- Digital Ocean does not provide any way to boot
|
||||||
|
-- the kernel provided by the distribution, except using kexec.
|
||||||
|
-- Without this, some old, and perhaps insecure kernel will be used.
|
||||||
|
--
|
||||||
|
-- Note that this only causes the new kernel to be loaded on reboot.
|
||||||
|
-- If the power is cycled, the old kernel still boots up.
|
||||||
|
-- TODO: detect this and reboot immediately?
|
||||||
|
distroKernel :: Property
|
||||||
|
distroKernel = propertyList "digital ocean distro kernel hack"
|
||||||
|
[ Apt.installed ["grub-pc", "kexec-tools"]
|
||||||
|
, "/etc/default/kexec" `File.containsLines`
|
||||||
|
[ "LOAD_KEXEC=true"
|
||||||
|
, "USE_GRUB_CONFIG=true"
|
||||||
|
]
|
||||||
|
]
|
|
@ -140,4 +140,4 @@ armelContainer dockerImage crontimes timeout = Docker.container "armel-git-annex
|
||||||
where
|
where
|
||||||
writecompanionaddress = scriptProperty
|
writecompanionaddress = scriptProperty
|
||||||
[ "echo \"$COMPANION_PORT_22_TCP_ADDR\" > " ++ homedir </> "companion_address"
|
[ "echo \"$COMPANION_PORT_22_TCP_ADDR\" > " ++ homedir </> "companion_address"
|
||||||
]
|
] `describe` "companion_address file"
|
||||||
|
|
Loading…
Reference in New Issue