diff options
| author | Joey Hess <joeyh@debian.org> | 2014-04-11 01:19:05 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@debian.org> | 2014-04-11 01:19:05 -0400 |
| commit | be02ef96aa89a6af554a622f266d700ac0c98fdf (patch) | |
| tree | 63c784022afb05b73fedf0df3fd269de0d31baf8 /Propellor/Property/Hostname.hs | |
propellor (0.3.0) unstable; urgency=medium
* ipv6to4: Ensure interface is brought up automatically on boot.
* Enabling unattended upgrades now ensures that cron is installed and
running to perform them.
* Properties can be scheduled to only be checked after a given time period.
* Fix bootstrapping of dependencies.
* Fix compilation on Debian stable.
* Include security updates in sources.list for stable and testing.
* Use ssh connection caching, especially when bootstrapping.
* Properties now run in a Propellor monad, which provides access to
attributes of the host.
# imported from the archive
Diffstat (limited to 'Propellor/Property/Hostname.hs')
| -rw-r--r-- | Propellor/Property/Hostname.hs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Propellor/Property/Hostname.hs b/Propellor/Property/Hostname.hs new file mode 100644 index 00000000..03613ac9 --- /dev/null +++ b/Propellor/Property/Hostname.hs @@ -0,0 +1,34 @@ +module Propellor.Property.Hostname where + +import Propellor +import qualified Propellor.Property.File as File + +-- | Ensures that the hostname is set to the HostAttr value. +-- Configures both /etc/hostname and the current hostname. +-- +-- When the hostname is a FQDN, also configures /etc/hosts, +-- with an entry for 127.0.1.1, which is standard at least on Debian +-- to set the FDQN (127.0.0.1 is localhost). +sane :: Property +sane = Property ("sane hostname") (ensureProperty . setTo =<< getHostName) + +setTo :: HostName -> Property +setTo hn = combineProperties desc go + `onChange` cmdProperty "hostname" [basehost] + where + desc = "hostname " ++ hn + (basehost, domain) = separate (== '.') hn + + go = catMaybes + [ Just $ "/etc/hostname" `File.hasContent` [basehost] + , if null domain + then Nothing + else Just $ File.fileProperty desc + addhostline "/etc/hosts" + ] + + hostip = "127.0.1.1" + hostline = hostip ++ "\t" ++ hn ++ " " ++ basehost + + addhostline ls = hostline : filter (not . hashostip) ls + hashostip l = headMaybe (words l) == Just hostip |
