Updated DevStack OpenDaylight VM Image for OpenStack
Here is an updated Fedora 20 image for building OpenStack Icehouse and OpenDaylight. ODL is now merged into the upcoming OpenStack Icehouse release so now you can install ODL directly from OpenStack trunk. The updated image comes from Kyle Mestery who was primarily responsible for getting the OpenStack/OpenDaylight merge and navigating the process. Thanks also to Andrew Grimberg from the Linux Foundation with assisting with getting testing setup and all the code contributors from the community.
We have some cool new stuff that we are working on for the Helium release that leverages more of the killer work from the Open vSwitch community that we are integrating into the ODL (Network Virtualization) OVSDB plugin along with integrating some services into the network pipeline of OVS. We see this as worthwhile in bringing some coherency to the network operations of Neutron by unifying some of the OpenStack services into the application aware, flow forwarding pipeline.
Download the VM and Follow the Existing Instructions
Download the latest image from the OpenDaylight Wiki. It is around 2.28GB compressed. It has all OpenStack dependancies taken care of. The only changes required are copying the compute local conf for the compute node and replacing the IP addresses as indicated in the file where we put
Updated DevStack OpenDaylight VM Image for OpenStack IceHouse
Use the existing instructions from the last post as that has all stayed the same except now the controller is downloaded for you as part of the DevStack build. If you want to use an external controller see Kyle’s blog post below. It is simply a flag in the local.conf build pointing to the external API/URI.
There is one error you will hit the first time you ./stack.sh with the volume groups. The work around is to simply ./unstack.sh and ./stack.sh again to resolve them. The error appears as follows:
1 2 3 4 5 6 7 8 |
2014-05-26 16:18:57.027 | + sudo vgs stack-volumes 2014-05-26 16:18:57.041 | Volume group "stack-volumes" not found 2014-05-26 16:18:57.044 | Skipping volume group stack-volumes 2014-05-26 16:18:57.046 | + sudo vgcreate stack-volumes /dev/loop0 2014-05-26 16:18:57.053 | A volume group called stack-volumes already exists. 2014-05-26 16:18:57.055 | + exit_trap |
The other difference from the original post is that the ML2 update will actually download the ODL virtualization build for you and spin it up on the OpenStack controller instance. If you want to run ODL in a separate VM/instance, you can setup your local.conf to do so. Below is an example OpenStack controller and compute local.conf I use:
Controller local.conf: OpenStack Controller (192.168.1.49) – OpenDaylight Controller (192.168.1.47)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
[[local|localrc]] LOGFILE=stack.sh.log SCREEN_LOGDIR=/opt/stack/data/log LOG_COLOR=False OFFLINE=True #RECLONE=yes # Only uncomment the below two lines if you are running on Fedora disable_service rabbit enable_service qpid #disable_service n-cpu enable_service n-cpu enable_service n-cond disable_service n-net enable_service q-svc enable_service q-dhcp enable_service q-l3 enable_service q-meta enable_service quantum enable_service tempest Q_HOST=$SERVICE_HOST HOST_IP=192.168.1.49 Q_PLUGIN=ml2 Q_ML2_PLUGIN_MECHANISM_DRIVERS=opendaylight,logger # This tells DevStack to look for ODL running on an external host ODL_MGR_IP=192.168.1.47 ENABLE_TENANT_TUNNELS=True enable_service odl-server odl-compute ODL_BOOT_WAIT=20 VNCSERVER_PROXYCLIENT_ADDRESS=192.168.56.135 VNCSERVER_LISTEN=0.0.0.0 HOST_NAME=fedora-odl-1 SERVICE_HOST_NAME=${HOST_NAME} SERVICE_HOST=192.168.1.49 #FLOATING_RANGE=192.168.210.0/24 #PUBLIC_NETWORK_GATEWAY=192.168.75.254 MYSQL_HOST=$SERVICE_HOST RABBIT_HOST=$SERVICE_HOST GLANCE_HOSTPORT=$SERVICE_HOST:9292 KEYSTONE_AUTH_HOST=$SERVICE_HOST KEYSTONE_SERVICE_HOST=$SERVICE_HOST MYSQL_PASSWORD=mysql RABBIT_PASSWORD=rabbit QPID_PASSWORD=rabbit SERVICE_TOKEN=service SERVICE_PASSWORD=admin ADMIN_PASSWORD=admin [[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]] [agent] minimize_polling=True [ml2_odl] url=http://192.168.1.47:8080/controller/nb/v2/neutron username=admin password=admin |
Controller local.conf: OpenStack Compute (192.168.1.50) – OpenDaylight Controller (192.168.1.47)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
[[local|localrc]] LOGFILE=stack.sh.log LOG_COLOR=True SCREEN_LOGDIR=/opt/stack/data/log OFFLINE=true #RECLONE=yes enable_service odl-compute ODL_MGR_IP=192.168.1.47 disable_all_services enable_service nova n-cpu quantum n-novnc qpid odl-compute HOST_NAME=fedora-odl-2 HOST_IP=192.168.1.50 SERVICE_HOST_NAME=fedora-odl-1 SERVICE_HOST=192.168.1.49 VNCSERVER_PROXYCLIENT_ADDRESS=192.168.1.49 VNCSERVER_LISTEN=0.0.0.0 FLOATING_RANGE=192.168.210.0/24 Q_PLUGIN=ml2 Q_ML2_PLUGIN_MECHANISM_DRIVERS=opendaylight,logger ENABLE_TENANT_TUNNELS=True Q_HOST=$SERVICE_HOST MYSQL_HOST=$SERVICE_HOST RABBIT_HOST=$SERVICE_HOST GLANCE_HOSTPORT=$SERVICE_HOST:9292 KEYSTONE_AUTH_HOST=$SERVICE_HOST KEYSTONE_SERVICE_HOST=$SERVICE_HOST MYSQL_PASSWORD=mysql RABBIT_PASSWORD=rabbit QPID_PASSWORD=rabbit SERVICE_TOKEN=service SERVICE_PASSWORD=admin ADMIN_PASSWORD=admin [[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]] [agent] minimize_polling=True [ml2_odl] url=http://192.168.1.47:8080/controller/nb/v2/neutron username=admin password=admin |
OpenDaylight OpenStack Integration with DevStack on Fedora →
See Kyle’s post for details on the local.conf configurations and more SiliconLoon goodness at:
OpenDaylight Integration with OpenStack has merged into Icehouse! →
Getting Help with the OpenStack Configuration
If you have any issues you can get assistance via the OVSDB plugin listserv or check the archives here. For realtime assistance ping myself in IRC or studs like, Madhu Venugopal, Kyle Mestery, Thomas Bachman, Dave Tucker or any of the other freakishly passionate community in the IRC channel #opendaylight-ovsdb on irc.freenode.net.
Thanks for stopping by!
Hi BRENT,
When I started controller node and ran “$ ./stack.sh”, I would always get following output:
2014-05-19 05:52:36.028 | 2014-05-19 05:52:36.027 INFO 021_add_default_quota_class [-] Added default quota class data into the DB.
2014-05-19 05:52:36.032 | 2014-05-19 05:52:36.029 INFO migrate.versioning.api [-] done
2014-05-19 05:52:36.034 | 2014-05-19 05:52:36.029 INFO migrate.versioning.api [-] 21 -> 22…
2014-05-19 05:52:36.047 | 2014-05-19 05:52:36.042 INFO migrate.versioning.api [-] done
2014-05-19 05:52:36.084 | + is_service_enabled c-vol
2014-05-19 05:52:36.092 | + return 0
2014-05-19 05:52:36.094 | + create_cinder_volume_group
2014-05-19 05:52:36.097 | + sudo vgs stack-volumes
2014-05-19 05:52:36.099 | Volume group “stack-volumes” not found
2014-05-19 05:52:36.100 | Skipping volume group stack-volumes
2014-05-19 05:52:36.102 | + ‘[‘ -z ” ‘]’
2014-05-19 05:52:36.104 | + [[ -f /opt/stack/data/stack-volumes-backing-file ]]
2014-05-19 05:52:36.105 | ++ sudo losetup -f –show /opt/stack/data/stack-volumes-backing-file
2014-05-19 05:52:36.113 | + DEV=/dev/loop0
2014-05-19 05:52:36.117 | + sudo vgs stack-volumes
2014-05-19 05:52:36.131 | Volume group “stack-volumes” not found
2014-05-19 05:52:36.134 | Skipping volume group stack-volumes
2014-05-19 05:52:36.136 | + sudo vgcreate stack-volumes /dev/loop0
[odl@fedora-odl-1 devstack]$ 2014-05-19 05:52:36.142 | A volume group called stack-volumes already exists.
2014-05-19 05:52:36.144 | + exit_trap
2014-05-19 05:52:36.146 | + local r=5
2014-05-19 05:52:36.148 | ++ jobs -p
2014-05-19 05:52:36.150 | + jobs=
2014-05-19 05:52:36.153 | + [[ -n ” ]]
2014-05-19 05:52:36.155 | + exit 5
Would you please tell me what was wrong with it?
BR/Qing Zhong
Hi BR, the image has a volume issue. It will fail the first time (blame Mestery 🙂 If you just ./unstack.sh and ./stack.sh again, it will work the 2nd time.
I think I used something like this to resolve it if you want to try and get it to work the first stack with:
sudo rm -rf /opt/stack/data/stack-volumes-backing-file
sudo vgchange -a n stack-volumes && sudo vgremove stack-volumes
Hi BRENT,
After I deleted some files in my Macbook and got more free disk volume, it was all fine now. Thanks anyway.
BR/Qing Zhong
Thanks for the followup BR!
-Brent
Hi Brent,
I am new to opendaylight, java, and maven. I followed your tutorial regarding importing opendaylight into eclipse. I did every thing as you described in the video and as described in opendaylight wiki. I built it using maven, and I installed all required plugins for eclipse. However, The only directory that was imported is distribution.opendaylight. I do not know where is the problem. Could you please help me solving this issue.
The instance launched from fedora-odl-2 cannot get IP through DHCP. How do I troubleshoot? I use the following command to launch the instance
nova boot –flavor m1.nano –image $(nova image-list | grep grep ‘uec ‘ | awk ‘{print $2}’) –nic net-id=$(neutron net-list | grep private | awk ‘{print $2}’) vm2 –availability_zone=nova:fedora-odl-2
PS. I use qemu to start both fedora-odl VMs instead of VirtualBox.
Thanks.
Hi guys, apologies I missed these. If you would email the ODL listserv https://lists.opendaylight.org/mailman/listinfo/ovsdb-dev with your issues I would appreciate it as I can’t keep up with both lol. You can also ping us in the #opendaylight-ovsdb channel irc.freenode.net for realtime assistance.
Gist/Pastebin or attach a text file with the output of the following would be helpful:
. ./openrc admin admin
nova hypervisor-list
nova-manage service list
nova list
sudo ovs-vsctl show
sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
sudo ovsdb-client dump