From a6e712a6457638a3ea8c653357d06fd4fbb3d5f3 Mon Sep 17 00:00:00 2001 From: FĂ©lix Sipma Date: Thu, 30 Oct 2014 21:10:23 +0100 Subject: basic nginx support --- src/Propellor/Property/Nginx.hs | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Propellor/Property/Nginx.hs (limited to 'src/Propellor/Property/Nginx.hs') diff --git a/src/Propellor/Property/Nginx.hs b/src/Propellor/Property/Nginx.hs new file mode 100644 index 00000000..97792fcc --- /dev/null +++ b/src/Propellor/Property/Nginx.hs @@ -0,0 +1,47 @@ +module Propellor.Property.Nginx where + +import Propellor +import qualified Propellor.Property.File as File +import qualified Propellor.Property.Apt as Apt +import qualified Propellor.Property.Service as Service + +type ConfigFile = [String] + +siteEnabled :: HostName -> ConfigFile -> RevertableProperty +siteEnabled hn cf = RevertableProperty enable disable + where + enable = trivial (cmdProperty "ln" ["-s", siteValRelativeCfg hn, siteVal hn]) + `describe` ("nginx site enabled " ++ hn) + `requires` siteAvailable hn cf + `requires` installed + `onChange` reloaded + disable = trivial $ + ("nginx site disabled " ++ hn) ==> + File.notPresent (siteCfg hn) + `onChange` cmdProperty "rm" [siteVal hn] + `requires` installed + `onChange` reloaded + +siteAvailable :: HostName -> ConfigFile -> Property +siteAvailable hn cf = ("nginx site available " ++ hn) ==> + siteCfg hn `File.hasContent` (comment : cf) + where + comment = "# deployed with propellor, do not modify" + +siteCfg :: HostName -> FilePath +siteCfg hn = "/etc/nginx/sites-available/" ++ hn + +siteVal :: HostName -> FilePath +siteVal hn = "/etc/nginx/sites-enabled/" ++ hn + +siteValRelativeCfg :: HostName -> FilePath +siteValRelativeCfg hn = "../sites-available/" ++ hn + +installed :: Property +installed = Apt.installed ["nginx"] + +restarted :: Property +restarted = Service.restarted "nginx" + +reloaded :: Property +reloaded = Service.reloaded "nginx" -- cgit v1.2.3