aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-06-22 12:50:43 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-06-22 12:50:43 -0700
commitb5f01bc4d9cb5e197df36e84e2b88eb0ac817f9e (patch)
tree555b5b1595dbe01871cd1cfc801f17abd7987f7f
parent580b01a5693f6bd3d0dd42f11a94e96826b84c1a (diff)
downloadconsfigurator-b5f01bc4d9cb5e197df36e84e2b88eb0ac817f9e.tar.gz
add some very simple systemd service properties
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
-rw-r--r--consfigurator.asd1
-rw-r--r--src/package.lisp8
-rw-r--r--src/property/systemd.lisp46
3 files changed, 55 insertions, 0 deletions
diff --git a/consfigurator.asd b/consfigurator.asd
index 830c65b..32c55a3 100644
--- a/consfigurator.asd
+++ b/consfigurator.asd
@@ -59,6 +59,7 @@
(:file "src/property/postfix")
(:file "src/property/cron")
(:file "src/property/apache")
+ (:file "src/property/systemd")
(:file "src/connection/shell-wrap")
(:file "src/connection/fork")
(:file "src/connection/rehome")
diff --git a/src/package.lisp b/src/package.lisp
index 080a7af..22e5b02 100644
--- a/src/package.lisp
+++ b/src/package.lisp
@@ -699,6 +699,14 @@
#:mod-enabled
#:conf-enabled))
+(defpackage :consfigurator.property.systemd
+ (:use #:cl #:consfigurator)
+ (:export #:started
+ #:stopped
+ #:enabled
+ #:disabled
+ #:masked))
+
(defpackage :consfigurator.connection.local
(:use #:cl #:consfigurator #:alexandria)
(:export #:local-connection))
diff --git a/src/property/systemd.lisp b/src/property/systemd.lisp
new file mode 100644
index 0000000..c417df6
--- /dev/null
+++ b/src/property/systemd.lisp
@@ -0,0 +1,46 @@
+;;; Consfigurator -- Lisp declarative configuration management system
+
+;;; Copyright (C) 2021 Sean Whitton <spwhitton@spwhitton.name>
+
+;;; This file is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3, or (at your option)
+;;; any later version.
+
+;;; This file is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+(in-package :consfigurator.property.systemd)
+(named-readtables:in-readtable :consfigurator)
+
+(defprop started :posix (service)
+ (:desc #?"systemd service ${service} started")
+ (:apply (mrun "systemctl" "start" service)
+ :no-change))
+
+(defprop stopped :posix (service)
+ (:desc #?"systemd service ${service} stopped")
+ (:apply (mrun "systemctl" "stop" service)
+ :no-change))
+
+(defprop enabled :posix (service)
+ (:desc #?"systemd service ${service} enabled")
+ (:apply (mrun "systemctl" "enable" service)
+ :no-change))
+
+(defprop disabled :posix (service)
+ (:desc #?"systemd service ${service} disabled")
+ (:apply (mrun "systemctl" "disable" service)
+ :no-change))
+
+(defprop masked :posix (service)
+ (:desc #?"systemd service ${service} masked")
+ (:apply (mrun "systemctl" "mask" service)
+ :no-change)
+ (:unapply (mrun "systemctl" "unmask" service)
+ :no-change))