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 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ config-simple.hs | 22 ------------------ propellor.cabal | 1 + 3 files changed, 68 insertions(+), 22 deletions(-) create mode 100644 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]) + } 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 -- cgit v1.2.3