NOTE: These are my notes as I'm installing OpenStack. I'll come back later and re-write it to make it more understandable.

VirtualBox Setup

Network Layout

Management network (every OS Node needs an interface on this network):
10.10.10.0/24
Data network (for the virtual nodes to do their work):
10.20.20.0/24
API Network (for external control):
192.168.100.0

Global network settings for virtualbox

Management: vboxnet0, 10.10.10.1
Data: vboxnet1, 10.20.20.1
API: vboxnet2, 192.168.100.1

Controller setup

Name: OSControl0

echo "OSControl0" > /etc/hostname
hostname -F /etc/hostname

eth0: vboxnet0/10.10.10.11, eth1: vboxnet2/192.168.100.11, eth2: NAT (portforward 2211 to 22)
edited /etc/network/interfaces: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/controller/interfaces
edited /etc/hosts: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/controller/hosts

Neutron setup

Name: OSNet0

echo "OSNet0" > /etc/hostname
hostname -F /etc/hostname

eth0: vboxnet0/10.10.10.21, eth1: vboxnet1/10.20.20.21, eth2: vboxnet2/192.168.100.21, eth3: NAT (portforward 2221 to 22)
edited /etc/network/interfaces: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/network/interfaces
edited /etc/hosts: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/network/hosts

Nova setup

Name: OSNova0

echo "OSNova0" > /etc/hostname
hostname -F /etc/hostname

eth0: vboxnet0/10.10.10.101, eth1: vboxnet1/10.20.20.101, eth2: NAT (portforward 22101 to 22)
edited /etc/network/interfaces: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/compute/interfaces
edited /etc/hosts: see the sample at https://bitbucket.org/celttechie/openstacklab/raw/default/compute/hosts

Node prerequisite setup

NTP

installed NTP on all nodes: { apt-get install ntp
On Network and Nova nodes, removed all server references and added a single reference to the controller node in /etc/ntp.conf:

server OSControl0.management iburst

restarted the NTP service with service ntp restart then tested to make sure the nodes referenced the controller ntpq -c peers

MySQL

On the controller, ran apt-get install python-mysqldb mysql-server and gave a mysql root password.
edited /etc/mysql/my.cnf and replaced bind-address = 127.0.0.1 with

 bind-address            = 10.10.10.11

#added for openstack
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

then, service mysql restart and mysql_secure_installation

On the other nodes, installed: apt-get install python-mysqld so they will be able to access the database.

RabbitMQ

installed on the controller: apt-get install rabbitmq-server
Then, changed the "guest" password: rabbitmqctl change_password guest SOMEPASSWORD

Keystone Install

Installed keystone following the instructions here: http://docs.openstack.org/trunk/install-guide/install/apt/content/ch_keystone.html Just had to change controller to OSControl0 when using urls.

OpenStack Clients Install

Installed the clients on my Ubuntu laptop (the VirtualBox host) using the information here: http://docs.openstack.org/trunk/install-guide/install/apt/content/ch_clients.html
Added entries to the /etc/hosts file to the management interfaces of each of the nodes.
created admin-openrc.sh and demo-openrc.sh files.

( I found that I had had used the wrong password when I set up the demo user in keystone. The command to fix that was source ~/admin-openrc.sh; keystone user-password-update --pass somedemopass123 demo

Installing Image Service (Glance)

running through the install guide for installing glance. When I got to su -s /bin/sh -c "glance-manage db_sync" glance
I got an error:

2014-06-02 20:19:09.939 10335 CRITICAL glance [-] ValueError: invalid literal for int() with base 10: ''

when I did glance-manage db_sync on its own I got the same error. I ran glance-manage --help and saw that there was a verbose switch, so I tried that: glance-manage -v db_sync
This gave me a stack trace, and I found that the empty int() was given a variable name "port". SQLAlchemy was trying to set up a connection to the mysql server and had an empty port variable. I thought this was odd and went back to look at my settings for the database connection string just in case I missed something. It turns out I had accidentally added a colon after the server name in the connection string, then followed it with the forward slash. This is what gave me an empty port.