propellor/config-simple.hs

50 lines
1.6 KiB
Haskell
Raw Normal View History

2014-04-19 21:16:13 +00:00
-- This is the main configuration file for Propellor, and is used to build
2014-04-01 22:56:56 +00:00
-- the propellor program.
import Propellor
import Propellor.CmdLine
2014-04-09 04:54:27 +00:00
import Propellor.Property.Scheduled
2014-04-01 22:56:56 +00:00
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.Network as Network
2014-04-04 05:16:16 +00:00
--import qualified Propellor.Property.Ssh as Ssh
2014-04-01 22:56:56 +00:00
import qualified Propellor.Property.Cron as Cron
2014-04-04 05:16:16 +00:00
--import qualified Propellor.Property.Sudo as Sudo
2014-04-01 22:56:56 +00:00
import qualified Propellor.Property.User as User
2014-04-04 05:16:16 +00:00
--import qualified Propellor.Property.Hostname as Hostname
--import qualified Propellor.Property.Tor as Tor
2014-04-01 22:56:56 +00:00
import qualified Propellor.Property.Docker as Docker
2014-04-19 21:08:20 +00:00
main :: IO ()
main = defaultMain hosts
2014-04-11 03:20:12 +00:00
-- The hosts propellor knows about.
2014-04-01 22:56:56 +00:00
-- Edit this to configure propellor!
2014-04-11 03:20:12 +00:00
hosts :: [Host]
hosts =
[ host "mybox.example.com"
2014-06-05 21:30:25 +00:00
& os (System (Debian Unstable) "amd64")
& Apt.stdSourcesList
2014-04-11 03:20:12 +00:00
& Apt.unattendedUpgrades
& Apt.installed ["etckeeper"]
& Apt.installed ["ssh"]
& User.hasSomePassword (User "root")
2014-04-11 03:20:12 +00:00
& Network.ipv6to4
& File.dirExists "/var/www"
& Docker.docked webserverContainer
2014-04-11 03:20:12 +00:00
& Docker.garbageCollected `period` Daily
2015-02-12 16:40:52 +00:00
& Cron.runPropellor (Cron.Times "30 * * * *")
2014-04-01 22:56:56 +00:00
2014-04-11 03:20:12 +00:00
-- add more hosts here...
--, host "foo.example.com" = ...
2014-04-01 22:56:56 +00:00
]
-- 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"