Statistics
| Branch: | Tag: | Revision:

root / snf-image-helper / tasks / 50AssignHostname.in @ 473f4fa5

History | View | Annotate | Download (2.1 kB)

1 0a35a4ab Nikos Skalkotos
#! /bin/bash
2 54080484 Nikos Skalkotos
3 54080484 Nikos Skalkotos
### BEGIN TASK INFO
4 54080484 Nikos Skalkotos
# Provides:		AssignHostname
5 c349d1b3 Nikos Skalkotos
# RunBefore:            UmountImage
6 c349d1b3 Nikos Skalkotos
# RunAfter:		InstallUnattend
7 0cf9835d Nikos Skalkotos
# Short-Description:	Assign Hostname/Computer Name to the instance
8 6a95db10 Vangelis Koukis
### END TASK INFO
9 54080484 Nikos Skalkotos
10 54080484 Nikos Skalkotos
set -e
11 bad5ca1f Nikos Skalkotos
. "@commondir@/common.sh"
12 54080484 Nikos Skalkotos
13 54080484 Nikos Skalkotos
windows_hostname() {
14 bad5ca1f Nikos Skalkotos
    local target="$1"
15 bad5ca1f Nikos Skalkotos
    local password="$2"
16 54080484 Nikos Skalkotos
17 54080484 Nikos Skalkotos
    local tmp_unattend=`mktemp` || exit 1
18 bad5ca1f Nikos Skalkotos
    add_cleanup rm "$tmp_unattend"
19 54080484 Nikos Skalkotos
20 54080484 Nikos Skalkotos
    echo -n "Assigning new computer name..."
21 54080484 Nikos Skalkotos
22 54080484 Nikos Skalkotos
    local namespace="urn:schemas-microsoft-com:unattend"
23 54080484 Nikos Skalkotos
    
24 bad5ca1f Nikos Skalkotos
    "$XMLSTARLET" ed -N x=$namespace -u "/x:unattend/x:settings/x:component/x:ComputerName" -v "$password" "$target/Unattend.xml" > "$tmp_unattend"
25 54080484 Nikos Skalkotos
26 bad5ca1f Nikos Skalkotos
    cat "$tmp_unattend" > "$target/Unattend.xml"
27 54080484 Nikos Skalkotos
    echo done
28 54080484 Nikos Skalkotos
}
29 54080484 Nikos Skalkotos
30 54080484 Nikos Skalkotos
linux_hostname() {
31 bad5ca1f Nikos Skalkotos
    local target="$1"
32 bad5ca1f Nikos Skalkotos
    local hostname="$2"
33 54080484 Nikos Skalkotos
34 bad5ca1f Nikos Skalkotos
    local distro=$(get_base_distro "$target")
35 54080484 Nikos Skalkotos
36 54080484 Nikos Skalkotos
    case "$distro" in
37 54080484 Nikos Skalkotos
        debian)
38 bad5ca1f Nikos Skalkotos
            echo "$hostname" > "$target/etc/hostname";;
39 54080484 Nikos Skalkotos
        redhat)
40 bad5ca1f Nikos Skalkotos
            sed -ie "s/HOSTNAME=.*$/HOSTNAME=$hostname/g" "$target/etc/sysconfig/network";;
41 54080484 Nikos Skalkotos
        slackware|suse)
42 54080484 Nikos Skalkotos
        #local domain=$(sed -e 's/^[^\.]*//g' < /etc/HOSTNAME)
43 54080484 Nikos Skalkotos
        
44 54080484 Nikos Skalkotos
        # In slackware hostname and domain name are joined together. For now I
45 54080484 Nikos Skalkotos
        # will not retain the domain name.
46 54080484 Nikos Skalkotos
        
47 bad5ca1f Nikos Skalkotos
        echo "$hostname" > "${target}/etc/HOSTNAME";;
48 54080484 Nikos Skalkotos
    gentoo)
49 bad5ca1f Nikos Skalkotos
        sed -ie "s/\(\(HOSTNAME\)\|\(hostname\)\)=.*$/\1=\"$hostname\"/" "$target/etc/conf.d/hostname";;
50 54080484 Nikos Skalkotos
    esac
51 54080484 Nikos Skalkotos
52 54080484 Nikos Skalkotos
    # Some Linux distributions assign the hostname to 127.0.1.1 in order to be
53 54080484 Nikos Skalkotos
    # resolvable to an IP address. Lets replace this if found in /etc/hosts
54 bad5ca1f Nikos Skalkotos
    sed -ie "s/^[[:blank:]]*127\.0\.1\.1[[:blank:]].\+$/127.0.1.1\t$hostname/" "$target/etc/hosts"
55 54080484 Nikos Skalkotos
}
56 54080484 Nikos Skalkotos
57 8704ee47 Nikos Skalkotos
if [ ! -d "$SNF_IMAGE_TARGET" ]; then
58 8704ee47 Nikos Skalkotos
    log_error "Target dir: \`$SNF_IMAGE_TARGET' is missing"	
59 54080484 Nikos Skalkotos
fi
60 54080484 Nikos Skalkotos
61 54080484 Nikos Skalkotos
if [ -z "$SNF_IMAGE_HOSTNAME" ]; then
62 54080484 Nikos Skalkotos
    log_error "Hostname is missing"
63 54080484 Nikos Skalkotos
fi
64 54080484 Nikos Skalkotos
65 473f4fa5 Nikos Skalkotos
if [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "windows" ]; then
66 bad5ca1f Nikos Skalkotos
    windows_hostname "$SNF_IMAGE_TARGET" "$SNF_IMAGE_HOSTNAME"
67 473f4fa5 Nikos Skalkotos
elif [ "$SNF_IMAGE_PROPERTY_OSFAMILY" = "linux" ]; then
68 bad5ca1f Nikos Skalkotos
    linux_hostname "$SNF_IMAGE_TARGET" "$SNF_IMAGE_HOSTNAME"
69 54080484 Nikos Skalkotos
fi
70 54080484 Nikos Skalkotos
71 54080484 Nikos Skalkotos
cleanup
72 54080484 Nikos Skalkotos
trap - EXIT
73 54080484 Nikos Skalkotos
74 54080484 Nikos Skalkotos
exit 0
75 54080484 Nikos Skalkotos
76 54080484 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :