configure hostname etc

This commit is contained in:
Joey Hess 2014-03-29 23:45:48 -04:00
parent 0e1b587442
commit 0ab0216d0b
5 changed files with 36 additions and 2 deletions

View File

@ -2,13 +2,16 @@ import Property
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.GitHome as GitHome
import qualified Property.Reboot as Reboot
main = defaultMain
[ Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade
, Apt.installed ["etckeeper"]
, Hostname.set "clam.kitenet.net"
, Apt.installed ["ssh"]
, Ssh.uniqueHostKeys
, Apt.installed ["git", "myrepos"]
, GitHome.installedFor "root"
, check (Ssh.hasAuthorizedKeys "root") $

View File

@ -1,5 +1,6 @@
build:
# ghc --make
$(MAKE) tags
clean:
rm -rf dist Setup tags

View File

@ -60,7 +60,7 @@ ensureProperty' (FileProperty _ f a) = go =<< doesFileExist f
then noChange
else makeChange $ viaTmp writeFile f (unlines ls')
go False = makeChange $ writeFile f (unlines $ a [])
ensureProperty' (CmdProperty _ cmd params) = ifM (boolSystem ("./" ++ cmd) params)
ensureProperty' (CmdProperty _ cmd params) = ifM (boolSystem cmd params)
( return MadeChange
, return FailedChange
)

15
Property/Hostname.hs Normal file
View File

@ -0,0 +1,15 @@
module Property.Hostname where
import Data.List
import System.Posix
import Control.Applicative
import Data.Maybe
import Property
import Utility.SafeCommand
import Utility.Exception
type HostName = String
set :: HostName -> Property
set hostname = fileHasContent "/etc/hostname" [hostname]

View File

@ -38,4 +38,19 @@ hasAuthorizedKeys = go <=< homedir
(readFile $ home </> ".ssh" </> "authorized_keys")
restartSshd :: Property
restartSshd = CmdProperty "ssh restart" "service" [Param "sshd", Param "restart"]
restartSshd = cmdProperty "service" [Param "sshd", Param "restart"]
{- Blow away existing host keys and make new ones. Use a flag
- file to prevent doing this more than once. -}
uniqueHostKeys :: Property
uniqueHostKeys = flagFile prop "/etc/ssh/.unique_host_keys"
`onChange` restartSshd
where
prop = IOProperty "ssh unique host keys" $ do
void $ boolSystem "sh"
[ Param "-c"
, Param "rm -f /etc/ssh/ssh_host_*"
]
ensureProperty $
cmdProperty "/var/lib/dpkg/info/openssh-server.postinst"
[Param "configure"]