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
2 changed files with 99 additions and 2 deletions
|
@ -55,7 +55,7 @@ Copyright @copyright{} 2017 Andy Wingo@*
|
||||||
Copyright @copyright{} 2017, 2018, 2019, 2020 Arun Isaac@*
|
Copyright @copyright{} 2017, 2018, 2019, 2020 Arun Isaac@*
|
||||||
Copyright @copyright{} 2017 nee@*
|
Copyright @copyright{} 2017 nee@*
|
||||||
Copyright @copyright{} 2018 Rutger Helling@*
|
Copyright @copyright{} 2018 Rutger Helling@*
|
||||||
Copyright @copyright{} 2018 Oleg Pykhalov@*
|
Copyright @copyright{} 2018, 2021 Oleg Pykhalov@*
|
||||||
Copyright @copyright{} 2018 Mike Gerwitz@*
|
Copyright @copyright{} 2018 Mike Gerwitz@*
|
||||||
Copyright @copyright{} 2018 Pierre-Antoine Rouby@*
|
Copyright @copyright{} 2018 Pierre-Antoine Rouby@*
|
||||||
Copyright @copyright{} 2018, 2019 Gábor Boskovits@*
|
Copyright @copyright{} 2018, 2019 Gábor Boskovits@*
|
||||||
|
@ -17207,6 +17207,58 @@ address, delete everything except these options:
|
||||||
@end table
|
@end table
|
||||||
@end deftp
|
@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
|
@node Unattended Upgrades
|
||||||
@subsection Unattended Upgrades
|
@subsection Unattended Upgrades
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
|
;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
|
||||||
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
||||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||||
|
;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -42,6 +43,7 @@
|
||||||
#:use-module (gnu packages admin)
|
#:use-module (gnu packages admin)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
|
#:use-module (gnu packages cluster)
|
||||||
#:use-module (gnu packages connman)
|
#:use-module (gnu packages connman)
|
||||||
#:use-module (gnu packages freedesktop)
|
#:use-module (gnu packages freedesktop)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
|
@ -192,7 +194,11 @@
|
||||||
yggdrasil-configuration-log-level
|
yggdrasil-configuration-log-level
|
||||||
yggdrasil-configuration-log-to
|
yggdrasil-configuration-log-to
|
||||||
yggdrasil-configuration-json-config
|
yggdrasil-configuration-json-config
|
||||||
yggdrasil-configuration-package))
|
yggdrasil-configuration-package
|
||||||
|
|
||||||
|
keepalived-configuration
|
||||||
|
keepalived-configuration?
|
||||||
|
keepalived-service-type))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -1865,4 +1871,43 @@ See yggdrasil -genconf for config options.")
|
||||||
(service-extension profile-service-type
|
(service-extension profile-service-type
|
||||||
(compose list yggdrasil-configuration-package))))))
|
(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
|
;;; networking.scm ends here
|
||||||
|
|
Reference in a new issue