[lxc-devel] [RFC] [PATCH] lxc-fedora template - Add --fqdn option for utsname.

Serge Hallyn serge.hallyn at ubuntu.com
Thu May 23 15:41:57 UTC 2013


Quoting Michael H. Warfield (mhw at WittsEnd.com):
> 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 |  mhw at 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 <mhw at 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 at . 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

Is this definately what you want?  I realize 'fqdn' probably really
means legit, but I coudl see people saying

	lxc-create ... --fqdn n1.lxc --domainname lxc

and now they'll end up with n1.lxc.lxc as utsname, right?

> +    if [ -n "$(dnsdomainname)" ]; then
> +        utsname=${utsname}.$(dnsdomainname)
> +    fi
> +fi
> +
>  needed_pkgs=""
>  type yum >/dev/null 2>&1
>  if [ $? -ne 0 ]; then
> 



> ------------------------------------------------------------------------------
> 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel





More information about the lxc-devel mailing list