Skip to content
Snippets Groups Projects
config-simple.hs 1.59 KiB
Newer Older
Joey Hess's avatar
Joey Hess committed
-- This is the main configuration file for Propellor, and is used to build
-- the propellor program.

import Propellor
import Propellor.CmdLine
Joey Hess's avatar
Joey Hess committed
import Propellor.Property.Scheduled
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Network as Network
Joey Hess's avatar
Joey Hess committed
--import qualified Propellor.Property.Ssh as Ssh
import qualified Propellor.Property.Cron as Cron
Joey Hess's avatar
Joey Hess committed
--import qualified Propellor.Property.Sudo as Sudo
import qualified Propellor.Property.User as User
Joey Hess's avatar
Joey Hess committed
--import qualified Propellor.Property.Hostname as Hostname
--import qualified Propellor.Property.Tor as Tor
import qualified Propellor.Property.Docker as Docker

Joey Hess's avatar
Joey Hess committed
main :: IO ()
main = defaultMain hosts

Joey Hess's avatar
Joey Hess committed
-- The hosts propellor knows about.
-- Edit this to configure propellor!
Joey Hess's avatar
Joey Hess committed
hosts :: [Host]
hosts =
	[ host "mybox.example.com"
		& os (System (Debian Unstable) "amd64")
		& Apt.stdSourcesList
Joey Hess's avatar
Joey Hess committed
		& Apt.unattendedUpgrades
		& Apt.installed ["etckeeper"]
		& Apt.installed ["ssh"]
Joey Hess's avatar
Joey Hess committed
		& Network.ipv6to4
		& File.dirExists "/var/www"
		& Docker.docked webserverContainer
Joey Hess's avatar
Joey Hess committed
		& Docker.garbageCollected `period` Daily
Joey Hess's avatar
Joey Hess committed
		& Cron.runPropellor (Cron.Times "30 * * * *")
Joey Hess's avatar
Joey Hess committed
	-- add more hosts here...
	--, host "foo.example.com" = ...

-- A generic webserver in a Docker container.
webserverContainer :: Docker.Container
webserverContainer = Docker.container "webserver" (Docker.latestImage "debian")
	& os (System (Debian (Stable "jessie")) "amd64")
	& Apt.stdSourcesList
	& Docker.publish "80:80"
	& Docker.volume "/var/www:/var/www"
	& Apt.serviceInstalledRunning "apache2"