Here you go. Keep in mind that I structured them more like their own install guide. Basic tweaks were integrated into the steps, but larger issues are noted at the bottom under the "notes" section.
Best Regards, Solly Ross ----- Original Message ----- From: "Qing He" <qing...@radisys.com> To: "Solly Ross" <sr...@redhat.com> Cc: "OpenStack Development Mailing List" <openstack-dev@lists.openstack.org> Sent: Monday, September 16, 2013 1:37:02 PM Subject: RE: Issues with IPTables Solly, It would be great if you can share the notes. The reason I asked the question is that I'm trying to decide If I need to allocate development time in installation following the installation guide. The usual wisdom is that installation with detailed instruction would "take no time". However, your experience and mine showed the contrary. I have not finished mine following the Ubuntu installation guide. Thus, I was interested in knowing your effort spent on it so that I would know that it was not just me who had issues with the supposedly "plug and play" installation with the packages. Thanks, Qing -----Original Message----- From: Solly Ross [mailto:sr...@redhat.com] Sent: Monday, September 16, 2013 10:24 AM To: Qing He Cc: OpenStack Development Mailing List Subject: Re: Issues with IPTables Quite a while. RDO's documentation for configuring multinode Packstack with Neutron was a bit lacking, so after attempting to get that working for a while, I switched to following the Basic Install Guide (http://docs.openstack.org/trunk/basic-install/content/basic-install_intro.html). I also found the basic install guide catered for Fedora (http://docs.openstack.org/trunk/basic-install/yum/content/basic-install_intro.html), but that is sorely lacking in the actual instruction department, and is missing several steps. If you would like, I can attach the raw draft of my notes. Eventually, some of the changes or clairifications should make their way into the actual OpenStack Docs. Best Regards, Solly Ross ----- Original Message ----- From: "Qing He" <qing...@radisys.com> To: sr...@redhat.com Sent: Monday, September 16, 2013 1:14:42 PM Subject: RE: Issues with IPTables Solly, A side question, how long did this process take you? Thanks, Qing -----Original Message----- From: Solly Ross [mailto:sr...@redhat.com] Sent: Monday, September 16, 2013 10:11 AM To: OpenStack Development Mailing List Subject: [openstack-dev] Issues with IPTables In a enfort to improve/verify the Openstack Documentation with regards to RHEL and Fedora, I've been attempting to follow the basic install guides. I've managed to create a working installation and set of instructions. However, to do so I needed to disable the Neutron IPTables firewall, as it was blocking non-VM traffic. Namely, it was blocking the GRE packets being used by Neutron. Did I miss something, or is this a bug? Best Regards, Solly Ross _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
Intro ===== We will be following the basic install guide at http://docs.openstack.org/trunk/basic-install/. Layout ====== We have three networks: * vmnet10 (NAT, 192.168.0.x) -- management network * vmnet11 (host-only, 10.10.10.x) -- data network * vmnet12 (NAT, 192.168.230.x) -- "external"/API network All networks have x.x.x.1 assigned as the host's IP, and NAT networks have x.x.x.2 set as the default gateway/NAT box. For this reason, we will start all IPs at x.x.x.3 instead of x.x.x.1 (just add 2 to every IP in the guide) controller.rdo-test ------------------- * eth0: 192.168.0.3 (mgmt) * eth1: 129.168.230.7 (ext) compute.rdo-test ---------------- * eth0: 192.168.0.5 (mgmt) * eth1: 10.10.10.4 (data) network.rdo-test ---------------- * eth0: 192.168.0.4 (mgmt) * eth1: 10.10.10.3 (data) * eth2: 192.168.230.8 (ext) Setup ===== NOTE: make sure that the outside network is reachable (for example, in our VMWare setup, add `DNS1=192.168.0.2` and `GATEWAY=192.168.0.2` to /etc/sysconfig/network-scripts/ifcfg-eth0) Controller Node (controller.rdo-test) ------------------------------------- 1. Add the repositories: 1. `yum-config-manager --add-repo http://repos.fedorapeople.org/repos/openstack/openstack-trunk/el6-openstack-trunk.repo` (RDO) 2. `yum install -y http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm` (EPEL) 2. Update to grab the new kernel, and reboot to use it `yum -y update && shutdown -r now` 3. Edit the network scripts to contain the correct lines: `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth{0,1}` 1. `ONBOOT=yes` 2. `NETMASK=255.255.255.0` 3. `GATEWAY=x.x.x.2` (replace the `x.x.x` with the appropriate prefix) 4. `BOOTPROTO=none` 5. `IPADDR=[SEE LAYOUT SECTION]` 4. Edit sysctl.conf to disable route verification `$EDITOR /etc/sysctl.conf` 1. `net.ipv4.conf.all.rp_filter = 0` 2. `et.ipv4.conf.default.rp_filter = 0` 5. restart networking `service network restart` 6. Edit hosts file to contain other hosts `$EDITOR /etc/hosts` 1. `192.168.0.3 controller controller.rdo-test` 2. `192.168.0.5 compute compute.rdo-test` 3. `192.168.0.4 network network.rdo-test` 7. Install NTP and configure (?) (skipped for now) `yum -y install ntp` 8. Install MySQL `yum -y install mysql-server python-mysqldb` 9. Allow connections from anywhere on the network (not needed on RHEL 6.4) `sed -i 's/127.0.0.1/0.0.0.0/g' /etc/my.cnf` 10. Run the setup for MySQL `/usr/bin/mysql_secure_installation` (set root pw to something (we will use 'mysqlpw`), allow root access from non-localhost) 10. Create the DBs, users, and rights: 1. `mysql -u root --password=mysqlpw` 2. `CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.3' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.4' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'192.168.0.5' \ IDENTIFIED BY 'password'; CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ IDENTIFIED BY 'password'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \ IDENTIFIED BY 'password'; CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'password'; CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'192.168.0.4' \ IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'192.168.0.5' \ IDENTIFIED BY 'password'; FLUSH PRIVILEGES; exit;` 11. Install Qpid `yum install -y qpid-cpp-{client,server} python-qpid` 12. Disable auth in Qpid `$EDITOR /etc/qpidd.conf` 1. `auth=no` 13. Restart Qpid `service qpidd restart` 14. Install Keystone `yum install -y openstack-keystone python-keystone python-keystoneclient` 15. Configure Keystone `$EDITOR /etc/keystone/keystone.conf` 1. `admin_token = password` 2. `bind_host = 0.0.0.0` 3. `public_port = 5000` 4. `admin_port = 35357` 5. `compute_port = 8774` 6. `verbose = True` 7. `debug = True` 8. `log_file = keystone.log` 9. `log_dir = /var/log/keystone` 10. `log_config = /etc/keystone/logging.conf` 11. `connection = mysql://keystone:password@localhost/keystone` 16. Create the SSL key `keystone-manage pki_setup && chown -R keystone:keystone /etc/keystone/*` 17. (Re)start keystone and create the databases `service openstack-keystone restart && keystone-manage db_sync` 18. Create novarc and source it `$EDITOR ~/novarc && source novarc` `export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL="http://192.168.0.3:5000/v2.0/" export SERVICE_ENDPOINT="http://192.168.0.3:35357/v2.0" export SERVICE TOKEN=password` 19. Create keystone users and tennants NOTE: it is reccomended to use the following code to extract ids: `get_id () { echo `$@ | awk '/ id / { print $4 }'`; }`, so the commands can be run as `ENV_VAR=$(get_id command)` 1. (admin tenant) `keystone tenant-create --name admin` 2. (admin user) `keystone user-create --name admin --pass password --email ad...@example.com` 3. (admin role) `keystone role-create --name admin` 4. (all together now) `keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $ADMIN_TENANT` 5. (service tenant) `keystone tenant-create --name service` 6. (member role) `keystone role-create --name=Member` 7. (demo tenant) `keystone tenant-create --name=demo` 8. (demo user) `keystone user-create --name demo --pass password --email d...@example.com` 9. (all together now) `keystone user-role-add --user_id $DEMO_USER --role_id $MEMBER_ROLE --tenant_id $DEMO_TENANT` 10. (all together now) `keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $DEMO_TENANT` 11. (service roles) `SVC=(nova glanc swift neutron cinder); for svc in ${SVC[@]}; do export ${svc}_USER=$(get_id keystone user-create --name=$svc --pass=password --tenant-id $SERVICE_TENANT --email=${svc}@example.com); keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $(eval "echo \$${svc}_USER") --role-id $ADMIN_ROLE; done` 12. (reseller role) `keystone role-create --name=ResellerAdmin` 13. (all together now) `keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $nova_USER --role-id $RESELLER_ROLE` 20. Create the keystone services NOTE: descriptions can be added if desired with `--description` NOTE: ec2 was skipped, but can be added with a name and type of 'ec2' NOTE: get_id should again be used here 1. (nova) `keystone service-create --name nova --type compute` 2. (cinder) `keystone service-create --name cinder --type volume` 3. (glance) `keystone service-create --name glance --type image` 4. (swift) `keystone service-create --name swift --type object-store` 5. (keystone) `keystone service-create --name keystone --type identity` 6. (neutron) `keystone service-create --name neutron --type network` 21. Create keystone endpoints NOTE: ec2 was skipped here 1. `create_endpoint() { eval "keystone endpoint-create --region RegionOne --service-id \$${1}_SERVICE --publicurl '$2' --adminurl '${3:-$2}' --internalurl '${4:-$2}'"; }` 1. (nova) `create_endpoint NOVA 'http://192.168.0.3:8774/v2/$(tenant_id)s'` 2. (cinder) `create_endpoint CINDER 'http://192.168.0.3:8776/v1/$(tenant_id)s'` 3. (glance) `create_endpoint GLANCE 'http://192.168.0.3:9292/v2'` 4. (swift) `create_endpoint SWIFT 'http://192.168.0.3:8080/v1/AUTH_$(tenant_ids)' 'http://192.168.0.3:8080/v1'` 5. (keystone) `create_endpoint KEYSTONE 'http://192.168.0.3:5000/v2.0' 'http://192.168.0.3:35357/v2.0'` 6. (neutron) `create_endpoint NEUTRON 'http://192.168.0.3:9696'` 22. Install Glance `yum install -y openstack-glance python-glanceclient` 23. Configure Glance 1. `$EDITOR /etc/glance/glance-api.conf` 1. `sql_connection = mysql://glance:password@localhost/glance` 2. `admin_tenant_name = service` 3. `admin_user = glance` 4. `admin_password = password` 5. `notifier_strategy = qpid` 2. `$EDITOR /etc/glance/glance-registry.conf` 1. `sql_connection = mysql://glance:password@localhost/glance` 2. `admin_tenant_name = service` 3. `admin_user = glance` 4. `admin_password = password` 24. Restart Glance `service openstack-glance-api restart && service openstack-glance-registry restart` NOTE: this may complain about cinder being missing. Simply install the cinder packages now to fix this problem. 25. Install Glance dbs `glance-manage db_sync` NOTE: this may complain about not being able to import the correct exception. This is due to an issue in the version of migrate that it requests. Modify the file `glance/db/sqlalchemy/migration.py` to say `from migrate.versioning import exceptions as versioning_exceptions` (the modified part is the `.versioning` part) 26. Install Nova `yum install -y openstack-nova openstack-nova-{api,cert,common,conductor,scheduler} python-nova python-novaclient python-nova-adminclient` 27. Configure Nova 1. `$EDITOR /etc/nova/api-paste.ini` (under `filter:authtoken`) 1. `admin_tenant_name = service` 2. `admin_user = nova` 3. `admin_password = password` 2. `$EDITOR /etc/nova/nova.conf` 1. `sql_connection = mysql://nova:password@192.168.0.3/nova` 2. `admin_tenant_name = service` 3. `admin_user = nova` 4. `admin_password = password` and insert (under DEFAULT) 5. `verbose = True scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler # nova-api # cc_host=192.168.0.3 auth_strategy=keystone nova_url=http://192.168.0.1:8774/v1.1/ api_paste_config=/etc/nova/api-paste.ini allow_admin_api=true dmz_cidr=169.254.169.254/32 metadata_host=192.168.0.3 metadata_listen=0.0.0.0 enabled_apis=osapi_compute,metadata # Networking # network_api_class=nova.network.neutronv2.api.API neutron_url=http://192.168.0.3:9696 neutron_auth_strategy=keystone neutron_admin_tenant_name=service neutron_admin_username=neutron neutron_admin_password=password neutron_admin_auth_url=http://192.168.0.3:35357/v2.0 libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver=nova.virt.firewall.NoopFirewallDriver security_group_api=neutron # Cinder # volume_api_class=nova.volume.cinder.API # Glance # glance_api_servers=192.168.0.3:9292 image_service=nova.image.glance.GlanceImageService # novnc # novnc_enable=true novncproxy_base_url=http://192.168.230.7:6080/vnc_auto.html vncserver_proxyclient_address=192.168.0.3 vncserver_listen=0.0.0.0` 28. Create the Nova DBs `nova-manage db sync` 29. Restart Nova Services `for s in openstack-nova-{api,cert,consoleauth,scheduler,conductor}; do service $s restart; service $s status; done` 30. Install Cinder `yum install -y openstack-cinder python-cinderclient python-cinder` 31. Start iSCSI `service iscsid start && service iscsi start` 32. Configure Cinder 1. `$EDITOR /etc/cinder/cinder.conf` 1. `sql_connection = mysql://cinder:password@localhost/cinder` 2. `admin_tenant_name = service` 3. `admin_user = cinder` 4. `admin_password = password` 5. `auth_strategy = keystone` (under the default section) 2. `$EDITOR /etc/cinder/api-paste.ini` (under filter:authtoken) 1. `admin_tenant_name = service` 2. `admin_user = cinder` 3. `admin_password = password` 33. Create Cinder Volumes 1. `fdisk /dev/sdb` 2. `pvcreate /dev/sdb1` 3. `vgcreate cinder-volumes /dev/sdb1` 34. Restart Cinder services `for s in openstack-cinder-{api,scheduler,volume}; do service $s restart; service $s status; done` 35. Install Neutron `yum install -y openstack-neutron python-neutron python-neutronclient openstack-neutron-openvswitch` 36. Configure Neutron 1. `$EDITOR /etc/neutron/neutron.conf` 1. `core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2` 2. `auth_strategy = keystone` 3. `rpc_backend=neutron.openstack.common.rpc.impl_qpid` 4. `qpid_hostname = localhost` 5. `qpid_port = 5672` 2. `$EDITOR /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini` 1. `[database] connection = mysql://neutron:password@localhost/ovs_neutron` 2. `[OVS] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True` 3. `$EDITOR /etc/neutron/api-paste.ini` 1. `admin_tenant_name = service` 2. `admin_user = neutron` 3. `admin_password = password` 32. Link `plugin.ini` to `plugins/openvswitch/ovs_neutron_plugin.ini` `ln -s /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini plugin.ini` 33. Start Neutron Server `service neutron-server start` 34. Install Horizon `yum install -y openstack-dashboard memcached python-memcached` 35. Start httpd `service httpd start` NOTE: horizon seems to have an auth error here TODO(sross): iptables seems to block outside connections. Figure out why this is TODO(sross): debug auth error 36. Set Qpid as the default messaging system (and restart services after) `$EDITOR /etc/{nova,neutron,...}` 1. `rpc_backend=nova.rpc.impl_qpid` 2. `qpid_hostname=controller` Network Node (network.rdo-test) ------------------------------- NOTE: remember that eth1 is the external network, NOT eth2 (unlike the basic install guide) 1. Add the repositories: 1. `yum-config-manager --add-repo http://repos.fedorapeople.org/repos/openstack/openstack-trunk/el6-openstack-trunk.repo` (RDO) 2. `yum install -y http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm` (EPEL) 2. Update to grab the new kernel, and reboot to use it `yum -y update && shutdown -r now` 3. Edit the network scripts to contain the correct lines: 1. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth0` 1. `ONBOOT=yes` 2. `NETMASK=255.255.255.0` 3. `GATEWAY=x.x.x.2` (replace the `x.x.x` with the appropriate prefix) 4. `BOOTPROTO=none` 5. `IPADDR=[SEE LAYOUT SECTION]` 6. `DNS1=x.x.x.2` 2. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth1` 1. `ONBOOT=yes` 2. `BOOTPROTO=none` 3. `IPADDR=0.0.0.0` 4. `ETHTOOL_OPTS="promisc"` 3. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth2` 1. `ONBOOT=yes` 2. `NETMASK=255.255.255.0` 4. `BOOTPROTO=none` 5. `IPADDR=[SEE LAYOUT SE 4. Edit `/etc/sysctl.conf` `$EDITOR /etc/sysctl.conf` 1. `net.ipv4.ip_forward=1` 2. `net.ipv4.conf.all.rp_filter = 0` 3. `net.ipv4.conf.default.rp_filter = 0` 5. Restart networking `service network restart` 6. Edit hosts file to contain other hosts `$EDITOR /etc/hosts` 1. `192.168.0.3 controller controller.rdo-test` 2. `192.168.0.5 compute compute.rdo-test` 3. `192.168.0.4 network network.rdo-test` 7. Install and configure NTP (skipped for now) 8. Install Open-vSwitch `yum install -y openstack-neutron openstack-neutron-openvswitch` 9. Start Open vSwitch `service openvswitch start` 10. Create Virtual Bridging 1. `ovs-vsctl add-br br-int` 2. `ovs-vsctl add-br br-ex` 3. `ovs-vsctl add-port br-ex eth1` 4. `ip link set up br-ex` 11. Set external bridge IP to whatever eth1's IP was supposed to be 1. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-br-ex` `DEVICE=br-ex TYPE=Bridge ONBOOT=no NM_CONTROLLED=no BOOTPROTO=none IPADDR=192.168.230.8 NETMASK=255.255.255.0 DNS1=192.168.230.2 GATEWAY=192.168.230.2` 2. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth1` 1. `BRIDGE=br-ex` 2. remove the `IPADDR` line 12. Restart networking `service network restart` ??. do the ENABLE A SIMPLE NAT step? 13. Configure Neutron 1. `$EDITOR /etc/neutron/l3_agent.ini` 1. `use_namespaces = False` 2. `debug = True` 3. `interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver` 2. `$EDITOR /etc/neutron/neutron.conf` 1. `auth_host = 192.168.0.3` 2. `admin_tenant_name = service` 3. `admin_user = neutron` 4. `admin_password = password` 5. `auth_url = http://192.168.0.3:35357/v2.0` 6. `auth_strategy = keystone` 7. `core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2` 8. `verbose = True` 9. `rpc_backend = neutron.openstack.common.rpc.impl_qpid 10. `qpid_hostname = 192.168.0.3` 3. `$EDITOR /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini` 1. `[database] sql_connection = mysql://neutron:password@10.10.10.10/neutron` 2. `[ovs] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True integration_bridge = br-int tunnel_bridge = br-tun local_ip = 10.10.10.3 firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver` 4. `$EDITOR /etc/neutron/dhcp_agent.ini` 1. `use_namespaces = False` 2. `interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver` 3. `dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq` 14. Restart the Neutron services `for s in neutron-{openvswitch-agent,dhcp-agent,l3-agent}; do service $s restart; service $s status; done` 15. Copy the 'novarc' file from above and source it `scp root@192.168.0.3:~/novarc . && source novarc` 16. Initialize the networks and routers NOTE: once again, `get_id` may be useful here NOTE: you may wish to install `python-keystoneclient` to make getting IDs easier 1. (create the internal network) `neutron net-create --tenant-id $DEMO_TENANT demo-net --provider:network_type gre --provider:segmentation_id 1` 2. (create the internal network's subnet) `neutron subnet-create --tenant-id $DEMO_TENANT --ip_version 4 --name demo-subnet $TENANT_NET_ID 10.5.5.0/24 --gateway 10.5.5.1 --dns_nameservers list=true 192.168.230.2` 3. (create the router) `neutron router-create --tenant-id $DEMO_TENANT demo-router` 4. (attach the internal network's subnet to the router) `neutron router-interface-add $ROUTER_ID $TENANT_SUBNET_ID` 5. (create the external network) `neutron net-create ext-net -- --router:external=True --provider:network_type gre --provider:segmentation_id 2` 6. (create the external network's subnet) `neutron subnet-create --ip_version 4 --allocation-pool start=192.168.230.100,end=192.168.230.200 --gateway=192.168.230.2 $EXT_NET_ID 192.168.230.0/24 -- --enable_dhcp=False` 7. (connect the router to the external network) `neutron router-gateway-set $ROUTER_ID $EXT_NET_ID` 8. flush ip addr for ext bridge and add ip with mask of 24? 17. Configure Neutron L3 `$EDITOR /etc/neutron/l3_agent.ini` 1. `gateway_external_network_id = [value of $EXT_NET_ID]` 2. `router_id = [value of $ROUTER_ID]` 18. Restart Neutron L3 `service neutron-l3-agent restart` Compute Node (compute.rdo-test) ------------------------------- NOTE: remember that eth1 is the external network, NOT eth2 (unlike the basic install guide) 1. Add the repositories: 1. `yum-config-manager --add-repo http://repos.fedorapeople.org/repos/openstack/openstack-trunk/el6-openstack-trunk.repo` (RDO) 2. `yum install -y http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm` (EPEL) 2. Update to grab the new kernel, and reboot to use it `yum -y update && shutdown -r now` 3. Edit the network scripts to contain the correct lines: 1. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth0` 1. `ONBOOT=yes` 2. `NETMASK=255.255.255.0` 3. `GATEWAY=x.x.x.2` (replace the `x.x.x` with the appropriate prefix) 4. `BOOTPROTO=none` 5. `IPADDR=192.168.0.5` 2. `$EDITOR /etc/sysconfig/network-scripts/ifcfg-eth1` 1. `ONBOOT=yes` 2. `NETMASK=255.255.255.0` 4. `BOOTPROTO=none` 5. `IPADDR=10.10.10.4` 4. Edit sysctl.conf to disable route verification `$EDITOR /etc/sysctl.conf` 1. `net.ipv4.conf.all.rp_filter = 0` 2. `net.ipv4.conf.default.rp_filter = 0` 5. Restart networking `service network restart` 6. Edit hosts file to contain other hosts `$EDITOR /etc/hosts` 1. `192.168.0.3 controller controller.rdo-test` 2. `192.168.0.5 compute compute.rdo-test` 3. `192.168.0.4 network network.rdo-test` 7. Install and configure NTP (skipped) 8. Install Nova NOTE: this also installs libvirt if you don't already have it, as well as kvm/qemu `yum install -y openstack-nova python-novaclient` 9. Configure Nova 1. `$EDITOR /etc/nova/api-paste.ini` 1. `auth_host = 192.168.0.3` 2. `admin_tenant_name = service` 3. `admin_user = nova` 4. `admin_password = password` 2. `$EDITOR /etc/nova/nova.conf` 1. `verbose = True` 2. `qpid_hostname = 192.168.0.3` 4. `rpc_backend = qpid` 5. `auth_strategy = keystone` 7. `auth_host = 192.168.0.3` 8. `admin_tenant_name = service` 9. `admin_user = nova` 10. `admin_password = password` 11. `sql_connection = mysql://nova:password@192.168.0.3/nova1 (just follow the guide for the rest of the conf, substituting in 192.168.0.3 or 192.168.230.7 as necessary, instead of 10.x.x.x) 10. Restart Nova and Libvirt `service libvirtd restart && service openstack-nova-compute restart` 11. Install Openvswitch and Neutron `yum install -y openvswitch openstack-neutron openstack-neutron-openvswitch` 12. Start Open vSwitch and Add the internal bridge `service openvswitch start && ovs-vsctl add-br br-int` 13. Configure Neutron 1. `$EDITOR /etc/neutron/neutron.conf` 1. `debug = True` 2. `verbose = True` 3. `rpc_backend = neutron.openstack.common.rpc.impl_qpid` 4. `qpid_hostname = 192.168.0.3` 5. `core_plugin = core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2` 6. `auth_strategy = keystone` 7. `auth_host = 192.168.0.3` 8. `admin_tenant_name = service` 9. `admin_user = neutron` 10. `admin_password = password` 2. `$EDITOR /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini` 1. `[database] sql_connection = mysql://neutron:password@192.1680.3/neutron` 2. `[ovs] tenant_network_type = gre tunnel_id_ranges = 1:1000 local_ip = 10.10.10.4 integration_bridge = br-int tunnel_bridge = br-tun enable_tunneling = True 14. (Re)start Neutron `service neutron-openvswitch-agent restart` Notes ===== Swift's endpoint caused some issues. It was not found in the basic-install/yum version of the guide should we use `openstack-db --init --service keystone` instead of the `[service]-manage` executables? If you have issues with the repos not being found, try `yum clean all` first WebSocketProxy may complain about an unknown option 'no_parent'. Simply update python-websockify to solve this issue Notes: the compute node needs this `iptables -I INPUT 10 -p tcp -m multiport --dports 5900:5999 -j ACCEPT` for vnc to work (check correct rule number -- `iptables -nvL` and look for the REJECT rule that rejects everything) (assuming you are using the IPTables firewall -- packstack actually inserts this line itself, it would seem) Note: iptables on the network node don't like gre tunnels, and thus block gre packets. As you may surmise, this is not particularly useful. TODO: figure out why Neutron doesn't automatically unblock GRE packets in iptables. For now simply disabling iptables seems to work fine, but this is not a good long-term solution neutron dhcp agent dies after launch, [-may need to chown -R neutron:neutron /var/lib/neutron-] need iptables for snat, but can disable firewall by setting firewall to Noop in both neutron. in order to get snat working, need to delete the first line of neutron-l3-agent-postrouting?
_______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev