On Sat, Jan 14, 2023 at 10:28 AM Vladislav Odintsov <[email protected]> wrote:
> 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 <[email protected]> > --- > NEWS | 2 ++ > rhel/automake.mk | 1 + > rhel/ovn-fedora.spec.in | 31 +++++++++++++++- > rhel/[email protected] | 39 +++++++++++++++++++++ > 4 files changed, 72 insertions(+), 1 deletion(-) > create mode 100644 rhel/[email protected] > > diff --git a/NEWS b/NEWS > index 9aeeac10b..fd0fee75c 100644 > --- a/NEWS > +++ b/NEWS > @@ -3,6 +3,8 @@ Post v22.12.0 > - ovn-controller: Experimental support for co-hosting multiple > controller > instances on the same host. > - Add ovn-ctl commands for (re)starting/stopping OVSDB relay for OVN SB > DB. > + - Add new [email protected] systemd unit to run ovsdb-servers in separate > + systemd units. > > OVN v22.12.0 - 16 Dec 2022 > -------------------------- > diff --git a/rhel/automake.mk b/rhel/automake.mk > index 3e71f5d80..992de3dc7 100644 > --- a/rhel/automake.mk > +++ b/rhel/automake.mk > @@ -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/[email protected] \ > 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 \ > diff --git a/rhel/ovn-fedora.spec.in b/rhel/ovn-fedora.spec.in > index 57dc977c1..b41ad062f 100644 > --- a/rhel/ovn-fedora.spec.in > +++ b/rhel/ovn-fedora.spec.in > @@ -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 > @@ -265,6 +265,17 @@ if [ $1 -eq 1 ] ; then > fi > fi > > +%preun > +%if 0%{?systemd_preun:1} > + %systemd_preun ovn-db@*.service > +%else > + if [ $1 -eq 0 ] ; then > + # Package removal, not upgrade > + /bin/systemctl --no-reload disable ovn-db@*.service >/dev/null > 2>&1 || : > + /bin/systemctl stop ovn-db@*.service >/dev/null 2>&1 || : > + fi > +%endif > + > %preun central > %if 0%{?systemd_preun:1} > %systemd_preun ovn-northd.service > @@ -328,6 +339,15 @@ if [ $1 -eq 1 ]; then > fi > %endif > > +%if 0%{?systemd_post:1} > + %systemd_post ovn-db@*.service > +%else > + # Package install, not upgrade > + if [ $1 -eq 1 ]; then > + /bin/systemctl daemon-reload >dev/null || : > + fi > +%endif > + > %post central > %if 0%{?systemd_post:1} > %systemd_post ovn-northd.service > @@ -377,6 +397,11 @@ fi > %endif > > %postun > +%if 0%{?systemd_postun:1} > + %systemd_postun > +%else > + /bin/systemctl daemon-reload >/dev/null 2>&1 || : > +%endif > > %postun central > %if 0%{?systemd_postun_with_restart:1} > @@ -492,6 +517,7 @@ fi > %{_mandir}/man5/ovn-ic-sb.5* > %{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers > %config(noreplace) %{_sysconfdir}/logrotate.d/ovn > +%{_unitdir}/[email protected] > > %files docker > %{_bindir}/ovn-docker-overlay-driver > @@ -522,6 +548,9 @@ fi > %{_unitdir}/ovn-controller-vtep.service > > %changelog > +* Wed Jan 11 2023 Vladislav Odintsov <[email protected]> > +- Added [email protected] systemd-unit. > + > * Mon Feb 1 2021 Vladislav Odintsov <[email protected]> > - Added ovn-ic, ovn-ic-db systemd-units. > > diff --git a/rhel/[email protected] > b/rhel/[email protected] > new file mode 100644 > index 000000000..98556a673 > --- /dev/null > +++ b/rhel/[email protected] > @@ -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/[email protected]/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 > -- > 2.36.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Looks good to me, thanks. Reviewed-by: Ales Musil <[email protected]> -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> [email protected] IM: amusil <https://red.ht/sig> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
