summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config-freebsd.hs67
-rw-r--r--config-simple.hs22
-rw-r--r--propellor.cabal1
3 files changed, 68 insertions, 22 deletions
diff --git a/config-freebsd.hs b/config-freebsd.hs
new file mode 100644
index 00000000..a8ceece0
--- /dev/null
+++ b/config-freebsd.hs
@@ -0,0 +1,67 @@
+-- This is the main configuration file for Propellor, and is used to build
+-- the propellor program.
+--
+-- This shows how to as a FreeBSD, as well as a Linux host.
+
+import Propellor
+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.Cron as Cron
+import Propellor.Property.Scheduled
+import qualified Propellor.Property.User as User
+import qualified Propellor.Property.Docker as Docker
+import qualified Propellor.Property.FreeBSD.Pkg as Pkg
+import qualified Propellor.Property.ZFS as ZFS
+import qualified Propellor.Property.FreeBSD.Poudriere as Poudriere
+import Data.String (fromString)
+
+main :: IO ()
+main = defaultMain hosts
+
+-- The hosts propellor knows about.
+hosts :: [Host]
+hosts =
+ [ mybox
+ , freebsd
+ ]
+
+-- An example linux host.
+mybox :: Host
+mybox = host "mybox.example.com"
+ & os (System (Debian Unstable) "amd64")
+ & Apt.stdSourcesList
+ & Apt.unattendedUpgrades
+ & Apt.installed ["etckeeper"]
+ & Apt.installed ["ssh"]
+ & User.hasSomePassword (User "root")
+ & Network.ipv6to4
+ & File.dirExists "/var/www"
+ & Docker.docked webserverContainer
+ & Docker.garbageCollected `period` Daily
+ & Cron.runPropellor (Cron.Times "30 * * * *")
+
+-- 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"
+
+-- An example freebsd host.
+freebsd :: Host
+freebsd = host "freebsd.example.com"
+ & os (System (FreeBSD (FBSDProduction FBSD102)) "amd64")
+ & Pkg.update
+ & Pkg.upgrade
+ & Poudriere.poudriere poudriereZFS
+ & Poudriere.jail (Poudriere.Jail "formail" (fromString "10.2-RELEASE") (fromString "amd64"))
+
+poudriereZFS :: Poudriere.Poudriere
+poudriereZFS = Poudriere.defaultConfig
+ { Poudriere._zfs = Just $ Poudriere.PoudriereZFS
+ (ZFS.ZFS (fromString "zroot") (fromString "poudriere"))
+ (ZFS.fromList [ZFS.Mountpoint (fromString "/poudriere"), ZFS.ACLInherit ZFS.AIPassthrough])
+ }
diff --git a/config-simple.hs b/config-simple.hs
index ac1b115f..21accd18 100644
--- a/config-simple.hs
+++ b/config-simple.hs
@@ -1,8 +1,6 @@
-- This is the main configuration file for Propellor, and is used to build
-- the propellor program.
-import Data.String (fromString)
-
import Propellor
import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt
@@ -15,9 +13,6 @@ import qualified Propellor.Property.User as User
--import qualified Propellor.Property.Hostname as Hostname
--import qualified Propellor.Property.Tor as Tor
import qualified Propellor.Property.Docker as Docker
-import qualified Propellor.Property.FreeBSD.Pkg as Pkg
-import qualified Propellor.Property.ZFS as ZFS
-import qualified Propellor.Property.FreeBSD.Poudriere as Poudriere
main :: IO ()
main = defaultMain hosts
@@ -26,7 +21,6 @@ main = defaultMain hosts
hosts :: [Host]
hosts =
[ mybox
- , freebsd
]
-- An example host.
@@ -52,19 +46,3 @@ webserverContainer = Docker.container "webserver" (Docker.latestImage "debian")
& Docker.publish "80:80"
& Docker.volume "/var/www:/var/www"
& Apt.serviceInstalledRunning "apache2"
-
-poudriereZFS :: Poudriere.Poudriere
-poudriereZFS = Poudriere.defaultConfig {
- Poudriere._zfs = Just $ Poudriere.PoudriereZFS
- (ZFS.ZFS (fromString "zroot") (fromString "poudriere"))
- (ZFS.fromList [ZFS.Mountpoint (fromString "/poudriere"), ZFS.ACLInherit ZFS.AIPassthrough])
- }
-
--- An example host.
-freebsd :: Host
-freebsd = host "192.168.56.10"
- & os (System (FreeBSD (FBSDProduction FBSD102)) "amd64")
- & Pkg.update
- & Pkg.upgrade
- & Poudriere.poudriere poudriereZFS
- & Poudriere.jail (Poudriere.Jail "formail" (fromString "10.2-RELEASE") (fromString "amd64"))
diff --git a/propellor.cabal b/propellor.cabal
index c55bf912..b683b144 100644
--- a/propellor.cabal
+++ b/propellor.cabal
@@ -16,6 +16,7 @@ Extra-Source-Files:
CHANGELOG
Makefile
config-simple.hs
+ config-freebsd.hs
config-joey.hs
config.hs
debian/changelog