summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-04-01 18:56:56 -0400
committerJoey Hess2014-04-01 18:56:56 -0400
commit548f0dd50b5d1afa9cc4c1e30d5b8ec1a782e094 (patch)
treee15e5a1694080e9c924226f11c5267b55e00899b
parent4e7928efb6a311f64f3bf3239b5f8e8ecfa6317c (diff)
add a simpler version of config.hs
-rw-r--r--config.hs3
-rw-r--r--config.hs.simple54
-rw-r--r--propellor.cabal1
3 files changed, 58 insertions, 0 deletions
diff --git a/config.hs b/config.hs
index 68732b8f..0547e2c0 100644
--- a/config.hs
+++ b/config.hs
@@ -1,5 +1,8 @@
-- | This is the main configuration file for Propellor, and is used to build
-- the propellor program.
+--
+-- This is the live config file used by propellor's author.
+-- For a simpler starting point, see config.hs.simple.
import Propellor
import Propellor.CmdLine
diff --git a/config.hs.simple b/config.hs.simple
new file mode 100644
index 00000000..cfa1ff88
--- /dev/null
+++ b/config.hs.simple
@@ -0,0 +1,54 @@
+-- | 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.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
+ [ Apt.stdSourcesList Unstable
+ `onChange` Apt.upgrade
+ , Apt.unattendedUpgrades True
+ , Apt.installed ["etckeeper"]
+ , Apt.installed ["ssh"]
+ , User.hasSomePassword "root"
+ , Network.ipv6to4
+ , Docker.docked container hostname "webserver"
+ `requires` File.dirExists "/var/www"
+ , 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"
+ (image $ System (Debian Unstable) Amd64)
+ [ Docker.publish "80:80"
+ , Docker.volume "/var/www:/var/www"
+ , Docker.inside
+ [ serviceRunning "apache2"
+ `requires` Apt.installed ["apache2"]
+ ]
+ ]
+container _ _ = Nothing
diff --git a/propellor.cabal b/propellor.cabal
index 1bb67b90..c1997604 100644
--- a/propellor.cabal
+++ b/propellor.cabal
@@ -17,6 +17,7 @@ Extra-Source-Files:
Makefile
debian/changelog
debian/README
+ config.hs.simple
Synopsis: property-based host configuration management in haskell
Description:
Propellor enures that the system it's run in satisfies a list of