From 24fc36eb502a8a9106135fae5ec6ed899e8b939d Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Thu, 17 Sep 2009 15:43:23 +0000 Subject: [PATCH] Added openSUSE context scripts git-svn-id: http://svn.opennebula.org/one/trunk@795 3034c82b-c49b-4eb3-8279-a7acafdc01c0 --- share/scripts/openSUSE/context/init.sh | 36 +++++ share/scripts/openSUSE/context/openSUSE.one | 19 +++ .../scripts/openSUSE/net-vmcontext/vmcontext | 124 ++++++++++++++++++ 3 files changed, 179 insertions(+) create mode 100644 share/scripts/openSUSE/context/init.sh create mode 100644 share/scripts/openSUSE/context/openSUSE.one create mode 100755 share/scripts/openSUSE/net-vmcontext/vmcontext diff --git a/share/scripts/openSUSE/context/init.sh b/share/scripts/openSUSE/context/init.sh new file mode 100644 index 0000000000..69f130ad97 --- /dev/null +++ b/share/scripts/openSUSE/context/init.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +if [ -f /mnt/context.sh ] +then + . /mnt/context.sh +fi + + +hostname $HOSTNAME +sed -i "s/openSUSE/$HOSTNAME/g" /etc/hosts +echo $HOSTNAME > /etc/HOSTNAME + +if [ -n "$IP_PUBLIC" ]; then + ifconfig eth0 $IP_PUBLIC +fi + +if [ -n "$NETMASK" ]; then + ifconfig eth0 netmask $NETMASK +fi + + +if [ -f /mnt/$ROOT_PUBKEY ]; then + mkdir -p /root/.ssh + cat /mnt/$ROOT_PUBKEY >> /root/.ssh/authorized_keys + chmod -R 600 /root/.ssh/ +fi + +if [ -n "$USERNAME" ]; then + useradd -m $USERNAME + if [ -f /mnt/$USER_PUBKEY ]; then + mkdir -p /home/$USERNAME/.ssh/ + cat /mnt/$USER_PUBKEY >> /home/$USERNAME/.ssh/authorized_keys + chown -R $USERNAME:users /home/$USERNAME/.ssh + chmod -R 600 /home/$USERNAME/.ssh/authorized_keys + fi +fi diff --git a/share/scripts/openSUSE/context/openSUSE.one b/share/scripts/openSUSE/context/openSUSE.one new file mode 100644 index 0000000000..721d1776b6 --- /dev/null +++ b/share/scripts/openSUSE/context/openSUSE.one @@ -0,0 +1,19 @@ +NAME = opensuse11 +CPU = 0.5 +MEMORY = 400 +DISK = [ + source = "/home/srv/cloud/images/openSUSE-11.1-v2.img", + target = "hda", + readonly = "no" ] + +NIC = [ NETWORK = "Red Virtual" ] + +CONTEXT = [ + hostname = "$NAME", + ip_public = "192.168.0.5", + files = "/home/jaime/one-templates/openSUSE/init.sh /home/jaime/one-templates/openSUSE/id_dsa.pub", + target = "hdc", + root_pubkey = "id_dsa.pub", + username = "jaime", + user_pubkey = "id_dsa.pub" +] diff --git a/share/scripts/openSUSE/net-vmcontext/vmcontext b/share/scripts/openSUSE/net-vmcontext/vmcontext new file mode 100755 index 0000000000..3e691bfc73 --- /dev/null +++ b/share/scripts/openSUSE/net-vmcontext/vmcontext @@ -0,0 +1,124 @@ +#!/bin/bash +# +# chkconfig: 2345 10 90 +# description: network reconfigure +# +# -------------------------------------------------------------------------- # +# Copyright 2002-2009, Distributed Systems Architecture Group, Universidad # +# Complutense de Madrid (dsa-research.org) # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # + +# Gets IP address from a given MAC +mac2ip() { + mac=$1 + + let ip_a=0x`echo $mac | cut -d: -f 3` + let ip_b=0x`echo $mac | cut -d: -f 4` + let ip_c=0x`echo $mac | cut -d: -f 5` + let ip_d=0x`echo $mac | cut -d: -f 6` + + ip="$ip_a.$ip_b.$ip_c.$ip_d" + + echo $ip +} + +# Gets the network part of an IP +get_network() { + IP=$1 + + echo $IP | cut -d'.' -f1,2,3 +} + +get_interfaces() { + IFCMD="/sbin/ifconfig -a" + + $IFCMD | grep ^eth | sed 's/ *Link encap:Ethernet.*HWaddr /-/g' +} + +get_dev() { + echo $1 | cut -d'-' -f 1 +} + +get_mac() { + echo $1 | cut -d'-' -f 2 +} + +gen_hosts() { + NETWORK=$1 + echo "127.0.0.1 localhost" + for n in `seq -w 01 99`; do + n2=`echo $n | sed 's/^0*//'` + echo ${NETWORK}.$n2 cluster${n} + done +} + +gen_exports() { + NETWORK=$1 + echo "/images ${NETWORK}.0/255.255.255.0(rw,async,no_subtree_check)" +} + +gen_hostname() { + MAC=$1 + NUM=`mac2ip $MAC | cut -d'.' -f4` + NUM2=`echo 000000$NUM | sed 's/.*\(..\)/\1/'` + echo cluster$NUM2 +} + +gen_interface() { + DEV_MAC=$1 + DEV=`get_dev $DEV_MAC` + MAC=`get_mac $DEV_MAC` + IP=`mac2ip $MAC` + NETWORK=`get_network $IP` + +cat < /etc/sysconfig/network/ifcfg-${DEV} + if [ $DEV == "eth0" ]; then + MAC=`get_mac $DEV_MAC` + IP=`mac2ip $MAC` + NETWORK=`get_network $IP` + echo "default $NETWORK.1" > /etc/sysconfig/network/routes + fi +done + +# gen_hosts $NETWORK > /etc/hosts +# gen_exports $NETWORK > /etc/exports +# gen_hostname $MAC > /etc/hostname + +#ifdown $DEV +#ifup $DEV