From c4afc9c90f9016b3ecfa96193c531c73ccbdeae4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 30 Mar 2014 02:37:45 -0400 Subject: rename --- HostProp.hs | 61 --------------------------------------------------------- Propellor.hs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hostprop.cabal | 28 -------------------------- propellor.cabal | 28 ++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 89 deletions(-) delete mode 100644 HostProp.hs create mode 100644 Propellor.hs delete mode 100644 hostprop.cabal create mode 100644 propellor.cabal diff --git a/HostProp.hs b/HostProp.hs deleted file mode 100644 index 1bc1373a..00000000 --- a/HostProp.hs +++ /dev/null @@ -1,61 +0,0 @@ -import Property -import HostName -import qualified Property.Apt as Apt -import qualified Property.Ssh as Ssh -import qualified Property.User as User -import qualified Property.Hostname as Hostname -import qualified Property.Reboot as Reboot -import qualified Property.Tor as Tor -import qualified Property.GitHome as GitHome - -main :: IO () -main = ensureProperties . getProperties =<< getHostName - -{- This is where the system's HostName, either as returned by uname - - or one specified on the command line, is converted into a list of - - Properties for that system. -} -getProperties :: HostName -> [Property] -getProperties hostname@"clam.kitenet.net" = - [ cleanCloudAtCost hostname - , standardSystem Apt.Unstable - -- This is not an important system so I don't want to need to - -- manually upgrade it. - , Apt.unattendedUpgrades True - -- Clam is a tor bridge. - , Tor.isBridge - -- Should come last as it reboots. - --, Apt.installed ["systemd-sysv"] `onChange` Reboot.now - ] --- add more hosts here... ---getProperties "foo" = -getProperties h = error $ "Unknown host: " ++ h ++ " (perhaps you should specify the real hostname on the command line?)" - --- This is my standard system setup -standardSystem :: Apt.Suite -> Property -standardSystem suite = propertyList "standard system" - [ Apt.stdSourcesList suite `onChange` Apt.upgrade - , Apt.installed ["etckeeper"] - , Apt.installed ["ssh"] - , GitHome.installedFor "root" - -- Harden the system, but only once root's authorized_keys - -- is safely in place. - , check (Ssh.hasAuthorizedKeys "root") $ - Ssh.passwordAuthentication False - , check (Ssh.hasAuthorizedKeys "root") $ - User.lockedPassword "root" - , Apt.installed ["vim"] - , User.nonsystem "joey" - , Apt.installed ["sudo"] - -- nopasswd because no password is set up for joey. - , lineInFile "/etc/sudoers" "joey ALL=(ALL:ALL) NOPASSWD:ALL" - , GitHome.installedFor "joey" - ] - --- Clean up a system as installed by cloudatcost.com -cleanCloudAtCost :: HostName -> Property -cleanCloudAtCost hostname = propertyList "cloudatcost cleanup" - [ User.nuked "user" - , Apt.removed ["exim4"] `onChange` Apt.autoRemove - , Hostname.set hostname - , Ssh.uniqueHostKeys - ] diff --git a/Propellor.hs b/Propellor.hs new file mode 100644 index 00000000..1bc1373a --- /dev/null +++ b/Propellor.hs @@ -0,0 +1,61 @@ +import Property +import HostName +import qualified Property.Apt as Apt +import qualified Property.Ssh as Ssh +import qualified Property.User as User +import qualified Property.Hostname as Hostname +import qualified Property.Reboot as Reboot +import qualified Property.Tor as Tor +import qualified Property.GitHome as GitHome + +main :: IO () +main = ensureProperties . getProperties =<< getHostName + +{- This is where the system's HostName, either as returned by uname + - or one specified on the command line, is converted into a list of + - Properties for that system. -} +getProperties :: HostName -> [Property] +getProperties hostname@"clam.kitenet.net" = + [ cleanCloudAtCost hostname + , standardSystem Apt.Unstable + -- This is not an important system so I don't want to need to + -- manually upgrade it. + , Apt.unattendedUpgrades True + -- Clam is a tor bridge. + , Tor.isBridge + -- Should come last as it reboots. + --, Apt.installed ["systemd-sysv"] `onChange` Reboot.now + ] +-- add more hosts here... +--getProperties "foo" = +getProperties h = error $ "Unknown host: " ++ h ++ " (perhaps you should specify the real hostname on the command line?)" + +-- This is my standard system setup +standardSystem :: Apt.Suite -> Property +standardSystem suite = propertyList "standard system" + [ Apt.stdSourcesList suite `onChange` Apt.upgrade + , Apt.installed ["etckeeper"] + , Apt.installed ["ssh"] + , GitHome.installedFor "root" + -- Harden the system, but only once root's authorized_keys + -- is safely in place. + , check (Ssh.hasAuthorizedKeys "root") $ + Ssh.passwordAuthentication False + , check (Ssh.hasAuthorizedKeys "root") $ + User.lockedPassword "root" + , Apt.installed ["vim"] + , User.nonsystem "joey" + , Apt.installed ["sudo"] + -- nopasswd because no password is set up for joey. + , lineInFile "/etc/sudoers" "joey ALL=(ALL:ALL) NOPASSWD:ALL" + , GitHome.installedFor "joey" + ] + +-- Clean up a system as installed by cloudatcost.com +cleanCloudAtCost :: HostName -> Property +cleanCloudAtCost hostname = propertyList "cloudatcost cleanup" + [ User.nuked "user" + , Apt.removed ["exim4"] `onChange` Apt.autoRemove + , Hostname.set hostname + , Ssh.uniqueHostKeys + ] diff --git a/hostprop.cabal b/hostprop.cabal deleted file mode 100644 index f93e4b25..00000000 --- a/hostprop.cabal +++ /dev/null @@ -1,28 +0,0 @@ -Name: hostprop -Version: 0 -Cabal-Version: >= 1.6 -License: GPL -Maintainer: Joey Hess -Author: Joey Hess -Stability: Stable -Copyright: 2014 Joey Hess -License-File: GPL -Build-Type: Simple -Homepage: -Category: Utility -Synopsis: property-based host configuration management -Description: - TODO - -Executable hostprop - Main-Is: HostProp.hs - GHC-Options: -Wall - Build-Depends: MissingH, directory, filepath, base >= 4.5, base < 5, - IfElse, process, bytestring, hslogger, unix-compat, ansi-terminal - - if (! os(windows)) - Build-Depends: unix - -source-repository head - type: git - location: git://git.kitenet.net/hostprop.git diff --git a/propellor.cabal b/propellor.cabal new file mode 100644 index 00000000..ae08f50d --- /dev/null +++ b/propellor.cabal @@ -0,0 +1,28 @@ +Name: propellor +Version: 0 +Cabal-Version: >= 1.6 +License: GPL +Maintainer: Joey Hess +Author: Joey Hess +Stability: Stable +Copyright: 2014 Joey Hess +License-File: GPL +Build-Type: Simple +Homepage: +Category: Utility +Synopsis: property-based host configuration management +Description: + TODO + +Executable propellor + Main-Is: Propellor.hs + GHC-Options: -Wall + Build-Depends: MissingH, directory, filepath, base >= 4.5, base < 5, + IfElse, process, bytestring, hslogger, unix-compat, ansi-terminal + + if (! os(windows)) + Build-Depends: unix + +source-repository head + type: git + location: git://git.kitenet.net/propellor.git -- cgit v1.3-2-g0d8e