From 223c35fe5f85f94d03e7ba3a03b74af3e7eada85 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 7 Mar 2016 16:43:18 -0400 Subject: split config-freebsd back out Let's keep config-simple quite simple; naive users start by modifying it and probably don't want to be faced with freebsd example, unless they're freebsd users. --- config-freebsd.hs | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 config-freebsd.hs (limited to 'config-freebsd.hs') 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]) + } -- cgit v1.2.3