services: Add keepalived service.
* gnu/services/networking.scm (<keepalived-configuration>): New record. (keepalived-shepherd-service): New procedure. (keepalived-service-type): New variable. * doc/guix.texi (Networking Services): Document this.
This commit is contained in:
parent
79ba12a1db
commit
4e511fcfce
@ -55,7 +55,7 @@ Copyright @copyright{} 2017 Andy Wingo@*
|
||||
Copyright @copyright{} 2017, 2018, 2019, 2020 Arun Isaac@*
|
||||
Copyright @copyright{} 2017 nee@*
|
||||
Copyright @copyright{} 2018 Rutger Helling@*
|
||||
Copyright @copyright{} 2018 Oleg Pykhalov@*
|
||||
Copyright @copyright{} 2018, 2021 Oleg Pykhalov@*
|
||||
Copyright @copyright{} 2018 Mike Gerwitz@*
|
||||
Copyright @copyright{} 2018 Pierre-Antoine Rouby@*
|
||||
Copyright @copyright{} 2018, 2019 Gábor Boskovits@*
|
||||
@ -17207,6 +17207,58 @@ address, delete everything except these options:
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@cindex keepalived
|
||||
@deffn {Scheme Variable} keepalived-service-type
|
||||
This is the type for the @uref{https://www.keepalived.org/, Keepalived}
|
||||
routing software, @command{keepalived}. Its value must be an
|
||||
@code{keepalived-configuration} record as in this example for master
|
||||
machine:
|
||||
|
||||
@lisp
|
||||
(service keepalived-service-type
|
||||
(keepalived-configuration
|
||||
(config-file (local-file "keepalived-master.conf"))))
|
||||
@end lisp
|
||||
|
||||
where @file{keepalived-master.conf}:
|
||||
|
||||
@example
|
||||
vrrp_instance my-group @{
|
||||
state MASTER
|
||||
interface enp9s0
|
||||
virtual_router_id 100
|
||||
priority 100
|
||||
unicast_peer @{ 10.0.0.2 @}
|
||||
virtual_ipaddress @{
|
||||
10.0.0.4/24
|
||||
@}
|
||||
@}
|
||||
@end example
|
||||
|
||||
and for backup machine:
|
||||
|
||||
@lisp
|
||||
(service keepalived-service-type
|
||||
(keepalived-configuration
|
||||
(config-file (local-file "keepalived-backup.conf"))))
|
||||
@end lisp
|
||||
|
||||
where @file{keepalived-backup.conf}:
|
||||
|
||||
@example
|
||||
vrrp_instance my-group @{
|
||||
state BACKUP
|
||||
interface enp9s0
|
||||
virtual_router_id 100
|
||||
priority 99
|
||||
unicast_peer @{ 10.0.0.3 @}
|
||||
virtual_ipaddress @{
|
||||
10.0.0.4/24
|
||||
@}
|
||||
@}
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
@node Unattended Upgrades
|
||||
@subsection Unattended Upgrades
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
|
||||
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -42,6 +43,7 @@
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages cluster)
|
||||
#:use-module (gnu packages connman)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages linux)
|
||||
@ -192,7 +194,11 @@
|
||||
yggdrasil-configuration-log-level
|
||||
yggdrasil-configuration-log-to
|
||||
yggdrasil-configuration-json-config
|
||||
yggdrasil-configuration-package))
|
||||
yggdrasil-configuration-package
|
||||
|
||||
keepalived-configuration
|
||||
keepalived-configuration?
|
||||
keepalived-service-type))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
@ -1865,4 +1871,43 @@ See yggdrasil -genconf for config options.")
|
||||
(service-extension profile-service-type
|
||||
(compose list yggdrasil-configuration-package))))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Keepalived
|
||||
;;;
|
||||
|
||||
(define-record-type* <keepalived-configuration>
|
||||
keepalived-configuration make-keepalived-configuration
|
||||
keepalived-configuration?
|
||||
(keepalived keepalived-configuration-keepalived ;<package>
|
||||
(default keepalived))
|
||||
(config-file keepalived-configuration-config-file ;file-like
|
||||
(default #f)))
|
||||
|
||||
(define keepalived-shepherd-service
|
||||
(match-lambda
|
||||
(($ <keepalived-configuration> keepalived config-file)
|
||||
(list
|
||||
(shepherd-service
|
||||
(provision '(keepalived))
|
||||
(documentation "Run keepalived.")
|
||||
(requirement '(loopback))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list (string-append #$keepalived "/sbin/keepalived")
|
||||
"--dont-fork" "--log-console" "--log-detail"
|
||||
"--pid=/var/run/keepalived.pid"
|
||||
(string-append "--use-file=" #$config-file))
|
||||
#:pid-file "/var/run/keepalived.pid"
|
||||
#:log-file "/var/log/keepalived.log"))
|
||||
(respawn? #f)
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define keepalived-service-type
|
||||
(service-type (name 'keepalived)
|
||||
(extensions (list (service-extension shepherd-root-service-type
|
||||
keepalived-shepherd-service)))
|
||||
(description
|
||||
"Run @uref{https://www.keepalived.org/, Keepalived}
|
||||
routing software.")))
|
||||
|
||||
;;; networking.scm ends here
|
||||
|
Loading…
Reference in New Issue
Block a user