summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Hostname.hs
diff options
context:
space:
mode:
authorJoey Hess2015-10-23 17:29:26 -0400
committerJoey Hess2015-10-23 17:29:26 -0400
commit7f84f196076136252c3d50526ae1805758cf0f2a (patch)
tree794098fb7ee398f68956fde4a798e9df7235cc55 /src/Propellor/Property/Hostname.hs
parent1cd7f557f0c89714c47855f38583073c313674f2 (diff)
Hostname.sane and Hostname.setTo can now safely be used as a property of a chroot, and won't affect the hostname of the host system.
Diffstat (limited to 'src/Propellor/Property/Hostname.hs')
-rw-r--r--src/Propellor/Property/Hostname.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/Propellor/Property/Hostname.hs b/src/Propellor/Property/Hostname.hs
index 78ec872f..8033bef8 100644
--- a/src/Propellor/Property/Hostname.hs
+++ b/src/Propellor/Property/Hostname.hs
@@ -2,13 +2,17 @@ module Propellor.Property.Hostname where
import Propellor.Base
import qualified Propellor.Property.File as File
+import Propellor.Property.Chroot (inChroot)
import Data.List
import Data.List.Utils
--- | Ensures that the hostname is set using best practices.
+-- | Ensures that the hostname is set using best practices, to whatever
+-- name the `Host` has.
--
--- Configures </etc/hostname> and the current hostname.
+-- Configures both </etc/hostname> and the current hostname.
+-- (However, if used inside a chroot, avoids setting the current hostname
+-- as that would impact the system outside the chroot.)
--
-- Configures </etc/mailname> with the domain part of the hostname.
--
@@ -25,6 +29,8 @@ sane' :: ExtractDomain -> Property NoInfo
sane' extractdomain = property ("sane hostname") $
ensureProperty . setTo' extractdomain =<< asks hostName
+-- Like `sane`, but you can specify the hostname to use, instead
+-- of the default hostname of the `Host`.
setTo :: HostName -> Property NoInfo
setTo = setTo' extractDomain
@@ -41,7 +47,8 @@ setTo' extractdomain hn = combineProperties desc go
then Nothing
else Just $ trivial $ hostsline "127.0.1.1" [hn, basehost]
, Just $ trivial $ hostsline "127.0.0.1" ["localhost"]
- , Just $ trivial $ cmdProperty "hostname" [basehost]
+ , Just $ trivial $ check (not <$> inChroot) $
+ cmdProperty "hostname" [basehost]
, Just $ "/etc/mailname" `File.hasContent`
[if null domain then hn else domain]
]