This allows a distro to put the distro specific default network configuration (for example bridge device, link type), or other lxc configuration in the case that -f is not passed by the user to lxc-create, in which case lxc-create will use the distro conf file as the basis for the containers config.
Signed-off-by: Dwight Engen <dwight.en...@oracle.com> --- Makefile.am | 2 +- config/Makefile.am | 9 +++++++++ config/lxc.conf.debian | 3 +++ config/lxc.conf.libvirt | 3 +++ config/lxc.conf.unknown | 1 + configure.ac | 25 +++++++++++++++++++++++++ lxc.spec.in | 1 + src/lxc/lxc-create.in | 23 +++++++++-------------- 8 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 config/lxc.conf.debian create mode 100644 config/lxc.conf.libvirt create mode 100644 config/lxc.conf.unknown diff --git a/Makefile.am b/Makefile.am index c66ecc6..2f7606f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I config -SUBDIRS = src templates doc +SUBDIRS = config src templates doc DIST_SUBDIRS = config src templates doc EXTRA_DIST = autogen.sh lxc.spec CONTRIBUTING MAINTAINERS ChangeLog diff --git a/config/Makefile.am b/config/Makefile.am index 783ba73..6c39d3c 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -1,2 +1,11 @@ +configdir = $(sysconfdir)/lxc +config_DATA = lxc.conf +conffile = @LXC_CONFFILE@ + +EXTRA_DIST = lxc.conf.debian lxc.conf.libvirt lxc.conf.unknown + +lxc.conf: + cp $(conffile) $@ + distclean: @$(RM) -f compile config.guess config.sub depcomp install-sh ltmain.sh missing Makefile.in Makefile diff --git a/config/lxc.conf.debian b/config/lxc.conf.debian new file mode 100644 index 0000000..d2ac167 --- /dev/null +++ b/config/lxc.conf.debian @@ -0,0 +1,3 @@ +lxc.network.type=veth +lxc.network.link=lxcbr0 +lxc.network.flags=up diff --git a/config/lxc.conf.libvirt b/config/lxc.conf.libvirt new file mode 100644 index 0000000..7128619 --- /dev/null +++ b/config/lxc.conf.libvirt @@ -0,0 +1,3 @@ +lxc.network.type=veth +lxc.network.link=virbr0 +lxc.network.flags=up diff --git a/config/lxc.conf.unknown b/config/lxc.conf.unknown new file mode 100644 index 0000000..16fa9d6 --- /dev/null +++ b/config/lxc.conf.unknown @@ -0,0 +1 @@ +lxc.network.type=empty diff --git a/configure.ac b/configure.ac index b9a0d65..9f1e669 100644 --- a/configure.ac +++ b/configure.ac @@ -12,10 +12,34 @@ AM_PROG_CC_C_O AC_GNU_SOURCE AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin) +# Make sure to test for fedora first since it has both fedora-release +# and redhat-release if test -f /etc/debian_version; then osname="debian" +elif test -f /etc/oracle-release; then + osname="oracle" +elif test -f /etc/fedora-release; then + osname="fedora" +elif test -f /etc/redhat-release; then + osname="redhat" fi + AM_CONDITIONAL([HAVE_DEBIAN], [test x"$osname" == xdebian]) +AM_CONDITIONAL([HAVE_ORACLE], [test x"$osname" == xoracle]) +AM_CONDITIONAL([HAVE_FEDORA], [test x"$osname" == xfedora]) +AM_CONDITIONAL([HAVE_REDHAT], [test x"$osname" == xredhat]) + +case $osname in + debian) + conffile=lxc.conf.debian + ;; + oracle|redhat|fedora) + conffile=lxc.conf.libvirt + ;; + *) + conffile=lxc.conf.unknown + ;; +esac AC_ARG_ENABLE([rpath], [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])], @@ -111,6 +135,7 @@ AC_ARG_WITH([rootfs-path], [lxc rootfs mount point] )], [], [with_rootfs_path=['${libdir}/lxc/rootfs']]) +AS_AC_EXPAND(LXC_CONFFILE, $conffile) AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") AS_AC_EXPAND(LXCPATH, "${with_config_path}") AS_AC_EXPAND(LXCROOTFSMOUNT, "${with_rootfs_path}") diff --git a/lxc.spec.in b/lxc.spec.in index e14eff6..24d3ded 100644 --- a/lxc.spec.in +++ b/lxc.spec.in @@ -93,6 +93,7 @@ rm -rf %{buildroot} %{_mandir}/* %{_datadir}/doc/* %{_datadir}/lxc/* +%{_sysconfdir}/lxc/* %files libs %defattr(-,root,root) diff --git a/src/lxc/lxc-create.in b/src/lxc/lxc-create.in index 79c67d6..949edbe 100644 --- a/src/lxc/lxc-create.in +++ b/src/lxc/lxc-create.in @@ -260,16 +260,18 @@ trap cleanup HUP INT TERM mkdir -p $lxc_path/$lxc_name if [ -z "$lxc_config" ]; then - touch $lxc_path/$lxc_name/config -else - if [ ! -r "$lxc_config" ]; then - echo "$(basename $0): '$lxc_config' configuration file not found" >&2 - exit 1 - fi + lxc_config="@SYSCONFDIR@/lxc/lxc.conf" + echo + echo "$(basename $0): No config file specified, using the default config $lxc_config" +fi - cp $lxc_config $lxc_path/$lxc_name/config +if [ ! -r "$lxc_config" ]; then + echo "$(basename $0): '$lxc_config' configuration file not found" >&2 + exit 1 fi +cp $lxc_config $lxc_path/$lxc_name/config + if [ -n "$custom_rootfs" ]; then if grep -q "lxc.rootfs" $lxc_path/$lxc_name/config ; then echo "configuration file already specifies a lxc.rootfs" @@ -295,13 +297,6 @@ if [ ! -z $lxc_template ]; then cleanup fi - if [ -z "$lxc_config" ]; then - echo "Note: Usually the template option is called with a configuration" - echo "file option too, mostly to configure the network." - echo "For more information look at lxc.conf (5)" - echo - fi - ${templatedir}/lxc-$lxc_template --path=$lxc_path/$lxc_name --name=$lxc_name $* if [ $? -ne 0 ]; then echo "$(basename $0): failed to execute template '$lxc_template'" >&2 -- 1.7.1 ------------------------------------------------------------------------------ Don't let slow site performance ruin your business. Deploy New Relic APM Deploy New Relic app performance management and know exactly what is happening inside your Ruby, Python, PHP, Java, and .NET app Try New Relic at no cost today and get our sweet Data Nerd shirt too! http://p.sf.net/sfu/newrelic-dev2dev _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel