@@ -1,6 +1,8 @@
Post v22.12.0
-------------
- Add ovn-ctl commands for (re)starting/stopping OVSDB relay for OVN SB DB.
+ - Add new ovn-db@.service systemd unit to run ovsdb-servers in separate
+ systemd units.
OVN v22.12.0 - 16 Dec 2022
--------------------------
@@ -13,6 +13,7 @@ EXTRA_DIST += \
rhel/ovn-fedora.spec.in \
rhel/usr_lib_systemd_system_ovn-controller.service \
rhel/usr_lib_systemd_system_ovn-controller-vtep.service \
+ rhel/usr_lib_systemd_system_ovn-db@.service \
rhel/usr_lib_systemd_system_ovn-ic.service \
rhel/usr_lib_systemd_system_ovn-ic-db.service \
rhel/usr_lib_systemd_system_ovn-northd.service \
@@ -165,7 +165,7 @@ install -p -D -m 0644 \
rhel/usr_share_ovn_scripts_systemd_sysconfig.template \
$RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/ovn
-for service in ovn-controller ovn-controller-vtep ovn-northd ovn-ic ovn-ic-db; do
+for service in ovn-controller ovn-controller-vtep ovn-northd ovn-ic ovn-ic-db ovn-db@; do
install -p -D -m 0644 \
rhel/usr_lib_systemd_system_${service}.service \
$RPM_BUILD_ROOT%{_unitdir}/${service}.service
@@ -492,6 +492,7 @@ fi
%{_mandir}/man5/ovn-ic-sb.5*
%{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers
%config(noreplace) %{_sysconfdir}/logrotate.d/ovn
+%{_unitdir}/ovn-db@.service
%files docker
%{_bindir}/ovn-docker-overlay-driver
new file mode 100644
@@ -0,0 +1,39 @@
+# This system unit is used to manage OVN DB daemons.
+# It supports all '_ovsdb'-ending commands in
+# /usr/share/ovn/scripts/ovn-ctl script. Consult it for additional info.
+#
+# Each OVN DB systemd unit instance name %i (a part after '@' symbol) must match
+# with appropriate ovn-ctl subcommand, which starts and ends with 'start_' and
+# '_ovsdb' respectively.
+# User must provide appropriate environment variable 'ovn_$i_opts' either in
+# /etc/sysconfig/ovn, in /etc/sysconfig/ovn-%i or in
+# /etc/systemd/system/ovn-db@%i.service.d/local.conf file.
+#
+# For example, to configure ovn-db@sb daemon, which runs ovsdb-server with
+# OVN_Southbound database schema, you should define variable 'ovn_sb_opts' in
+# /etc/systemd/system/ovn-db@sb.service.d/local.conf:
+#
+# [System]
+# Environment="ovn_sb_opts=--db-sb-sock=/usr/local/var/run/ovn/ovnsb_db.sock"
+#
+# Alternatively, you may specify environment variable in the /etc/sysconfig/ovn-sb file:
+#
+# ovn_sb_opts="--db-sb-sock=/usr/local/var/run/ovn/ovnsb_db.sock"
+
+[Unit]
+Description=OVN database daemon
+After=syslog.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+Environment=OVN_RUNDIR=%t/ovn OVN_DBDIR=/var/lib/ovn
+EnvironmentFile=-/etc/sysconfig/ovn
+EnvironmentFile=-/etc/sysconfig/ovn-%i
+ExecStartPre=-/usr/bin/chown -R ${OVN_USER_ID} ${OVN_DBDIR}
+ExecStart=/usr/share/ovn/scripts/ovn-ctl \
+ --ovn-user=${OVN_USER_ID} start_%i_ovsdb $OPTIONS $ovn_%i_opts
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_%i_ovsdb
+
+[Install]
+WantedBy=multi-user.target
With this universal systemd unit users, which run ovsdb-servers with systemd, will be able to run different OVSDB server instances within separate systemd-units. Now it is possible to run all commands from ovn-ctl script, which start and end with "start_/stop_" and "_ovsdb" respectively. Current list is: - ovn-db@sb - ovn-db@nb - ovn-db@ic - ovn-db@ic_sb - ovn-db@ic_nb - ovn-db@sb_relay And any possible future commands, which conform rules described above. To run such units user must define environment variable, which name has a next form: "ovn_%i_opts". Where %i is the name of unit instance (a part after "@" symbol). User may supply this variable with configuration parameter in one of /etc/sysconfig/ovn, /etc/sysconfig/ovn-%i or in /etc/systemd/system/ovn-db@%i.service.d/local.conf files. In general this feature gives more granular process management. For instance, it is not needed to restart SB and NB ovsdb-servers anymore, when user just restarts ovn-northd daemon (upgrade scenario). Signed-off-by: Vladislav Odintsov <odivlad@gmail.com> --- NEWS | 2 ++ rhel/automake.mk | 1 + rhel/ovn-fedora.spec.in | 3 +- rhel/usr_lib_systemd_system_ovn-db@.service | 39 +++++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 rhel/usr_lib_systemd_system_ovn-db@.service