From 2e3924427ebb4401db31e1cb6f3f2c05a2acbe34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Jourdois?= Date: Sun, 18 Jul 2010 16:12:32 +0200 Subject: [PATCH] Use Dom0's resolv.conf unless nameserver is set. If nameserver config option is not set (default value), copy Dom0's /etc/resolv.conf on guest. Provide a role to show how to customize /etc/resolv.conf in guest. --- bin/xen-create-image | 8 ++++- etc/xen-tools.conf | 11 ++++++- hooks/centos-4/40-setup-networking | 2 ++ hooks/centos-5/40-setup-networking | 2 ++ hooks/dapper/40-setup-networking | 2 ++ hooks/debian/40-setup-networking | 2 ++ hooks/edgy/40-setup-networking | 2 ++ hooks/fedora-core-6/40-setup-networking | 2 ++ hooks/gentoo/40-setup-networking | 2 ++ hooks/intrepid/40-setup-networking | 2 ++ hooks/karmic/40-setup-networking | 2 ++ roles/resolv | 44 +++++++++++++++++++++++++ 12 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 roles/resolv diff --git a/bin/xen-create-image b/bin/xen-create-image index 2cd7cbb..bc78667 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -237,6 +237,8 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH. --nameserver="123.456.789.ABC 123.456.789.DEF" Setup the nameserver of the machine, multiple space separated nameservers are allowed. + If not provided, Dom0's /etc/resolv.conf will be copied + to guest. --bridge=brname Optionally, set a specific bridge for the new instance. @@ -377,7 +379,6 @@ Create a Xen configuration file in so that xm can start the new domain. gateway = 192.168.1.1 broadcast = 192.168.1.255 netmask = 255.255.255.0 - nameserver = 192.168.1.1 # @@ -1407,6 +1408,11 @@ sub setupDefaultOptions $CONFIG{ 'mount_fs_xfs' } = '-t xfs'; $CONFIG{ 'mount_fs_reiserfs' } = '-t reiserfs'; + # + # Network options. + # + $CONFIG{ 'nameserver' } = ''; + } diff --git a/etc/xen-tools.conf b/etc/xen-tools.conf index 89206b2..1fa1e58 100644 --- a/etc/xen-tools.conf +++ b/etc/xen-tools.conf @@ -163,12 +163,21 @@ image = sparse # Specify sparse vs. full disk images. # gateway = 192.168.1.1 # netmask = 255.255.255.0 # broadcast = 192.168.1.255 -# nameserver = 192.168.1.1 # # Uncomment this if you wish the images to use DHCP # # dhcp = 1 +# +# Uncomment and adjust this setting if you wish to give your new +# instances a specific nameserver. +# +# By default, nameserver is not set, and Dom0's /etc/resolv.conf will +# be copied to guest. +# +# nameserver = 192.168.1.1 +# + # # Setup bridge name for host vif. Usefull if you use bridged networking # for guests. diff --git a/hooks/centos-4/40-setup-networking b/hooks/centos-4/40-setup-networking index d0aef53..992cd3d 100755 --- a/hooks/centos-4/40-setup-networking +++ b/hooks/centos-4/40-setup-networking @@ -83,6 +83,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi else cat <${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0 diff --git a/hooks/centos-5/40-setup-networking b/hooks/centos-5/40-setup-networking index d0aef53..992cd3d 100755 --- a/hooks/centos-5/40-setup-networking +++ b/hooks/centos-5/40-setup-networking @@ -83,6 +83,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi else cat <${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0 diff --git a/hooks/dapper/40-setup-networking b/hooks/dapper/40-setup-networking index db99870..f399a44 100755 --- a/hooks/dapper/40-setup-networking +++ b/hooks/dapper/40-setup-networking @@ -123,6 +123,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/hooks/debian/40-setup-networking b/hooks/debian/40-setup-networking index 7a06782..b5f456f 100755 --- a/hooks/debian/40-setup-networking +++ b/hooks/debian/40-setup-networking @@ -143,6 +143,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/hooks/edgy/40-setup-networking b/hooks/edgy/40-setup-networking index 957f58f..7441a65 100755 --- a/hooks/edgy/40-setup-networking +++ b/hooks/edgy/40-setup-networking @@ -132,6 +132,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/hooks/fedora-core-6/40-setup-networking b/hooks/fedora-core-6/40-setup-networking index d0aef53..992cd3d 100755 --- a/hooks/fedora-core-6/40-setup-networking +++ b/hooks/fedora-core-6/40-setup-networking @@ -83,6 +83,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi else cat <${prefix}/etc/sysconfig/network-scripts/ifcfg-eth0 diff --git a/hooks/gentoo/40-setup-networking b/hooks/gentoo/40-setup-networking index d061794..b2b452d 100755 --- a/hooks/gentoo/40-setup-networking +++ b/hooks/gentoo/40-setup-networking @@ -107,6 +107,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/hooks/intrepid/40-setup-networking b/hooks/intrepid/40-setup-networking index 957f58f..7441a65 100755 --- a/hooks/intrepid/40-setup-networking +++ b/hooks/intrepid/40-setup-networking @@ -132,6 +132,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/hooks/karmic/40-setup-networking b/hooks/karmic/40-setup-networking index 957f58f..7441a65 100755 --- a/hooks/karmic/40-setup-networking +++ b/hooks/karmic/40-setup-networking @@ -132,6 +132,8 @@ E_O_STATIC for ns in $nameserver; do echo "nameserver $ns" >>${prefix}/etc/resolv.conf.old done + else + cp /etc/resolv.conf ${prefix}/etc/resolv.conf.old fi } diff --git a/roles/resolv b/roles/resolv new file mode 100644 index 0000000..fe5e41a --- /dev/null +++ b/roles/resolv @@ -0,0 +1,44 @@ +#!/bin/sh +# +# This role helps to customize guest's /etc/resolv.conf +# + +prefix=$1 + +# +# Source our common functions - this will let us install a Debian package. +# +if [ -e /usr/lib/xen-tools/common.sh ]; then + . /usr/lib/xen-tools/common.sh +else + echo "Installation problem" +fi + + +# +# Log our start +# +logMessage Script $0 starting + + +# +# WARNING : +# +# resolv.conf is backed up as resolv.conf.old during roles execution to +# permit the chrooted guest to be able to resolve during installation. +# Use resolv.conf.old name during hooks, it will be correctly renamed +# after hooks execution +# + +# +# Create Guest's resolv.conf as resolv.conf.old (see WARNING before) : +# +cat <${prefix}/etc/resolv.conf.old +nameserver 192.168.1.1 +#search domain.tld +RESOLV_CONF_EOF + +# +# Log our finish +# +logMessage Script $0 finished