111 lines
2.7 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/bash
#set -o xtrace
#Author: Naveen Joy: najoy@cisco.com
#Usage: boot-vm <vm-name> <network-name> [<availability-zon>] [<fixed_ip>]
###Program Variables###
#Cirros Image:
#image=02fffc39-807f-4890-bdff-48d665cca290
#Ubuntu 14.04 Image
image=ff03d4f4-f68a-4a32-9a8e-ce3f142d8a34
flavor=2
devstack_dir=/home/demo/devstack
source $devstack_dir/openrc admin admin
key_name=demo_key
#######################
if [[ $# < 2 ]]; then
echo "Usage $0 <vm-name> <network> [<availability-zone>] [<fixed_ip>]"
echo "When fixed_ip is null, DHCP is used.."
echo "When the availability-zone is null, the default AZ=nova is used"
exit 1
fi
vm_name=${1:-}
net_name=${2:-}
az=${3:-"nova"}
fixed_ip=${4:-}
if [[ ${az} = "nova" ]] && [[ -n ${fixed_ip} ]]; then
gateway=10.0.0.101
else
gateway=10.0.0.100
fi
function make-user-data-fixed-ip() {
local -r fixed_ip=$1
local -r netmask="255.255.255.0"
local -r gateway=$2
read -r -d '' userdata << EOF
#cloud-config
bootcmd:
- ifconfig eth0 ${fixed_ip}
- ifconfig eth0 netmask ${netmask}
- route add default gw ${gateway}
- ifconfig eth0 up
users:
- default
- name: ubuntu
gecos: ubuntu
ssh_pwauth: True
chpasswd:
list: |
root:password
cloud-user:atomic
ubuntu:ubuntu
admin:ubuntu
expire: False
write_files:
- content: |
auto eth0
iface eth0 inet static
address ${fixed_ip}
netmask ${netmask}
gateway ${gateway}
dns-nameservers 171.68.226.120 171.70.168.183
dns-search cisco.com
path: /etc/network/interfaces.d/eth0.cfg
permissions: '0644'
runcmd:
- ifconfig eth0 down
- ifconfig eth0 up
EOF
}
function make-user-data() {
read -r -d '' userdata << EOF
#cloud-config
users:
- default
- name: ubuntu
gecos: ubuntu
ssh_pwauth: True
chpasswd:
list: |
root:password
cloud-user:atomic
ubuntu:ubuntu
admin:ubuntu
expire: False
EOF
}
if [[ -z "${fixed_ip}" ]]; then
echo "Booting with DHCP - VM:${vm_name}, image:${image}, flavor:${flavor}, network:${net_name}"
make-user-data
echo "${userdata}" > userdata
nova boot --image ${image} --flavor ${flavor} --nic net-name=${net_name} \
--user-data userdata --key-name ${key_name} --availability-zone ${az} ${vm_name}
else
echo "Booting with Static IP - VM:${vm_name}, IP:${fixed_ip}, image:${image}, flavor:${flavor}, network:${net_name} and AZ:${az}"
make-user-data-fixed-ip "${fixed_ip}" "${gateway}"
echo "${userdata}" > userdata
nova boot --image ${image} --flavor ${flavor} --nic net-name=${net_name},v4-fixed-ip=${fixed_ip} \
--user-data userdata --key-name ${key_name} --availability-zone ${az} ${vm_name}
fi