Related to this... Dwight and I have been bouncing a couple of things back and forth and I noticed that lxc-autostart is being called from the sysvinit scripts without the -a parameter. That means that any container in a non-null group will not be autostart on boot. I feel that's the wrong behavior. If autoboot = 1 then it should be autobooted on boot. What you do after boot is up to you but I would expect it to be "autoboot = 1" => "autobooted on bootup", not "autoboot = 1" => "autobooted on bootup if it's not in a group".
Regards, Mike On Thu, 2014-05-01 at 16:06 -0400, Stéphane Graber wrote: > On Thu, May 01, 2014 at 03:33:58PM -0400, Dwight Engen wrote: > > - reuse the sysvinit script to ensure that if the lxc is configured to use > > a bridge setup by libvirt, the bridge will be available before starting > > the container > > > > - made the sysvinit script check for the existance of ifconfig, and fall > > back to ip link list if available > > > > - made the lxc service also dependant on the network.target > > > > - autoconfized the paths in the service file and sysvinit script > > > > Reported-by: CDR <[email protected]> > > Signed-off-by: Dwight Engen <[email protected]> > > --- > > .gitignore | 3 ++ > > config/init/systemd/Makefile.am | 14 ++++++- > > config/init/systemd/lxc.service | 17 -------- > > config/init/systemd/lxc.service.in | 17 ++++++++ > > config/init/sysvinit/lxc | 66 ------------------------------ > > config/init/sysvinit/lxc.in | 82 > > ++++++++++++++++++++++++++++++++++++++ > > configure.ac | 2 + > > lxc.spec.in | 1 + > > 8 files changed, 117 insertions(+), 85 deletions(-) > > delete mode 100644 config/init/systemd/lxc.service > > create mode 100644 config/init/systemd/lxc.service.in > > delete mode 100755 config/init/sysvinit/lxc > > create mode 100755 config/init/sysvinit/lxc.in > > > > diff --git a/.gitignore b/.gitignore > > index 8145f81..77b1ceb 100644 > > --- a/.gitignore > > +++ b/.gitignore > > @@ -111,6 +111,9 @@ config/missing > > config/libtool.m4 > > config/lt*.m4 > > config/bash/lxc > > +config/init/systemd/lxc-autostart > > +config/init/systemd/lxc.service > > +config/init/sysvinit/lxc > > > > doc/*.1 > > doc/*.5 > > diff --git a/config/init/systemd/Makefile.am > > b/config/init/systemd/Makefile.am > > index de5ee50..bbc7baa 100644 > > --- a/config/init/systemd/Makefile.am > > +++ b/config/init/systemd/Makefile.am > > @@ -5,7 +5,17 @@ EXTRA_DIST = \ > > if INIT_SCRIPT_SYSTEMD > > SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system > > > > -install-systemd: lxc.service lxc-devsetup > > +lxc-autostart: ../sysvinit/lxc.in $(top_builddir)/config.status > > + $(AM_V_GEN)sed \ > > + -e 's|[@]SYSCONFDIR[@]|$(sysconfdir)|g' \ > > + -e 's|[@]LOCALSTATEDIR[@]|$(localstatedir)|g' \ > > + -e 's|[@]BINDIR[@]|$(bindir)|g' \ > > + < $< > $@-t && \ > > + chmod a+x $@-t && \ > > + mv $@-t $@ > > +BUILT_SOURCES = lxc-autostart > > + > > +install-systemd: lxc.service lxc-devsetup lxc-autostart > > $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR) > > $(INSTALL_DATA) lxc.service $(DESTDIR)$(SYSTEMD_UNIT_DIR)/ > > > > @@ -13,7 +23,7 @@ uninstall-systemd: > > rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/lxc.service > > rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || : > > > > -pkglibexec_SCRIPTS = lxc-devsetup > > +pkglibexec_SCRIPTS = lxc-devsetup lxc-autostart > > > > install-data-local: install-systemd > > uninstall-local: uninstall-systemd > > diff --git a/config/init/systemd/lxc.service > > b/config/init/systemd/lxc.service > > deleted file mode 100644 > > index aa20b91..0000000 > > --- a/config/init/systemd/lxc.service > > +++ /dev/null > > @@ -1,17 +0,0 @@ > > -[Unit] > > -Description=LXC Container Initialization and Autoboot Code > > -After=syslog.target > > - > > -[Service] > > -Type=oneshot > > -RemainAfterExit=yes > > -ExecStartPre=/usr/libexec/lxc/lxc-devsetup > > -ExecStart=/usr/libexec/lxc/lxc-startup start > > -ExecStop=/usr/libexec/lxc/lxc-startup stop > > -# Environment=BOOTUP=serial > > -# Environment=CONSOLETYPE=serial > > -StandardOutput=syslog > > -StandardError=syslog > > - > > -[Install] > > -WantedBy=multi-user.target > > diff --git a/config/init/systemd/lxc.service.in > > b/config/init/systemd/lxc.service.in > > new file mode 100644 > > index 0000000..2f293eb > > --- /dev/null > > +++ b/config/init/systemd/lxc.service.in > > @@ -0,0 +1,17 @@ > > +[Unit] > > +Description=LXC Container Initialization and Autoboot Code > > +After=syslog.target network.target > > + > > +[Service] > > +Type=oneshot > > +RemainAfterExit=yes > > +ExecStartPre=@libexecdir@/lxc/lxc-devsetup > > +ExecStart=@libexecdir@/lxc/lxc-autostart start > > +ExecStop=@libexecdir@/lxc/lxc-autostart stop > > ^ That still seems wrong to me, lxc-autostart is a standard binary in BINDIR. > > > +# Environment=BOOTUP=serial > > +# Environment=CONSOLETYPE=serial > > +StandardOutput=syslog > > +StandardError=syslog > > + > > +[Install] > > +WantedBy=multi-user.target > > diff --git a/config/init/sysvinit/lxc b/config/init/sysvinit/lxc > > deleted file mode 100755 > > index 5ab3c46..0000000 > > --- a/config/init/sysvinit/lxc > > +++ /dev/null > > @@ -1,66 +0,0 @@ > > -#!/bin/sh > > -# > > -# lxc Start/Stop LXC autoboot containers > > -# > > -# chkconfig: 345 99 01 > > -# description: Starts/Stops all LXC containers configured for autostart. > > -# > > -### BEGIN INIT INFO > > -# Provides: lxc > > -# Default-Start: 3 4 5 > > -# Default-Stop: 0 1 6 > > -# Short-Description: Bring up/down LXC autostart containers > > -# Description: Bring up/down LXC autostart containers > > -### END INIT INFO > > - > > -# Source function library. > > -. /etc/init.d/functions > > - > > -# Check for needed utility program > > -[ -x /usr/bin/lxc-autostart ] || exit 1 > > - > > -# If libvirtd is providing the bridge, it might not be > > -# immediately available, so wait a bit for it before starting > > -# up the containers or else any that use the bridge will fail > > -# to start > > -wait_for_bridge() > > -{ > > - [ -f /etc/lxc/default.conf ] || { return 0; } > > - > > - BRNAME=`grep '^[ ]*lxc.network.link' /etc/lxc/default.conf | sed > > 's/^.*=[ ]*//'` > > - if [ -z "$BRNAME" ]; then > > - return 0 > > - fi > > - > > - for try in `seq 1 30`; do > > - ifconfig -a |grep "^$BRNAME" >/dev/null 2>&1 > > - if [ $? = 0 ]; then > > - return > > - fi > > - sleep 1 > > - done > > -} > > - > > -# See how we were called. > > -case "$1" in > > - start) > > - [ ! -f /var/lock/subsys/lxc ] || { exit 0; } > > - > > - # Start containers > > - wait_for_bridge > > - action $"Starting LXC containers: " /usr/bin/lxc-autostart > > - touch /var/lock/subsys/lxc > > - ;; > > - stop) > > - action $"Stopping LXC containers: " /usr/bin/lxc-autostart -a -A -s > > - rm -f /var/lock/subsys/lxc > > - ;; > > - restart|reload|force-reload) > > - $0 stop > > - $0 start > > - ;; > > - *) > > - echo $"Usage: $0 {start|stop|restart|reload|force-reload}" > > - exit 2 > > -esac > > -exit $? > > diff --git a/config/init/sysvinit/lxc.in b/config/init/sysvinit/lxc.in > > new file mode 100755 > > index 0000000..b1a725c > > --- /dev/null > > +++ b/config/init/sysvinit/lxc.in > > @@ -0,0 +1,82 @@ > > +#!/bin/sh > > +# > > +# lxc Start/Stop LXC autoboot containers > > +# > > +# chkconfig: 345 99 01 > > +# description: Starts/Stops all LXC containers configured for autostart. > > +# > > +### BEGIN INIT INFO > > +# Provides: lxc > > +# Default-Start: 3 4 5 > > +# Default-Stop: 0 1 6 > > +# Short-Description: Bring up/down LXC autostart containers > > +# Description: Bring up/down LXC autostart containers > > +### END INIT INFO > > + > > +sysconfdir="@SYSCONFDIR@" > > +bindir="@BINDIR@" > > +localstatedir="@LOCALSTATEDIR@" > > + > > +# Source function library. > > +test ! -r "$sysconfdir"/rc.d/init.d/functions || > > + . "$sysconfdir"/rc.d/init.d/functions > > + > > +# Check for needed utility program > > +[ -x "$bindir"/lxc-autostart ] || exit 1 > > + > > +# If libvirtd is providing the bridge, it might not be > > +# immediately available, so wait a bit for it before starting > > +# up the containers or else any that use the bridge will fail > > +# to start > > +wait_for_bridge() > > +{ > > + [ -f "$sysconfdir"/lxc/default.conf ] || { return 0; } > > + > > + which ifconfig >/dev/null 2>&1 > > + if [ $? = 0 ]; then > > + cmd="ifconfig -a" > > + else > > + which ip >/dev/null 2>&1 > > + if [ $? = 0 ]; then > > + cmd="ip link list" > > + fi > > + fi > > + [ -n cmd ] || { return 0; } > > + > > + BRNAME=`grep '^[ ]*lxc.network.link' > > "$sysconfdir"/lxc/default.conf | sed 's/^.*=[ ]*//'` > > + if [ -z "$BRNAME" ]; then > > + return 0 > > + fi > > + > > + for try in `seq 1 30`; do > > + eval $cmd |grep "^$BRNAME" >/dev/null 2>&1 > > + if [ $? = 0 ]; then > > + return > > + fi > > + sleep 1 > > + done > > +} > > + > > +# See how we were called. > > +case "$1" in > > + start) > > + [ ! -f "$localstatedir"/lock/subsys/lxc ] || { exit 0; } > > + > > + # Start containers > > + wait_for_bridge > > + action $"Starting LXC containers: " "$bindir"/lxc-autostart > > + touch "$localstatedir"/lock/subsys/lxc > > + ;; > > + stop) > > + action $"Stopping LXC containers: " "$bindir"/lxc-autostart -a -A -s > > + rm -f "$localstatedir"/lock/subsys/lxc > > + ;; > > + restart|reload|force-reload) > > + $0 stop > > + $0 start > > + ;; > > + *) > > + echo $"Usage: $0 {start|stop|restart|reload|force-reload}" > > + exit 2 > > +esac > > +exit $? > > diff --git a/configure.ac b/configure.ac > > index 474e354..6e0d8df 100644 > > --- a/configure.ac > > +++ b/configure.ac > > @@ -565,7 +565,9 @@ AC_CONFIG_FILES([ > > config/bash/lxc > > config/init/Makefile > > config/init/sysvinit/Makefile > > + config/init/sysvinit/lxc > > config/init/systemd/Makefile > > + config/init/systemd/lxc.service > > config/init/upstart/Makefile > > config/etc/Makefile > > config/templates/Makefile > > diff --git a/lxc.spec.in b/lxc.spec.in > > index 5c9fdc8..f4286c2 100644 > > --- a/lxc.spec.in > > +++ b/lxc.spec.in > > @@ -156,6 +156,7 @@ rm -rf %{buildroot} > > %attr(4111,root,root) %{_libexecdir}/%{name}/lxc-user-nic > > %if %{with_systemd} > > %attr(555,root,root) %{_libexecdir}/%{name}/lxc-devsetup > > +%attr(555,root,root) %{_libexecdir}/%{name}/lxc-autostart > > %endif > > > > %if %{with_python} > > -- > > 1.9.0 > > > > _______________________________________________ > > lxc-devel mailing list > > [email protected] > > http://lists.linuxcontainers.org/listinfo/lxc-devel > > _______________________________________________ > lxc-devel mailing list > [email protected] > http://lists.linuxcontainers.org/listinfo/lxc-devel -- Michael H. Warfield (AI4NB) | (770) 978-7061 | [email protected] /\/\|=mhw=|\/\/ | (678) 463-0932 | http://www.wittsend.com/mhw/ NIC whois: MHW9 | An optimist believes we live in the best of all PGP Key: 0x674627FF | possible worlds. A pessimist is sure of it!
signature.asc
Description: This is a digitally signed message part
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
