summaryrefslogtreecommitdiff
path: root/config-simple.hs
diff options
context:
space:
mode:
authorJoey Hess2014-04-04 01:37:31 -0400
committerJoey Hess2014-04-04 01:37:31 -0400
commit25a002605056ca5b3ad93c038b424c952f1431d1 (patch)
treea60feb5834d09f1edbad8d537ba2fb84e6c4351e /config-simple.hs
parenteffa897faa48262231dfa08aa21d0b93e418db11 (diff)
nope
Diffstat (limited to 'config-simple.hs')
-rw-r--r--config-simple.hs53
1 files changed, 53 insertions, 0 deletions
diff --git a/config-simple.hs b/config-simple.hs
new file mode 100644
index 00000000..d5015ef3
--- /dev/null
+++ b/config-simple.hs
@@ -0,0 +1,53 @@
+-- | This is the main configuration file for Propellor, and is used to build
+-- the propellor program.
+
+import Propellor
+import Propellor.CmdLine
+import qualified Propellor.Property.File as File
+import qualified Propellor.Property.Apt as Apt
+import qualified Propellor.Property.Network as Network
+--import qualified Propellor.Property.Ssh as Ssh
+import qualified Propellor.Property.Cron as Cron
+--import qualified Propellor.Property.Sudo as Sudo
+import qualified Propellor.Property.User as User
+--import qualified Propellor.Property.Hostname as Hostname
+--import qualified Propellor.Property.Reboot as Reboot
+--import qualified Propellor.Property.Tor as Tor
+import qualified Propellor.Property.Docker as Docker
+
+main :: IO ()
+main = defaultMain [host, Docker.containerProperties container]
+
+-- | This is where the system's HostName, either as returned by uname
+-- or one specified on the command line, is converted into a list of
+-- Properties for that system.
+--
+-- Edit this to configure propellor!
+host :: HostName -> Maybe [Property]
+host hostname@"mybox.example.com" = Just $ props
+ & Apt.stdSourcesList Unstable
+ `onChange` Apt.upgrade
+ & Apt.unattendedUpgrades
+ & Apt.installed ["etckeeper"]
+ & Apt.installed ["ssh"]
+ & User.hasSomePassword "root"
+ & Network.ipv6to4
+ & File.dirExists "/var/www"
+ & Docker.docked container hostname "webserver"
+ & Docker.garbageCollected
+ & Cron.runPropellor "30 * * * *"
+-- add more hosts here...
+--host "foo.example.com" =
+host _ = Nothing
+
+-- | This is where Docker containers are set up. A container
+-- can vary by hostname where it's used, or be the same everywhere.
+container :: HostName -> Docker.ContainerName -> Maybe (Docker.Container)
+container _ "webserver" = Just $ Docker.containerFrom "joeyh/debian-unstable"
+ [ Docker.publish "80:80"
+ , Docker.volume "/var/www:/var/www"
+ , Docker.inside $ props
+ & serviceRunning "apache2"
+ `requires` Apt.installed ["apache2"]
+ ]
+container _ _ = Nothing