add a simpler version of config.hs
This commit is contained in:
parent
4e7928efb6
commit
548f0dd50b
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue