]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
hooks/ubuntu-cloud-prep: add hostname to meta-data
authorScott Moser <smoser@ubuntu.com>
Thu, 22 Aug 2013 19:38:48 +0000 (15:38 -0400)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Thu, 22 Aug 2013 20:29:06 +0000 (15:29 -0500)
prior to my enabling of the clone hook, the setting of the hostname
was being done by writing to /etc/hostname.  Instead of relying on that
we're now writing 'local-hostname' into the metadata for the instance.

cloud-init then reads this and sets the hostname properly.

We are also writing /etc/hostname with the new hostname explicitly.  This is
useful/necessary because on network bringup of eth0, dhclient will submit its
hosname.  The updating done by cloud-init occurs to late, and thus
the dhcp request goes out with the un-configured hostname and dns doens't
work correctly.

Signed-off-by: Scott Moser <smoser@ubuntu.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
hooks/ubuntu-cloud-prep

index c4c362003e22d32f8d2fc3c970f5674e175362b7..f0b30ea60523eed93c65c0fc9da52eff5710ae98 100755 (executable)
@@ -49,8 +49,8 @@ prep() {
     fi
 
     local cur="" next=""
-    local userdata="" hostid="" authkey="" locales=1 cloud=0 name=""
-    local create_etc_init=0
+    local userdata="" hostid="" authkey="" locales=1 cloud=0
+    local create_etc_init=0 name="ubuntucloud-lxc"
 
     while [ $# -ne 0 ]; do
         cur="$1"; next="$2";
@@ -97,6 +97,10 @@ prep() {
 
     local seed_d=""
     seed_d="$root_d/var/lib/cloud/seed/nocloud-net"
+
+    echo "$name" > "$root_d/etc/hostname" ||
+        { error "failed to write /etc/hostname"; return 1; }
+
     if [ $cloud -eq 1 ]; then
         debug 1 "--cloud provided, not modifying seed in '$seed_d'"
     else
@@ -110,6 +114,9 @@ prep() {
         echo "instance-id: lxc-$hostid" > "$seed_d/meta-data" ||
             { error "failed to write to $seed_d/meta-data"; return 1; }
 
+        echo "local-hostname: $name" >> "$seed_d/meta-data" ||
+            { error "failed to write to $seed_d/meta-data"; return 1; }
+
         if [ -n "$authkey" ]; then
             {
                 echo "public-keys:" &&