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:
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.