All, After comments from Serge, attached is a suggested patch to the Fedora template to incorporate the FQDN (Fully Qualified Domain Name) of the container as the utsname in the container configuration and in the host name of the system. It adds a "--fqdn" long option to explicitly specify the value for utsname and hostname.
The logic contains one default behavior change. If an FQDN is not specified or is a host simple name, the logic will use the domain name of the host appended to either the container name or the simple name to generate an FQDN. There were some comments on the -users list about determining the name of a container based on it's host name. That's never a good idea anyways because they can be independently changed but this would also change the default case. Please looks that over and comment. Other container owners might consider a similar modification. Regards, Mike -- Michael H. Warfield (AI4NB) | (770) 985-6132 | m...@wittsend.com /\/\|=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! -- Signed-off-by: Michael H. Warfield <m...@wittsend.com> --- diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in index 481f718..8cc1699 100644 --- a/templates/lxc-fedora.in +++ b/templates/lxc-fedora.in @@ -66,7 +66,7 @@ configure_fedora() DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes -HOSTNAME=${name} +HOSTNAME=${utsname} NM_CONTROLLED=no TYPE=Ethernet MTU=${MTU} @@ -75,17 +75,17 @@ EOF # set the hostname cat <<EOF > ${rootfs_path}/etc/sysconfig/network NETWORKING=yes -HOSTNAME=${name} +HOSTNAME=${utsname} EOF # set hostname on systemd Fedora systems if [ $release -gt 14 ]; then - echo "${name}" > ${rootfs_path}/etc/hostname + echo "${utsname}" > ${rootfs_path}/etc/hostname fi # set minimal hosts cat <<EOF > $rootfs_path/etc/hosts -127.0.0.1 localhost $name +127.0.0.1 localhost.localdomain localhost $utsname ::1 localhost6.localdomain6 localhost6 EOF @@ -287,7 +287,7 @@ copy_configuration() mkdir -p $config_path grep -q "^lxc.rootfs" $config_path/config 2>/dev/null || echo "lxc.rootfs = $rootfs_path" >> $config_path/config cat <<EOF >> $config_path/config -lxc.utsname = $name +lxc.utsname = $utsname lxc.tty = 4 lxc.pts = 1024 lxc.mount = $config_path/fstab @@ -355,7 +355,7 @@ usage() cat <<EOF usage: $1 -n|--name=<container_name> - [-p|--path=<path>] [-c|--clean] [-R|--release=<Fedora_release>] [-A|--arch=<arch of the container>] + [-p|--path=<path>] [-c|--clean] [-R|--release=<Fedora_release>] [--fqdn=<network name of container>] [-A|--arch=<arch of the container>] [-h|--help] Mandatory args: -n,--name container name, used to as an identifier for that container from now on @@ -363,13 +363,14 @@ Optional args: -p,--path path to where the container rootfs will be created, defaults to @LXCPATH@. The container config will go under @LXCPATH@ in that case -c,--clean clean the cache -R,--release Fedora release for the new container. if the host is Fedora, then it will default to the host's release. + --fqdn fully qualified domain name (FQDN) for DNS and system naming -A,--arch NOT USED YET. Define what arch the container will be [i686,x86_64] -h,--help print this help EOF return 0 } -options=$(getopt -o hp:n:cR: -l help,path:,name:,clean,release: -- "$@") +options=$(getopt -o hp:n:cR: -l help,path:,name:,clean,release:,fqdn: -- "$@") if [ $? -ne 0 ]; then usage $(basename $0) exit 1 @@ -384,6 +385,7 @@ do -n|--name) name=$2; shift 2;; -c|--clean) clean=$2; shift 2;; -R|--release) release=$2; shift 2;; + --fqdn) utsname=$2; shift 2;; --) shift 1; break ;; *) break ;; esac @@ -394,6 +396,29 @@ if [ ! -z "$clean" -a -z "$path" ]; then exit 0 fi +if [ -z "${utsname}" ]; then + utsname=${name} +fi + +# This follows a standard "resolver" convention that an FQDN must have +# at least two dots or it is considered a local relative host name. +# If it doesn't, append the dns domain name of the host system. +# +# This changes one significant behavior when running +# "lxc_create -n Container_Name" without using the +# --fqdn option. +# +# Old behavior: +# utsname and hostname = Container_Name +# New behavior: +# utsname and hostname = Container_Name.Domain_Name + +if [ $(expr "$utsname" : '.*\..*\.') = 0 ]; then + if [ -n "$(dnsdomainname)" ]; then + utsname=${utsname}.$(dnsdomainname) + fi +fi + needed_pkgs="" type yum >/dev/null 2>&1 if [ $? -ne 0 ]; then
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel