[xen-tools-dev] [PATCH 12/13] Use Dom0's resolv.conf unless nameserver is set.
Stéphane Jourdois
sjourdois at gmail.com
Sun Jul 18 18:23:07 CEST 2010
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,13 +163,22 @@ 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 <<E_O_DHCP >${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 <<E_O_DHCP >${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 <<E_O_DHCP >${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 <<RESOLV_CONF_EOF >${prefix}/etc/resolv.conf.old
+nameserver 192.168.1.1
+#search domain.tld
+RESOLV_CONF_EOF
+
+#
+# Log our finish
+#
+logMessage Script $0 finished
--
1.7.1.1
More information about the xen-tools-dev
mailing list