One of the great advantage for an OpenStack developer is the ease with which a dev environment can be created. I cannot say enough good things about devstack. Devstack is a tool that provides a very flexible way of creating development environment for OpenStack.
Devstack is very flexible and can be configured using simple config file (local.conf). Another advantage of running devstack based environment is that it hardly needs any special hardware prerequisite. A VM on your laptop is good enough to bring-up an all-in-one OpenStack environment, although a good amount of RAM and CPU for your VM will yield better results.
As a developer interested in OpenStack networking (Neutron) my interest lies mostly on the Neutron service and most of the time I find a lot of OpenStack services are not really required for my day-to-day activity. So I decided to tweak the my devstack config file to start only the minimum services, just enough to run networking service and save a little on my devstack VMs RAM and CPU requirement.
The OpenStack networking service itself depends on the common set of infrastructure services like the database server, rabbitmq etc. The following is the local.conf that I used for this purpose.
[[local|localrc]] ADMIN_PASSWORD=XXXXXXXXX DATABASE_PASSWORD=$ADMIN_PASSWORD RABBIT_PASSWORD=$ADMIN_PASSWORD SERVICE_PASSWORD=$ADMIN_PASSWORD GIT_BASE=https://git.openstack.org LOGFILE=/opt/stack/logs/stack.sh.log #Q_PLUGIN_EXTRA_CONF_PATH += '/etc/neutron/fwaas_driver.ini' RECLONE=yes LIBS_FROM_GIT=python-neutronclient disable_all_services enable_service rabbit enable_service database enable_service mysql enable_service infra enable_service keystone enable_service q-svc enable_service neutron
With the above local.conf only the network service and basic infrastructure are started by devstack. Here is a list of windows in my screen session
0$ shell 1$(L) key 2$(L) key-access 3$(L) q-svc 4$ code* 5-$ log
The Last two windows are manually created for browsing the code and looking at my custom logs.