configure hostname etc
This commit is contained in:
parent
0e1b587442
commit
0ab0216d0b
|
@ -2,13 +2,16 @@ import Property
|
||||||
import qualified Property.Apt as Apt
|
import qualified Property.Apt as Apt
|
||||||
import qualified Property.Ssh as Ssh
|
import qualified Property.Ssh as Ssh
|
||||||
import qualified Property.User as User
|
import qualified Property.User as User
|
||||||
|
import qualified Property.Hostname as Hostname
|
||||||
import qualified Property.GitHome as GitHome
|
import qualified Property.GitHome as GitHome
|
||||||
import qualified Property.Reboot as Reboot
|
import qualified Property.Reboot as Reboot
|
||||||
|
|
||||||
main = defaultMain
|
main = defaultMain
|
||||||
[ Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade
|
[ Apt.stdSourcesList Apt.Unstable `onChange` Apt.upgrade
|
||||||
, Apt.installed ["etckeeper"]
|
, Apt.installed ["etckeeper"]
|
||||||
|
, Hostname.set "clam.kitenet.net"
|
||||||
, Apt.installed ["ssh"]
|
, Apt.installed ["ssh"]
|
||||||
|
, Ssh.uniqueHostKeys
|
||||||
, Apt.installed ["git", "myrepos"]
|
, Apt.installed ["git", "myrepos"]
|
||||||
, GitHome.installedFor "root"
|
, GitHome.installedFor "root"
|
||||||
, check (Ssh.hasAuthorizedKeys "root") $
|
, check (Ssh.hasAuthorizedKeys "root") $
|
||||||
|
|
1
Makefile
1
Makefile
|
@ -1,5 +1,6 @@
|
||||||
build:
|
build:
|
||||||
# ghc --make
|
# ghc --make
|
||||||
|
$(MAKE) tags
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf dist Setup tags
|
rm -rf dist Setup tags
|
||||||
|
|
|
@ -60,7 +60,7 @@ ensureProperty' (FileProperty _ f a) = go =<< doesFileExist f
|
||||||
then noChange
|
then noChange
|
||||||
else makeChange $ viaTmp writeFile f (unlines ls')
|
else makeChange $ viaTmp writeFile f (unlines ls')
|
||||||
go False = makeChange $ writeFile f (unlines $ a [])
|
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 MadeChange
|
||||||
, return FailedChange
|
, return FailedChange
|
||||||
)
|
)
|
||||||
|
|
|
@ -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]
|
|
@ -38,4 +38,19 @@ hasAuthorizedKeys = go <=< homedir
|
||||||
(readFile $ home </> ".ssh" </> "authorized_keys")
|
(readFile $ home </> ".ssh" </> "authorized_keys")
|
||||||
|
|
||||||
restartSshd :: Property
|
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"]
|
||||||
|
|
Loading…
Reference in New Issue