Closed Bug 963165 Opened 10 years ago Closed 10 years ago

Experiment with OpenStack as a future cloud deployment platform for releng

Categories

(Infrastructure & Operations :: RelOps: General, task)

task
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: dustin, Assigned: dividehex)

References

Details

Let's get an instance of OpenStack set up in the relabs VLAN.  The cloudstack hosts can be VMs, and we can use ix-mn hardware for bare-metal stuff.
openstack1.relabs.releng.scl3 should be ready for you.  I landed the node change on 'default', and puppetized against it in my puppet environment.  Have a look and, if it looks OK, merge to prod?
thanks Dustin.  lg, I've merged to prod
Trying to install the openstack rpms failed from the broken dependencies.  I disabled puppet and upgraded the os against the external centos repos since puppetagain repos are not up-to-date.

Installation is going much smoother now.  Running 2013.2.1-1.el6 from the openstack-havana repo
I have some of the openstack compenents running at the moment.  This includes keystone, glance, and nova.  All have been registered with keystone and glance has a test image imported.  Next steps will be to install a compute node and test a deployment.
Depends on: 968615
No longer depends on: 968615
I successfully setup a compute node on hp6.relabs and was able to launch kvm instances from both the web ui and the CLI.  It took some mucking with the nic interfaces and some bridging to accomplish this but it is working nicely.  I also ran into permission issue with prevented the flatnetwork driver from properly altering the IPTables on the nova compute host.  I couldn't find it mentioned in the installation guide but a sudoer rule, on both the controller and compute host, needed to by added to allow the wrapper script to do so.

The next step here is to prep some ix-mn machines for baremetal testing.  I'll be using ix-mn-2 and ix-mn-3 as baremetal nodes and hp5 as a baremetal compute host.  I might also spin up a new separate OS controller instance for simplicity sake.  These will all be moved to a different vlan (vlan 260, mobile.releng) since the barematal compute host must serve its own managed dhcp.  Dhcp-helper has already been removed in bug971253.
I had to do:

keystone role-create --name="Member"

so that I could add additional projects (it was throwing errors about not having role Member in the http logs).  I'm not sure if role _member_ (which was created) was a typo of if that's used for something else.
Depends on: 974697
I ran through the instructions on baremetal provisioning and was able to complete most of the setup.  The instructions can be found here: https://wiki.openstack.org/wiki/Baremetal

I decided to reuse openstack1.relabs.  I've added a second nic (trunked to mobile.releng) and we'll need to reconfigure the networking on it.

* databases created and initialized
* nova configured for baremetal
* extra packages and services installed (ipmitools, dnsmasq, etc)
* baremetal ubuntu image created plus pxe boot image (kernel + initrd)
* images uploaded and associated in glance.
* various directories created

Not completed:
* dnsmasq started
* hardware enrollment
These are dependent on getting the ix-mn and hp nodes moved over to the mobile.releng vlan


-------- Snippets from CLI ----------

bin/disk-image-create -u baremetal base ubuntu -o pxe
-rw-r--r-- 1 root root   22121158 Feb 19 16:39 pxe.initrd
-rw-r--r-- 1 root root 1086521344 Feb 19 16:39 pxe.qcow2
-rw-r--r-- 1 root root    5631792 Feb 19 16:39 pxe.vmlinuz

bin/ramdisk-image-create -a i386 -o pxe-ramdisk deploy ramdisk base ubuntu
-rw-r--r-- 1 root root 77917122 Feb 19 16:54 pxe-ramdisk.initramfs
-rw----r-- 1 root root  5664656 Feb 19 16:54 pxe-ramdisk.kernel


[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name bm-ubuntu-vmlinuz --public --disk-format aki < pxe.vmlinuz
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 3d20b791dbf143334225f6fb78717909     |
| container_format | aki                                  |
| created_at       | 2014-02-20T00:59:50                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | aki                                  |
| id               | 0a9959e7-60a2-46a5-a162-2f62efabd83e |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | bm-ubuntu-vmlinuz                    |
| owner            | 0e2ab7939c944174a47b7b8cbcdcfa3a     |
| protected        | False                                |
| size             | 5631792                              |
| status           | active                               |
| updated_at       | 2014-02-20T00:59:51                  |
+------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name bm-ubuntu-initrd --public --disk-format ari < pxe.initrd
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | f57144279a299572751710935f8b8c9c     |
| container_format | ari                                  |
| created_at       | 2014-02-20T01:01:07                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | ari                                  |
| id               | 1b3a6ef2-2305-422c-83b7-cc60cd5ebdca |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | bm-ubuntu-initrd                     |
| owner            | 0e2ab7939c944174a47b7b8cbcdcfa3a     |
| protected        | False                                |
| size             | 22121158                             |
| status           | active                               |
| updated_at       | 2014-02-20T01:01:08                  |
+------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name bm-ubuntu-image --public --disk-format qcow2 --container-format bare --property kernel_id=0a9959e7-60a2-46a5-a162-2f62efabd83e --property ramdisk_id=1b3a6ef2-2305-422c-83b7-cc60cd5ebdca < pxe.qcow2
+-----------------------+--------------------------------------+
| Property              | Value                                |
+-----------------------+--------------------------------------+
| Property 'kernel_id'  | 0a9959e7-60a2-46a5-a162-2f62efabd83e |
| Property 'ramdisk_id' | 1b3a6ef2-2305-422c-83b7-cc60cd5ebdca |
| checksum              | 6e34c100ec33648a343c89619c414501     |
| container_format      | bare                                 |
| created_at            | 2014-02-20T01:04:25                  |
| deleted               | False                                |
| deleted_at            | None                                 |
| disk_format           | qcow2                                |
| id                    | a77fcc5a-6d9b-478f-ad48-b3f275ddd0ad |
| is_public             | True                                 |
| min_disk              | 0                                    |
| min_ram               | 0                                    |
| name                  | bm-ubuntu-image                      |
| owner                 | 0e2ab7939c944174a47b7b8cbcdcfa3a     |
| protected             | False                                |
| size                  | 1086521344                           |
| status                | active                               |
| updated_at            | 2014-02-20T01:04:38                  |
+-----------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name deploy-vmlinuz --public --disk-format aki < pxe-ramdisk.kernel
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 73e911c66cc052132e280a3b684137f0     |
| container_format | aki                                  |
| created_at       | 2014-02-20T01:06:00                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | aki                                  |
| id               | 98f2a05e-d6b6-4812-8581-4c2c4a625bc2 |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | deploy-vmlinuz                       |
| owner            | 0e2ab7939c944174a47b7b8cbcdcfa3a     |
| protected        | False                                |
| size             | 5664656                              |
| status           | active                               |
| updated_at       | 2014-02-20T01:06:00                  |
+------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name deploy-initrd --public --disk-format ari < pxe-ramdisk.initramfs
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | e789a9bf0e0002f69ac142ce639ade44     |
| container_format | ari                                  |
| created_at       | 2014-02-20T01:06:53                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | ari                                  |
| id               | 128fb087-1229-4e4d-a226-b7bb222f5866 |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | deploy-initrd                        |
| owner            | 0e2ab7939c944174a47b7b8cbcdcfa3a     |
| protected        | False                                |
| size             | 77917122                             |
| status           | active                               |
| updated_at       | 2014-02-20T01:06:53                  |
+------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# nova flavor-create ix-mn.crap 100 7864 250 8
+-----+------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID  | Name       | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+-----+------------+-----------+------+-----------+------+-------+-------------+-----------+
| 100 | ix-mn.crap | 7864      | 250  | 0         |      | 8     | 1.0         | True      |
+-----+------------+-----------+------+-----------+------+-------+-------------+-----------+

nova flavor-key ix-mn.crap set cpu_arch=x86_64 "baremetal:deploy_kernel_id"=98f2a05e-d6b6-4812-8581-4c2c4a625bc2 "baremetal:deploy_ramdisk_id"=128fb087-1229-4e4d-a226-b7bb222f5866


mysql> CREATE DATABASE nova_bm;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON nova_bm.* TO 'nova_bm'@'localhost' IDENTIFIED BY '$password';
Query OK, 0 rows affected (0.22 sec)


[root@openstack1.relabs.releng.scl3.mozilla.com nova]# mkdir -p /var/lib/nova/baremetal/dnsmasq
[root@openstack1.relabs.releng.scl3.mozilla.com nova]# mkdir -p /var/lib/nova/baremetal/console
[root@openstack1.relabs.releng.scl3.mozilla.com nova]# chown -R nova /var/lib/nova/baremetal
I've increased the memory on openstack1 from 4gb to 8gb so the disk imaging utilities may take advantage of building with tmpfs (in ram) instead of on disk.
my notes (so I can find 'em later) - https://etherpad.mozilla.org/l3nEPnrR6n
hp6, ix-mn-3 and ix-mn-4 have been moved to mobile.releng along with there OOB port (w/ static ips)

I've launched dnsmasq and register ix-mn-3 to the nova-compute host.  But when I attempt to launch a bare metal instances, it fails (as expected).
There are several things here that I will follow up on.  

* nova-compute might not be configured correctly
* netconfig template needs to be created
* nova-compute host name in baremetal node list doesn't match the hostname in service list
* nova-compute trying to write to directories with bad perms or don't exist
* baremetal node list does not show mac.  Might not have been registered correctly

------ some CLI snippets from today ---------

sudo dnsmasq --conf-file= --port=0 --enable-tftp --tftp-root=/tftpboot --dhcp-boot=pxelinux.0 --bind-interfaces --pid-file=/var/run/dnsmasq.pid --interface=eth1 --dhcp-range=10.26.61.150,10.26.61.199

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova baremetal-node-create --pm_address=10.26.61.102 --pm_user=############### --pm_password=########## openstack1.mobile.releng.scl3.mozilla.com 8 7864 250 00:25:90:94:22:b0
+---------------+----------------------------------------------------------------------------------------+
| Property      | Value                                                                                  |
+---------------+----------------------------------------------------------------------------------------+
| instance_uuid | None                                                                                   |
| pm_address    | 10.26.61.102                                                                           |
| interfaces    | [{u'datapath_id': None, u'id': 1, u'port_no': None, u'address': u'00:25:90:94:22:b0'}] |
| cpus          | 8                                                                                      |
| memory_mb     | 7864                                                                                   |
| service_host  | openstack1.mobile.releng.scl3.mozilla.com                                              |
| local_gb      | 250                                                                                    |
| id            | 1                                                                                      |
| pm_user       | ############                                                                           |
| terminal_port | None                                                                                   |
+---------------+----------------------------------------------------------------------------------------+
Host networking looks OK.  A dhclient run on ix-mn-3 gets me 10.26.61.177, and I see that in dnsmasq.leases.

I tried creating an instance with
  nova boot --flavor ix-mn.crap --image bm-ubuntu-image test-bm-inst

A look at logfiles that change when creating a new node shows the images being downloaded from glance:

2014-02-21 05:36:09.169 2106 INFO glance.registry.api.v1.images [d1d98b0b-09e1-4431-b4a2-0263b54fe99e 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image 0a9959e7-60a2-46a5-a162-2f62efabd83e
2014-02-21 05:36:09.184 2106 INFO glance.registry.api.v1.images [6debdca3-8c5c-4a2b-b30f-4af7c2e180a5 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image 0a9959e7-60a2-46a5-a162-2f62efabd83e
2014-02-21 05:36:09.200 2106 INFO glance.registry.api.v1.images [175f03f4-cfe1-4742-9189-68a6f9b500ed 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image 1b3a6ef2-2305-422c-83b7-cc60cd5ebdca
2014-02-21 05:36:09.216 2106 INFO glance.registry.api.v1.images [bcffec93-e8d1-46aa-81bd-9e9e206e4aa7 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image 1b3a6ef2-2305-422c-83b7-cc60cd5ebdca
2014-02-21 05:36:09.372 2106 INFO glance.registry.api.v1.images [454d5dba-3331-484d-84d4-4ed9ab42ca9b 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image a77fcc5a-6d9b-478f-ad48-b3f275ddd0ad
2014-02-21 05:36:09.388 2106 INFO glance.registry.api.v1.images [a95081a0-77c1-44be-a307-3ac3272138ed 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Successfully retrieved image a77fcc5a-6d9b-478f-ad48-b3f275ddd0ad

No other interesting files under /var/log/ changed.  So the logging is going somewhere else.

In the iKVM view, I don't see any evidence of power management, nor do I see any traffic on eth1 (the vlan260 interface).

I enabled verbose logging in nova and restarted all of the openstack-nova-* services set to run in runlevel 3.  On trying again, still no traffic, but there's a message!

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova boot --flavor ix-mn.crap --image bm-ubuntu-image test-bm-instance
+--------------------------------------+-----------------------------------------------------------------------------------------------+
| Property                             | Value                                                                                         |
+--------------------------------------+-----------------------------------------------------------------------------------------------+
| OS-EXT-STS:task_state                | None                                                                                          |
| image                                | bm-ubuntu-image                                                                               |
| OS-EXT-STS:vm_state                  | error                                                                                         |
| OS-EXT-SRV-ATTR:instance_name        | instance-0000000d                                                                             |
| OS-SRV-USG:launched_at               | None                                                                                          |
| flavor                               | ix-mn.crap                                                                                    |
| id                                   | 23462889-3721-4902-bf47-7bfac4cdbf3e                                                          |
| security_groups                      | [{u'name': u'default'}]                                                                       |
| user_id                              | 4c05e549d8d24c0aba0a21433c0cf66a                                                              |
| OS-DCF:diskConfig                    | MANUAL                                                                                        |
| accessIPv4                           |                                                                                               |
| accessIPv6                           |                                                                                               |
| OS-EXT-STS:power_state               | 0                                                                                             |
| OS-EXT-AZ:availability_zone          | nova                                                                                          |
| config_drive                         |                                                                                               |
| status                               | ERROR                                                                                         |
| updated                              | 2014-02-21T13:45:21Z                                                                          |
| hostId                               |                                                                                               |
| OS-EXT-SRV-ATTR:host                 | None                                                                                          |
| OS-SRV-USG:terminated_at             | None                                                                                          |
| key_name                             | None                                                                                          |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | None                                                                                          |
| name                                 | test-bm-instance                                                                              |
| adminPass                            | ############                                                                                  |
| tenant_id                            | 0e2ab7939c944174a47b7b8cbcdcfa3a                                                              |
| created                              | 2014-02-21T13:45:20Z                                                                          |
| os-extended-volumes:volumes_attached | []                                                                                            |
| fault                                | {u'message': u'No valid host was found. ', u'code': 500, u'created': u'2014-02-21T13:45:21Z'} |
| metadata                             | {}                                                                                            |
+--------------------------------------+-----------------------------------------------------------------------------------------------+

And *slightly* more verbose logging:

2014-02-21 05:45:21.084 11541 INFO nova.scheduler.filter_scheduler [req-b6af021a-9748-46b6-b432-919c7edf8161 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Attempting to build 1 instance(s) uuids: [u'23462889-3721-4902-bf47-7bfac4cdbf3e']
2014-02-21 05:45:21.093 11541 WARNING nova.scheduler.driver [req-b6af021a-9748-46b6-b432-919c7edf8161 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: 23462889-3721-4902-bf47-7bfac4cdbf3e] Setting instance to ERROR state.

That message corresponds to the NoValidHost exception, which is raised by the chance and filter_scheduler schedulers.  Those are defined in the python-nova RPM.

I set debug=True in nova.conf and also added some extra logging to /usr/lib/python2.6/site-packages/nova/scheduler/filter_scheduler.py.  Lots more output, although most of it is a dump of the AMQP traffic.  Still:

2014-02-21 06:02:03.706 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Starting with 2 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:70
2014-02-21 06:02:03.706 11813 DEBUG nova.scheduler.filters.retry_filter [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Host [u'openstack1.relabs.releng.scl3.mozilla.com', u'aea07aca-7103-44cc-999a-9ca7b69628cf'] passes.  Previously tried hosts: [] host_passes /usr/lib/python2.6/site-packages/nova/scheduler/filters/retry_filter.py:45
2014-02-21 06:02:03.707 11813 DEBUG nova.scheduler.filters.retry_filter [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Host [u'hp6.relabs.releng.scl3.mozilla.com', u'hp6.relabs.releng.scl3.mozilla.com'] passes.  Previously tried hosts: [] host_passes /usr/lib/python2.6/site-packages/nova/scheduler/filters/retry_filter.py:45
2014-02-21 06:02:03.707 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Filter RetryFilter returned 2 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:85
2014-02-21 06:02:03.707 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Filter AvailabilityZoneFilter returned 2 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:85
2014-02-21 06:02:03.708 11813 DEBUG nova.scheduler.filters.ram_filter [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] (hp6.relabs.releng.scl3.mozilla.com, hp6.relabs.releng.scl3.mozilla.com) ram:2251 disk:214016 io_ops:0 instances:2 does not have 7864 MB usable ram, it only has 2251.0 MB usable ram. host_passes /usr/lib/python2.6/site-packages/nova/scheduler/filters/ram_filter.py:60
2014-02-21 06:02:03.708 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Filter RamFilter returned 1 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:85
2014-02-21 06:02:03.708 11813 DEBUG nova.servicegroup.api [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Check if the given member [{u'binary': u'nova-compute', u'deleted': 0L, u'created_at': datetime.datetime(2014, 2, 21, 0, 58, 23), u'updated_at': datetime.datetime(2014, 2, 21, 14, 1, 59), u'report_count': 4701L, u'topic': u'compute', u'host': u'openstack1.relabs.releng.scl3.mozilla.com', u'disabled': False, u'deleted_at': None, u'disabled_reason': None, u'id': 7L}] is part of the ServiceGroup, is up service_is_up /usr/lib/python2.6/site-packages/nova/servicegroup/api.py:94
2014-02-21 06:02:03.709 11813 DEBUG nova.servicegroup.drivers.db [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] DB_Driver.is_up last_heartbeat = 2014-02-21 14:01:59 elapsed = 4.709111 is_up /usr/lib/python2.6/site-packages/nova/servicegroup/drivers/db.py:71
2014-02-21 06:02:03.709 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Filter ComputeFilter returned 1 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:85
2014-02-21 06:02:03.709 11813 DEBUG nova.scheduler.filters.compute_capabilities_filter [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] extra_spec requirement 'x86_64' does not match {i386|x86_64}' _satisfies_extra_specs /usr/lib/python2.6/site-packages/nova/scheduler/filters/compute_capabilities_filter.py:63
2014-02-21 06:02:03.710 11813 DEBUG nova.scheduler.filters.compute_capabilities_filter [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] (openstack1.relabs.releng.scl3.mozilla.com, aea07aca-7103-44cc-999a-9ca7b69628cf) ram:7864 disk:256000 io_ops:0 instances:0 fails instance_type extra_specs requirements host_passes /usr/lib/python2.6/site-packages/nova/scheduler/filters/compute_capabilities_filter.py:73
2014-02-21 06:02:03.710 11813 DEBUG nova.filters [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Filter ComputeCapabilitiesFilter returned 0 host(s) get_filtered_objects /usr/lib/python2.6/site-packages/nova/filters.py:85
2014-02-21 06:02:03.710 11813 INFO nova.scheduler.filter_scheduler [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] HERE 7
2014-02-21 06:02:03.711 11813 WARNING nova.scheduler.driver [req-0dea13f6-cdea-4c2f-bdc6-70053b41eb93 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: cc51446a-4a65-4144-8bd4-7b7162b6dac7] Setting instance to ERROR state.

I'm guessing
  extra_spec requirement 'x86_64' does not match {i386|x86_64}'
is the problem.  But I'm not sure where those values are coming from.
Sure enough, that {i386|x86_64} value seems to be associated with the compute node:

INSERT INTO `compute_nodes` (`created_at`, `updated_at`, `deleted_at`, `id`, `service_id`, `vcpus`, `memory_mb`, `local_gb`, `vcpus_used`, `memory_mb_used`, `local_gb_used`, `hypervisor_type`, `hypervisor_version`, `cpu_info`, `disk_avail
able_least`, `free_ram_mb`, `free_disk_gb`, `current_workload`, `running_vms`, `hypervisor_hostname`, `deleted`, `host_ip`, `supported_instances`, `pci_stats`) VALUES ('2014-02-21 02:46:24','2014-02-21 15:04:57',NULL,2,7,8,7864,250,0,0,0,
'baremetal',1,'baremetal cpu',NULL,7864,250,0,0,'aea07aca-7103-44cc-999a-9ca7b69628cf',0,'192.168.91.10','[[\"{i386|x86_64}\", \"baremetal\", \"baremetal\"]]','{}');

and (probably derivative)

INSERT INTO `compute_node_stats` (`created_at`, `updated_at`, `deleted_at`, `id`, `compute_node_id`, `key`, `value`, `deleted`) VALUES ('2014-02-21 02:46:24',NULL,NULL,36,2,'cpu_arch','{i386|x86_64}',0);
Ah:

nova.conf:
[baremetal]
instance_type_extra_specs = cpu_arch:{i386|x86_64}

So

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova flavor-key ix-mn.crap set cpu_arch='{i386|x86_64}'
[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova flavor-show ix-mn.crap
+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Property                   | Value                                                                                                                                                                            |
+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name                       | ix-mn.crap                                                                                                                                                                       |
| ram                        | 7864                                                                                                                                                                             |
| OS-FLV-DISABLED:disabled   | False                                                                                                                                                                            |
| vcpus                      | 8                                                                                                                                                                                |
| extra_specs                | {u'cpu_arch': u'{i386|x86_64}', u'baremetal:deploy_kernel_id': u'98f2a05e-d6b6-4812-8581-4c2c4a625bc2', u'baremetal:deploy_ramdisk_id': u'128fb087-1229-4e4d-a226-b7bb222f5866'} |
| swap                       |                                                                                                                                                                                  |
| os-flavor-access:is_public | True                                                                                                                                                                             |
| rxtx_factor                | 1.0                                                                                                                                                                              |
| OS-FLV-EXT-DATA:ephemeral  | 0                                                                                                                                                                                |
| disk                       | 250                                                                                                                                                                              |
| id                         | 100                                                                                                                                                                              |
+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova boot --flavor ix-mn.crap --image bm-ubuntu-image test-bm-instance
ERROR: Quota exceeded for cores: Requested 8, but already used 18 of 20 cores (HTTP 413) (Request-ID: req-8ac9b333-f515-4e73-8d78-6f6c9b4705d6)
I bumped the quota up to 1000 and re-ran the nova boot.  It successfully powered the host off!  Yet

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# nova show e2b71c76-c7c7-4f80-8dac-90dc7be37611 | grep fault
| security_groups                      | [{u'name': u'default'}]                                                                       |
| fault                                | {u'message': u'No valid host was found. ', u'code': 500, u'created': u'2014-02-21T15:31:57Z'} |

Judging from the logs, on the first round the scheduler found openstack1 to be a suitable host, but it failed, so it re-visited and couldn't find any more suitable hosts.

In compute.log:

> 2014-02-21 07:30:47.706 11448 AUDIT nova.compute.manager [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Starting instance...
> 2014-02-21 07:30:48.003 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Attempting claim: memory 7864 MB, disk 250 GB, VCPUs 8
> 2014-02-21 07:30:48.004 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Total Memory: 7864 MB, u sed: 0.00 MB
> 2014-02-21 07:30:48.004 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Memory limit: 7864.00 MB , free: 7864.00 MB
> 2014-02-21 07:30:48.004 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Total Disk: 250 GB, used : 0.00 GB
> 2014-02-21 07:30:48.005 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Disk limit not specified , defaulting to unlimited
> 2014-02-21 07:30:48.005 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Total CPU: 8 VCPUs, used : 0.00 VCPUs
> 2014-02-21 07:30:48.005 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] CPU limit not specified, defaulting to unlimited
> 2014-02-21 07:30:48.005 11448 AUDIT nova.compute.claims [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] [instance: e2b71c76-c7c7-4f80-8dac-90dc7be37611] Claim successful
> 2014-02-21 07:30:58.157 11448 AUDIT nova.compute.resource_tracker [-] Auditing locally available compute resources
> 2014-02-21 07:30:58.259 11448 AUDIT nova.compute.resource_tracker [-] Free ram (MB): 0
> 2014-02-21 07:30:58.260 11448 AUDIT nova.compute.resource_tracker [-] Free disk (GB): 0
> 2014-02-21 07:30:58.260 11448 AUDIT nova.compute.resource_tracker [-] Free VCPUS: 0
> 2014-02-21 07:30:58.326 11448 INFO nova.compute.resource_tracker [-] Compute_service record updated for openstack1.relabs.releng.scl3.mozilla.com:aea07aca-7103-44cc-999a-9ca7b69628cf
> 2014-02-21 07:31:48.280 11448 ERROR nova.compute.manager [-] Instance failed network setup after 1 attempt(s)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager Traceback (most recent call last):
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1244, in _allocate_network_async
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     dhcp_options=dhcp_options)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/network/api.py", line 94, in wrapped
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     return func(self, context, *args, **kwargs)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/network/api.py", line 49, in wrapper
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     res = f(self, context, *args, **kwargs)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/network/api.py", line 301, in allocate_for_instance
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     nw_info = self.network_rpcapi.allocate_for_instance(context, **args)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/network/rpcapi.py", line 184, in allocate_for_instance
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     macs=jsonutils.to_primitive(macs))
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 85, in call
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     return self._invoke(self.proxy.call, ctxt, method, **kwargs)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/rpcclient.py", line 63, in _invoke
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     return cast_or_call(ctxt, msg, **self.kwargs)
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager   File "/usr/lib/python2.6/site-packages/nova/openstack/common/rpc/proxy.py", line 130, in call
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager     exc.info, real_topic, msg.get('method'))
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager Timeout: Timeout while waiting on RPC response - topic: "network", RPC method: "allocate_for_instance" info: "<unknown>"
> 2014-02-21 07:31:48.280 11448 TRACE nova.compute.manager
> 2014-02-21 07:31:48.305 11448 ERROR nova.virt.baremetal.driver [req-aaba78b3-4696-4331-b901-d4c43bc93668 4c05e549d8d24c0aba0a21433c0cf66a 0e2ab7939c944174a47b7b8cbcdcfa3a] Error deploying instance e2b71c76-c7c7-4f80-8dac-90dc7be37611 on baremetal node aea07aca-7103-44cc-999a-9ca7b69628cf.

Which looks like a timeout contacting the network component of nova

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# service openstack-nova-network start
Starting openstack-nova-network:                           [  OK  ]

Now:

> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3] Traceback (most recent call last):
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1423, in _spawn
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     block_device_info)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/virt/baremetal/driver.py", line 272, in spawn
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     _update_state(context, node, None, baremetal_states.DELETED)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/virt/baremetal/driver.py", line 241, in spawn
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     network_info=network_info,
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/virt/baremetal/pxe.py", line 343, in cache_images
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     injected_files, admin_password)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/virt/baremetal/pxe.py", line 315, in _inject_into_image
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     net_config = build_network_config(network_info)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/nova/virt/baremetal/pxe.py", line 134, in build_network_config
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     template = env.get_template(tmpl_file)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg/jinja2/environment.py", line 719, in get_template
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     return self._load_template(name, self.make_globals(globals))
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg/jinja2/environment.py", line 693, in _load_template
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     template = self.loader.load(self, name, globals)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg/jinja2/loaders.py", line 115, in load
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     source, filename, uptodate = self.get_source(environment, name)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]   File "/usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg/jinja2/loaders.py", line 180, in get_source
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3]     raise TemplateNotFound(template)
> 2014-02-21 08:05:44.084 11448 TRACE nova.compute.manager [instance: ef669459-1be1-4086-ae9b-7710a389eeb3] TemplateNotFound: net-static.ubuntu.template

I blame the wiki page.  It says

[baremetal]
net_config_template = /opt/stack/nova/nova/virt/baremetal/net-static.ubuntu.template

Yet

[root@openstack1.relabs.releng.scl3.mozilla.com ~]# locate net-static.ubuntu.template
/usr/lib/python2.6/site-packages/nova/virt/baremetal/net-static.ubuntu.template

I edited this and also updated the openstack wiki.  Note that this particular error "wedges" openstack-nova-compute, so you have to restart it.

And, hey, it powered up and booted the ubuntu diskimage!!  But it fails to contact 10.26.61.0:10000 as an iSCSI target.
With that fixed, it boots (!!) into the deploy image.  However, that image comes up and tries to hit the nova compute node on port 100000, which is NDMP.  Which gives me flashbacks to my work at Zmanda (I implemented Amanda's support for NDMP).  But it isn't iSCSI, so I'm confused.
Ah, nova-baremetal-deploy-helper serves that port.  Amusingly, it's just doing a simple HTTP app on that port, not NDMP, although NDMP would be a *much* better choice for imaging machines than iSCSI.  Go fig.

nova-baremetal-deploy-helper doesn't have an initscript, so I just started it on the command line.  After PXE-booting again (since there seems to be no other way to un-wedge an un-booted baremetal node):

> 2014-02-21 09:20:11.532 16574 TRACE nova.virt.baremetal.deploy_helper ProcessExecutionError: Unexpected error while running command.
> 2014-02-21 09:20:11.532 16574 TRACE nova.virt.baremetal.deploy_helper Command: sfdisk -uM /dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d92258c9537-lun-1
> 2014-02-21 09:20:11.532 16574 TRACE nova.virt.baremetal.deploy_helper Exit code: 1
> 2014-02-21 09:20:11.532 16574 TRACE nova.virt.baremetal.deploy_helper Stdout: '\nDisk /dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d92258c9537-lun-1: 30522 cylinders, 255 heads, 63 sectors/track\nOld situation:\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\n\n   Device Boot Start   End    MiB    #blocks   Id  System\n/dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d9225  *     1    100    100     102400   83  Linux\n/dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d9225      101   4196   4096    4194304   82  Linux swap / Solaris\n/dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d9225     4197  239428  235232  240877568   83  Linux\n/dev/disk/by-path/ip-10.26.61.177:3260-iscsi-iqn-ee0cccb7-2018-44cf-b308-0d9225        0      -      0          0    0  Empty\n'
> 2014-02-21 09:20:11.532 16574 TRACE nova.virt.baremetal.deploy_helper Stderr: 'Checking that no-one is using this disk right now ...\nOK\nWarning: given size (256005) exceeds max allowable size (239421)\n\nsfdisk: bad input\n'
I bumped the disk size down to <250GB and tried again, with more success.  It seems to think it imaged the host, but when it booted, all I got was a blinking cursor.
The plan is to make openstack1 just run as a cloud controller - so no nova-compute service, and no nova-network service.  Figuring out how to configure networking has been problematic, as different sources give different advice.

I'm bringing up hp1 as an additional hypervisor node, to test the centos image, and we'll probably reinstall hp6 and make it the compute node supervising the bare-metal nodes.
(In reply to Dustin J. Mitchell [:dustin] (I ignore NEEDINFO) from comment #18)

> I'm bringing up hp1 as an additional hypervisor node, to test the centos
> image, and we'll probably reinstall hp6 and make it the compute node
> supervising the bare-metal nodes.

Actually, I'm installing hp5 to be a compute node for baremetal only since it is already on the mobile.releng vlan.
I did this stuff:

yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
yum install -y openstack-nova-network
yum install -y openstack-nova-compute
yum install -y openstack-nova python-novaclient openstack-utils
openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@openstack1.relabs.releng.scl3.mozilla.com/nova
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid
openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://openstack1.relabs.releng.scl3.mozilla.com:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf DEFAULT glance_host openstack1.relabs.releng.scl3.mozilla.com

and then started the service, and somehow it magically invented a subnet for itself, 192.168.122.0/24.  That doesn't appear in the config files, nor in the DB (which does list 192.168.93.0/24, one of the networks added via the 'nova' command).  That, and creating a new instance didn't work either.  Foo.
I moved hp5's nic1 (eth1) to vlan278, and assigned its SREG-dictated IP there.  This way we have access to both hp5 and openstack1 without consoling.
Because consoling makes me inconsolable.
Well, I've submitted four docs/helpstrings patches to gerrit already, but it's still not working.
HP5
(jake set up repos)
yum install -y openstack-nova-network
yum install -y openstack-nova-compute
yum install -y openstack-nova python-novaclient openstack-utils
nova.conf settings from setup manual
openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@openstack1.relabs.releng.scl3.mozilla.com/nova
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid
openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://openstack1.relabs.releng.scl3.mozilla.com:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf DEFAULT glance_host openstack1.relabs.releng.scl3.mozilla.com
nova.conf settings by hand:
openstack-config --set /etc/nova/nova.conf DEFAULT network_manager nova.network.manager.FlatDHCPManager
# eth1 is the vlan278 interface on hp5 (note, different on openstack1)
openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth1
openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth0
openstack-config --set /etc/nova/nova.conf DEFAULT flat_network_bridge br260
[root@hp5.relabs.releng.scl3.mozilla.com network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
BRIDGE="br260"
IPV6INIT="no"
MTU="1500"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
PEERNTP="no"
[root@hp5.relabs.releng.scl3.mozilla.com network-scripts]# cat ifcfg-eth1
DEVICE="eth1"
HWADDR="B4:99:BA:A6:A6:17"
NM_CONTROLLED="no"
ONBOOT="yes"
PEERNTP="no"
IPADDR=10.26.78.34
NETMASK=255.255.255.0
[root@hp5.relabs.releng.scl3.mozilla.com network-scripts]# cat ifcfg-br260
DEVICE=br260
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
DELAY=0
eth0 needs to be promiscuous; redhat net scripts don't support that, so
ifconfig eth0 promisc
flatdhcp creates the bridge networks for us - flat doesn't. but too late now.
fixed networks are configured via the 'nova' client, but it's not clear how things work when there are multiple networks.  The --fixed-cidr selects a subset of the IPs in the subnet to be made available as fixed IPs, although it still reserves the first two and last one IPs and won't hand them out.
nova network-create thereisonlyone --fixed-range-v4=192.168.93.0/24 --fixed-cidr=192.168.93.32/28  --bridge=br260 --multi-host=T
Start all the services..
nova boot --flavor m1.tiny --image "CirrOS 0.3.1" cirros-test
it does eventually come up, but curling the metadata server fails.  Also, it's running a busybox shell and dies if you hit escape :(
metadata is fixed:

set
metadata_host=127.0.0.1
in nova.conf
and start the openstack-nova-metadata-api service, and restart the openstack-nova-network service

docs fix: https://review.openstack.org/#/c/76999/

(other fixes along the way: https://review.openstack.org/#/c/76980/ https://review.openstack.org/#/c/76971/ https://review.openstack.org/#/c/76962/ https://review.openstack.org/#/c/75480/)
hp5 had its kernel hostname set to hp5.mobile.relabs, and somehow that's leaked into something, somewhere, and I can't make it go away.  I'm going to try Windows Fix #1 (reboot), and if that doesn't work, Windows Fix #2 (reinstall the DB).
Or #3: reinstall the OS.  I've kickstarted both openstack1 and hp5.  I also switched the VLANs on hp5 to match openstack1: eth0 on vlan278, eth1 on vlan260.
With due apologies for etherpad's inability to get line-feeds right, here's what I did to set up openstack1 with keystone, glance, and the nova API:

----

kickstart in relabs
disable puppet (rm /etc/cron.d/puppetcheck, kill anything running)
clean out /etc/yum.repos.d
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
put the following in /etc/yum.repos.d/base.repo:
----
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1
#released updates 
[update]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1 
----
yum install -y mysql mysql-server MySQL-python
set in /etc/my.cnf:[mysqld]
bind-address = 10.26.78.17
service mysqld start
chkconfig mysqld on
mysql_install_db
mysql_secure_installation
# accept the defaults and set the root pw
yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y openstack-utils openstack-selinux
yum upgrade -y
reboot
yum install -y qpid-cpp-server memcached
set 
auth=no
in /etc/qpidd.conf
service qpidd start
chkconfig qpidd on
## Identity Service
yum install -y openstack-keystone python-keystoneclient
openstack-config --set /etc/keystone/keystone.conf sql connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-db --init --service keystone --password KEYSTONE_DBPASS
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
chown -R keystone:keystone /etc/keystone/* /var/log/keystone/keystone.log
service openstack-keystone start
chkconfig openstack-keystone on
export OS_SERVICE_TOKEN=ADMIN_TOKEN
export OS_SERVICE_ENDPOINT=http://openstack1.relabs.releng.scl3.mozilla.com:35357/v2.0
keystone tenant-create --name=admin --description="Admin Tenant"
keystone tenant-create --name=service --description="Service Tenant"
keystone user-create --name=admin --pass=ADMIN_PASS --email=dustin@mozilla.com
keystone role-create --name=admin
keystone role-create --name="Member"
keystone user-create --name=admin --pass=ADMIN_PASS --email=dustin@mozilla.com
keystone role-create --name=admin
keystone role-create --name="Member"
keystone user-role-add --user=admin --tenant=admin --role=admin
keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
# noting the genreated id and using it in..
keystone endpoint-create --service-id=60e66ce94d7745a1872e0701c6d520c6 --publicurl=http://openstack1.relabs.releng.scl3.mozilla.com:5000/v2.0 --internalurl=http://openstack1.relabs.releng.scl3.mozilla.com:5000/v2.0 --adminurl=http://openstack1.relabs.releng.scl3.mozilla.com:35357/v2.0
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
add to ~/keystonerc:
----
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://openstack1.relabs.releng.scl3.mozilla.com:35357/v2.0
----
and add 'source keystonerc' to ~/.bashrc
source keystonerc
keystone user-list
## Image Service
yum install -y openstack-glance
openstack-config --set /etc/glance/glance-api.conf \
   DEFAULT sql_connection mysql://glance:GLANCE_DBPASS@openstack1.relabs.releng.scl3.mozilla.com/glance
openstack-config --set /etc/glance/glance-registry.conf \
   DEFAULT sql_connection mysql://glance:GLANCE_DBPASS@openstack1.relabs.releng.scl3.mozilla.com/glance
openstack-db --init --service glance --password GLANCE_DBPASS
keystone user-create --name=glance --pass=aisees0A --email=dustin@mozilla.com
keystone user-role-add --user=glance --tenant=service --role=admin
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://openstack1.relabs.releng.scl3.mozilla.com:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_user glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://openstack1.relabs.releng.scl3.mozilla.com:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_user glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone 
cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini
cp /usr/share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini
edit filter:authtoken in both:
[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
admin_user=glance
admin_tenant_name=service
admin_password=GLANCE_PASS
keystone service-create --name=glance --type=image \
  --description="Glance Image Service"
# and use that ID in..
keystone endpoint-create --service-id=the_service_id_above --publicurl=http://openstack1.relabs.releng.scl3.mozilla.com:9292 --internalurl=http://openstack1.relabs.releng.scl3.mozilla.com:9292 --adminurl=http://openstack1.relabs.releng.scl3.mozilla.com:9292 
service openstack-glance-api start
service openstack-glance-registry start
chkconfig openstack-glance-api on
chkconfig openstack-glance-registry on
yum install -y openstack-nova python-novaclient
openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@openstack1.relabs.releng.scl3.mozilla.com/nova
openstack-config --set /etc/nova/nova.conf \ >   DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid
openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname openstack1.relabs.releng.scl3.mozilla.com
openstack-db --init --service nova --password NOVA_DBPASS
# note that in the following we use the *public* IP of this host - the host doesn't have an IP on the internal network (as described elsewhere in the docs)
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.26.78.17
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 10.26.78.17
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.26.78.17
keystone user-create --name=nova --pass=NOVA_PASS --email=dustin@mozilla.com
keystone user-role-add --user=nova --tenant=service --role=admin
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password ADMIN_PASSWORD 
# edit /etc/nova/api-paste.ini:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = openstack1.relabs.releng.scl3.mozilla.com
auth_port = 35357
auth_protocol = http
auth_uri = http://openstack1.relabs.releng.scl3.mozilla.com:5000/v2.0
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS
keystone service-create --name=nova --type=compute  --description="Nova Compute service"
keystone endpoint-create --service-id=the_service_id_above --publicurl=http://openstack1.relabs.releng.scl3.mozilla.com:8774/v2/%\(tenant_id\)s --internalurl=http://openstack1.relabs.releng.scl3.mozilla.com:8774/v2/%\(tenant_id\)s --adminurl=http://openstack1.relabs.releng.scl3.mozilla.com:8774/v2/%\(tenant_id\)s
service openstack-nova-api start
service openstack-nova-cert start
service openstack-nova-consoleauth start
service openstack-nova-scheduler start
service openstack-nova-conductor start
service openstack-nova-novncproxy start
chkconfig openstack-nova-api on
chkconfig openstack-nova-cert on
chkconfig openstack-nova-consoleauth on
chkconfig openstack-nova-scheduler on
chkconfig openstack-nova-conductor on
chkconfig openstack-nova-novncproxy on
## Dashboard
yum install -y memcached python-memcached mod_wsgi openstack-dashboard
edit /etc/openstack-dashboard/local_settings
## note: using the Django session cache, not memcached (why bother)
ALLOWED_HOSTS = ['openstack1.relabs.releng.scl3.mozilla.com']
service httpd start
service memcached start
chkconfig httpd on
chkconfig memcached on
Came across another method of creating centos images - https://github.com/gc3-uzh-ch/openstack-tools (using virt-inst)
Setup of hp5, the compute node:

HP5
kickstart in relabs
disable puppet (rm /etc/cron.d/puppetcheck, kill anything running)
clean out /etc/yum.repos.d
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
put the following in /etc/yum.repos.d/base.repo:
----
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1
#released updates 
[update]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1 
----
yum install -y mysql MySQL-python
yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum upgrade -y
yum install -y openstack-utils openstack-selinux
reboot
yum install -y openstack-nova python-novaclient openstack-nova-compute
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host openstack1.relabs.releng.scl3.mozilla.com
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password ADMIN_PASS
openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid 
openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname openstack1.relabs.releng.scl3.mozilla.com 
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0 
openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address $(facter ipaddress)
openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://openstack1.relabs.releng.scl3.mozilla.com:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf DEFAULT glance_host  openstack1.relabs.releng.scl3.mozilla.com
/etc/nova/api-paste.ini:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = openstack1.relabs.releng.scl3.mozilla.com
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = ADMIN_PASS
service libvirtd start
service messagebus start
chkconfig libvirtd on
chkconfig messagebus on
service openstack-nova-compute start
chkconfig openstack-nova-compute on
## Nova-Network
openstack-config --set /etc/nova/nova.conf DEFAULT network_manager nova.network.manager.FlatDHCPManager
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
openstack-config --set /etc/nova/nova.conf DEFAULT network_size 254
openstack-config --set /etc/nova/nova.conf DEFAULT allow_same_net_traffic False
openstack-config --set /etc/nova/nova.conf DEFAULT multi_host True
openstack-config --set /etc/nova/nova.conf DEFAULT send_arp_for_ha True
openstack-config --set /etc/nova/nova.conf DEFAULT share_dhcp_address True
openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release True
openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth1
openstack-config --set /etc/nova/nova.conf DEFAULT flat_network_bridge br260
openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth1
yum install -y openstack-nova-api
service openstack-nova-metadata-api start
chkconfig openstack-nova-metadata-api on
service openstack-nova-network start
chkconfig openstack-nova-network on
scp openstack1:keystonerc . 
source keystonerc
nova network-create vmnet --fixed-range-v4=192.168.93.0/24 --fixed-cidr=192.168.93.32/28 --bridge br260
Set
 net.ipv4.ip_forward = 1
in /etc/sysctl.conf on every nova-network node (hp5 only right now), and run `sysctl net.ipv4.ip_forward=1`.
I added rules for incoming ping and ssh to the security group.  That gives me *inbound* accesss to those ports of VMs.  However, any traffic off of the 192.168.93.0/24 subnet is forwarded without NAT, which means it doesn't get very far.
To add nodes in different networks, you need to specify the network to nova boot:

nova boot --flavor m1.tiny --image 'cirros-0.3.1' --key_name dustin --nic net-id=4f8e867b-fbee-4432-9051-8b6eb1cc6f59 cirros93
nova boot --flavor m1.tiny --image 'cirros-0.3.1' --key_name dustin --nic net-id=7aaa1243-699c-4320-af8a-1cf9d54095eb cirros-test94

Otherwise you hit https://bugs.launchpad.net/nova/+bug/1211784, where every network is added to the instance, whether that network is associated with the compute node or not.  The patch for that bug languished due to a bad commit message, and is now bitrotted.

There's no way to have an IP selected dynamically after the compute node is chosen by the scheduler.  So even with 1211784 fixed, if a compute node had two networks configured, instances would be configured to use both networks.
hp6.relabs has been installed as compute node and configured for baremetal.  Eth0 on vlan278 and eth1 on vlan260.

Here are the commands I ran minus all the troubleshooting BS
Images have been recreated and injected into glance:
bin/disk-image-create -u baremetal base ubuntu -o bm-ubuntu
bin/ramdisk-image-create -a i386 -o pxe-ramdisk deploy ramdisk base ubuntu
glance image-create --name bm-ubuntu-vmlinuz --public --disk-format aki < bm-ubuntu.vmlinuz
glance image-create --name bm-ubuntu-initrd --public --disk-format ari < bm-ubuntu.initrd
glance image-create --name bm-ubuntu-image --public --disk-format qcow2 --container-format bare --property kernel_id=d9fd8194-5015-4359-be24-2b80668a78b2 --property ramdisk_id=77f5fd1e-5b6a-4eef-b728-fe509e2ced23 < bm-ubuntu.qcow2
glance image-create --name deploy-vmlinuz --public --disk-format aki < pxe-ramdisk.kernel
glance image-create --name deploy-initrd --public --disk-format ari < pxe-ramdisk.initramfs

nova_bm database initialized and nova_bm user granted access

sudo mkdir -p /tftpboot/pxelinux.cfg
sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot/
sudo chown -R nova /tftpboot
sudo mkdir -p /var/lib/nova/baremetal/dnsmasq
sudo mkdir -p /var/lib/nova/baremetal/console
sudo chown -R nova /var/lib/nova/baremetal

/usr/bin/nova-baremetal-deploy-helper &


nova flavor-create ix-mn.crap 100 7864 240 8
nova flavor-key my-baremetal-flavor set cpu_arch='{i386|x86_64}' "baremetal:deploy_kernel_id"=737f81c4-c387-4bba-85d3-53244b4e7c50 "baremetal:deploy_ramdisk_id"=fc63e70f-05ee-4d6b-a7b9-397021764eee
nova baremetal-node-create --pm_address=10.26.61.102 --pm_user=$$$$$$$$$$$$$ --pm_password=$$$$$$$$$ openstack1.mobile.releng.scl3.mozilla.com 8 7864 250 00:25:90:94:22:b0

dnsmasq --conf-file= --port=0 --enable-tftp --tftp-root=/tftpboot --dhcp-boot=pxelinux.0 --bind-interfaces --pid-file=/var/run/dnsmasq.pid --interface=eth1 --dhcp-range=192.168.91.10,192.168.91.99,255.255.255.0

(using 192.168.91 so it won't overlap with the vmnet)

First attempt to boot a bm instance got wedged since all the fixed_ips had been reserved.  I wasn't able to delete the instance and thought it was safer to reinitialize the nova db
After that, I recreated the bm flavor and flavor key plus the vmnet network.

On the next attempt, the instance seemed to enter the BUILDING state just fine but ipmi didn't power on the host (ix-mn-3).  pxeconfig files were written to /tftpboot so I manually powered on the host via ipmi but failed to get an dhcp address.  I tried killing the dnsmasq I had started up by hand and ran nova-network instead.  When nova-network came up it automatically created br260 on eth1 and assigned an ip from vmnet.  It also fired up 2 dnsmasq processes bond to br260.  I reset ix-mn-3 and tried pxe boot.  This time it got an IP but failed to find the tftp server ip.

A couple things to still figure out here:
(a) why is the manual dnsmasq process not serving up IPs (I'm fairly sure we shouldn't be running nova-network here since the assigned ips are injected with the template file)
-- might have to do with nova-network reconfiguring ifaces and changing iptables
(b) why is the host not being powered on by nova/ipmitool
Regarding (a), we're running in Flat DHCP mode with multi host mode, so I think every hypervisor needs to be running nova-network and that will run dnsmasq.  That means that hp5 is already running DHCP on vlan260, so perhaps that's why it didn't get PXE information?

From the wiki: "NOTE: This dnsmasq process must be the only process on the network answering DHCP requests from the MAC addresses of the enrolled bare metal nodes. If another DHCP server answers the PXE boot, deployment is likely to fail. This means that you must disable neutron-dhcp. Work on this limitation is planned for the Havana cycle. "

That means we need to run even our hypervisors in Flat mode, not FlatDHCP.  Which means we need to hack things to support injecting IPs into CentOS (and Windows and OS X) images.

It sounds like the manually-started dnsmasq process should be configured to use IPs within the same subnet as used by nova-network, but outside of the range of fixed IPs it's allocating from (so within --fixed-range-v4 but not within --fixed-cidr, for those following along at home).
(In reply to Dustin J. Mitchell [:dustin] (I ignore NEEDINFO) from comment #36)
> Regarding (a), we're running in Flat DHCP mode with multi host mode, so I
> think every hypervisor needs to be running nova-network and that will run
> dnsmasq.  That means that hp5 is already running DHCP on vlan260, so perhaps
> that's why it didn't get PXE information?

That is interesting because when I killed off all dnsmasq processes on hp6 (not touching hp5),  I couldn't get any DHCP response during PXE.  If hp5 was serving dhcp on vlan260, ix-mn-3 should have at least gotten a response instead of timing out.

> 
> From the wiki: "NOTE: This dnsmasq process must be the only process on the
> network answering DHCP requests from the MAC addresses of the enrolled bare
> metal nodes. If another DHCP server answers the PXE boot, deployment is
> likely to fail. This means that you must disable neutron-dhcp. Work on this
> limitation is planned for the Havana cycle. "
> 
> That means we need to run even our hypervisors in Flat mode, not FlatDHCP. 
> Which means we need to hack things to support injecting IPs into CentOS (and
> Windows and OS X) images.
> 
> It sounds like the manually-started dnsmasq process should be configured to
> use IPs within the same subnet as used by nova-network, but outside of the
> range of fixed IPs it's allocating from (so within --fixed-range-v4 but not
> within --fixed-cidr, for those following along at home).

That contradicts the notes from the same wiki page.
"# Start dnsmasq for baremetal deployments. Change IFACE and RANGE as needed.
 # Note that RANGE must not overlap with the instance IPs assigned by Nova or Neutron."
(In reply to Jake Watkins [:dividehex] from comment #37)
> That is interesting because when I killed off all dnsmasq processes on hp6
> (not touching hp5),  I couldn't get any DHCP response during PXE.  If hp5
> was serving dhcp on vlan260, ix-mn-3 should have at least gotten a response
> instead of timing out.

Ah, I bet DHCP is iptable'd off to only hit that compute node.  That makes things easier!

> That contradicts the notes from the same wiki page.
> "# Start dnsmasq for baremetal deployments. Change IFACE and RANGE as needed.
>  # Note that RANGE must not overlap with the instance IPs assigned by Nova
> or Neutron."

It doesn't quite conflict: the instance IPs are the fixed IPs available, so as long as you're not configuring dnsmasq with any of those specific IPs, it's fine if you're configuring it with a range in the same subnet.  In fact, I think that will be preferable - if it's in another subnet, then how will it communicate with the pxe server?
(In reply to Dustin J. Mitchell [:dustin] (I ignore NEEDINFO) from comment #38)
> It doesn't quite conflict: the instance IPs are the fixed IPs available, so
> as long as you're not configuring dnsmasq with any of those specific IPs,
> it's fine if you're configuring it with a range in the same subnet.  In
> fact, I think that will be preferable - if it's in another subnet, then how
> will it communicate with the pxe server?

Eth1 has a vip matching the same subnet served up by dnsmasq.  During the PXE boot processes, it can then reach the needed services on hp6 such as iscsi and tftp.  I'll try your suggestion of using the same subnet with the range outside the fixed_ip range.
Got ix-mn-3 to pxeboot at least

- removed eth1:0 alias and assigned 192.168.93.100/24 to eth1
- ensured openstack-nova-network was disabled across runlevels (via chkconfig)
- rebooted to make sure networking and iptables were in a fresh state

Launched dnsmasq:
dnsmasq --conf-file= --port=0 --enable-tftp --tftp-root=/tftpboot --dhcp-boot=pxelinux.0 --bind-interfaces --pid-file=/var/run/dnsmasq.pid --interface=eth1 --dhcp-range=192.168.93.50,192.168.93.60 --log-dhcp

Launched nova-baremetal-deploy-helper:
nova-baremetal-deploy-helper &

Then rebooted ix-mn-3, hit F12 to netboot.  It pxebooted, got the kernel/ramdisk from tftp and initiated an iscsi session but failed from the disk size mismatch.  Same thing dustin say the first time around.  I'm going to adjust the flavor for a smaller disk and try again.

Here is the error as logged by nova-baremetal-deploy-helper:

2014-03-06 11:00:03.972 1683 ERROR nova.virt.baremetal.deploy_helper [req-d5c76ecd-f929-410b-bd37-dc28e38b1b3f None None] Cmd     : sfdisk -uM /dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92d0b4a79-lun-1
2014-03-06 11:00:03.986 1683 ERROR nova.virt.baremetal.deploy_helper [req-d5c76ecd-f929-410b-bd37-dc28e38b1b3f None None] StdOut  : '\nDisk /dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92d0b4a79-lun-1: 30522 cylinders, 255 heads, 63 sectors/track\nOld situation:\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\n\n   Device Boot Start   End    MiB    #blocks   Id  System\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0+ 20481- 20482-  20972857   83  Linux\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92    20481+ 22536-  2056-   2104515   82  Linux swap / Solaris\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0      -      0          0    0  Empty\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0      -      0          0    0  Empty\n'
2014-03-06 11:00:03.986 1683 ERROR nova.virt.baremetal.deploy_helper [req-d5c76ecd-f929-410b-bd37-dc28e38b1b3f None None] StdErr  : 'Checking that no-one is using this disk right now ...\nOK\nWarning: given size (245768) exceeds max allowable size (239421)\n\nsfdisk: bad input\n'
2014-03-06 11:00:04.493 1683 ERROR nova.virt.baremetal.deploy_helper [req-d5c76ecd-f929-410b-bd37-dc28e38b1b3f None None] deployment to node 1 failed
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper Traceback (most recent call last):
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/cmd/baremetal_deploy_helper.py", line 252, in run
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     deploy(**params)
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/cmd/baremetal_deploy_helper.py", line 217, in deploy
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     LOG.error(_("StdErr  : %r"), err.stderr)
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/cmd/baremetal_deploy_helper.py", line 211, in deploy
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     root_uuid = work_on_disk(dev, root_mb, swap_mb, image_path)
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/cmd/baremetal_deploy_helper.py", line 183, in work_on_disk
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     make_partitions(dev, root_mb, swap_mb)
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/cmd/baremetal_deploy_helper.py", line 96, in make_partitions
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     check_exit_code=[0])
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/utils.py", line 177, in execute
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     return processutils.execute(*cmd, **kwargs)
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper   File "/usr/lib/python2.6/site-packages/nova/openstack/common/processutils.py", line 178, in execute
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper     cmd=' '.join(cmd))
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper ProcessExecutionError: Unexpected error while running command.
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper Command: sfdisk -uM /dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92d0b4a79-lun-1
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper Exit code: 1
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper Stdout: '\nDisk /dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92d0b4a79-lun-1: 30522 cylinders, 255 heads, 63 sectors/track\nOld situation:\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\n\n   Device Boot Start   End    MiB    #blocks   Id  System\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0+ 20481- 20482-  20972857   83  Linux\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92    20481+ 22536-  2056-   2104515   82  Linux swap / Solaris\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0      -      0          0    0  Empty\n/dev/disk/by-path/ip-192.168.93.50:3260-iscsi-iqn-252ffc2a-fd27-4e30-b6ae-08c92        0      -      0          0    0  Empty\n'
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper Stderr: 'Checking that no-one is using this disk right now ...\nOK\nWarning: given size (245768) exceeds max allowable size (239421)\n\nsfdisk: bad input\n'
2014-03-06 11:00:04.493 1683 TRACE nova.virt.baremetal.deploy_helper
Before I adjust the flavor, I need to figure out how to remove the current instance without reinitializing the reinitializing the entire nova database.  I could delete it directly from the instances table but I'm not sure if that will have an side effects on state or if it referenced elsewhere.

nova force-delete was a no go.
[root@hp6.relabs.releng.scl3.mozilla.com ~]# nova force-delete 252ffc2a-fd27-4e30-b6ae-08c92d0b4a79
ERROR: Cannot 'forceDelete' while instance is in vm_state building (HTTP 409) (Request-ID: req-d5f0d3c7-c5f7-42b3-9e86-2d9e6c1247db)
A little help from #openstack and it is removed.

nova reset-state 252ffc2a-fd27-4e30-b6ae-08c92d0b4a79
nova delete 252ffc2a-fd27-4e30-b6ae-08c92d0b4a79
Although now I get a 500 internal server error from the web dashboard :-/
(In reply to Jake Watkins [:dividehex] from comment #43)
> Although now I get a 500 internal server error from the web dashboard :-/

It was transient and might have been a coincidence
I change the network manager to the non-dhcp driver (FlatManager).  Plus enabled ip injection.  Since the FlatManager does not setup bridges or launch dnsmasq, these will need to be configure manually for the time being (and later by puppet).

Added to nova.conf
network_manager = nova.network.manager.FlatManager
flat_injected=true

After restarting nova-compute and nova-network, launching an image (via nova boot) all seems to work from beginning to end without any tracebacks or other errors.  Althought, the final images still ends up on a blinking cursor on boot.

I also ran into a few weird "error" or issues.
1.  If an baremetal instance fails on deployment and the nova-compute service is restarted, nova-compute dies with an UnknownInstance error.  I was able to delete the instance but it took about a minute for the things to timeout before actually removing the instance.  I was then able to restart nova-compute on hp6.

2. If a deploy never completes the building stage, you must 'nova reset-state' before being able to call 'nova delete'.  The pxe building state can have a timeout int set in nova.conf.  It is currently default 0 (timeout disabled)

3. At one point the nova-baremetal-deploy-helper process logged 'CRITICAL nova [-] [Errno 5] Input/output error' and died during a deploy.  Probably a bug.  Restarted it and it has been running fine since.

4. After a couple successful baremetal boot->Running->delete tests, I got a traceback:
AttributeError: No such RPC function '_rpc_allocate_fixed_ip'
This makes me wonder if it is an problem to be running FlatDHCPManager on hp5 and FlatManager on hp6. :-/
I shutdown nova-compute nova-network, nova-api-metadata on hp5 and the baremetal deployments from hp6 are running smoothly now.  I can consistently nova boot a baremetal instance into a "RUNNING" state (which means "image put on disk as far as openstack is concerned") and then delete the instance and then repeat.

After a delete, it takes a few moments for nova compute to audit the freed up resources.  Attempting to nova boot before that will cause the instance to immediately appear but in an ERROR state.

Also saw ISE again on the web dashboard.  This time, I restarted httpd and it recovered.

Next step is to figure out why the image is not booting.
Baremetal linux deployment success!

This cleared up a misconception I (and maybe others) had about the deployment of baremetal images from openstack.  The baremetal deployment helper does NOT install a bootloader, boot partition, kernel or initramfs iamge; it only partitions and write the root filesystem to the baremetal disk.   From that point, openstack boots baremetal nodes to pxe (via ipmi) which then boots the image kernel and initramfs.  To boot the image kernel and initramfs after the deployment, the deployment initramfs needs to run kexec.  Where it retrieves and boots the image kernel/initrd.  I rebuilt the deployment image with the kexec element and all is well.

I also rebuilt the test ubuntu image to be deployed with local-config and cloud-init-nocloud elements.  Local-config copies the root authorized keys to the image.  In this case, the keys are limited to those with root keys on the relabs puppet environment.  The cloud-init-nocloud points to on-disk metadata/userdata sources; useful while testing.  Proxy metadata still needs to be configured on the baremetal compute host.

The next step is to get baremetal and virt compute nodes to work from the same cloud controller.  According to the docs this is possible though using separate tenants.


Cmds used in creating the new deployment kernel/initrd and the ubuntu 13.10 test image:

bin/disk-image-create -u baremetal base ubuntu cloud-init-nocloud local-config -o ubuntu-13.10-1
bin/ramdisk-image-create -a i386 -o pxe-ramdisk-1 deploy ramdisk base ubuntu deploy-kexec

Cmds to import images to glance, add new flavor w/deployment images, and boot new flavor:

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name ubuntu-13.10-1-vmlinuz --public --disk-format aki < ubuntu-13.10-1.vmlinuz
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | d3ad83d258c73fa007142e1cf5019e2f     |
| container_format | aki                                  |
| created_at       | 2014-03-08T03:15:55                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | aki                                  |
| id               | d2b05afa-9b0c-4024-aced-2bcd91415efd |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | ubuntu-13.10-1-vmlinuz               |
| owner            | 1758deaca4e54c95a75fca0c1033c582     |
| protected        | False                                |
| size             | 5634192                              |
| status           | active                               |
| updated_at       | 2014-03-08T03:15:55                  |
+------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name ubuntu-13.10-1-initrd --public --disk-format ari < ubuntu-13.10-1.initrd
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 3833bea5eb5dcc07c4355529ff7e5546     |
| container_format | ari                                  |
| created_at       | 2014-03-08T03:16:42                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | ari                                  |
| id               | a8af3499-4bef-4755-9f18-666925491fc3 |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | ubuntu-13.10-1-initrd                |
| owner            | 1758deaca4e54c95a75fca0c1033c582     |
| protected        | False                                |
| size             | 22073149                             |
| status           | active                               |
| updated_at       | 2014-03-08T03:16:42                  |
+------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name ubuntu-13.10-1-image --public --disk-format qcow2 --container-format bare --property kernel_id=d2b05afa-9b0c-4024-aced-2bcd91415efd --property ramdisk_id=a8af3499-4bef-4755-9f18-666925491fc3 < ubuntu-13.10-1.qcow2
+-----------------------+--------------------------------------+
| Property              | Value                                |
+-----------------------+--------------------------------------+
| Property 'kernel_id'  | d2b05afa-9b0c-4024-aced-2bcd91415efd |
| Property 'ramdisk_id' | a8af3499-4bef-4755-9f18-666925491fc3 |
| checksum              | a16f8ae9cde79e0605b693f985393056     |
| container_format      | bare                                 |
| created_at            | 2014-03-08T03:18:35                  |
| deleted               | False                                |
| deleted_at            | None                                 |
| disk_format           | qcow2                                |
| id                    | 826aed99-d30a-47db-a08b-9bc474b8d634 |
| is_public             | True                                 |
| min_disk              | 0                                    |
| min_ram               | 0                                    |
| name                  | ubuntu-13.10-1-image                 |
| owner                 | 1758deaca4e54c95a75fca0c1033c582     |
| protected             | False                                |
| size                  | 1256980480                           |
| status                | active                               |
| updated_at            | 2014-03-08T03:18:43                  |
+-----------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name pxe-ramdisk-1-kernel --public --disk-format aki < pxe-ramdisk-1.kernel
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | e8bd010aa70524abade9fad3a039694f     |
| container_format | aki                                  |
| created_at       | 2014-03-08T03:20:13                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | aki                                  |
| id               | 39c9bb46-7a94-4d6b-af2f-6794020dda67 |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | pxe-ramdisk-1-kernel                 |
| owner            | 1758deaca4e54c95a75fca0c1033c582     |
| protected        | False                                |
| size             | 5667920                              |
| status           | active                               |
| updated_at       | 2014-03-08T03:20:13                  |
+------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# glance image-create --name pxe-ramdisk-1-initramfs --public --disk-format ari < pxe-ramdisk-1.initramfs
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 072482e8298581d2daf27db033665e64     |
| container_format | ari                                  |
| created_at       | 2014-03-08T03:20:50                  |
| deleted          | False                                |
| deleted_at       | None                                 |
| disk_format      | ari                                  |
| id               | fd3448d8-5f96-448d-b433-c95bc206a2ad |
| is_public        | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | pxe-ramdisk-1-initramfs              |
| owner            | 1758deaca4e54c95a75fca0c1033c582     |
| protected        | False                                |
| size             | 78909835                             |
| status           | active                               |
| updated_at       | 2014-03-08T03:20:51                  |
+------------------+--------------------------------------+

[root@openstack1.relabs.releng.scl3.mozilla.com diskimage-builder]# nova flavor-create ix-mn.crap2 101 7864 200 8
+-----+-------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID  | Name        | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+-----+-------------+-----------+------+-----------+------+-------+-------------+-----------+
| 101 | ix-mn.crap2 | 7864      | 200  | 0         |      | 8     | 1.0         | True      |
+-----+-------------+-----------+------+-----------+------+-------+-------------+-----------+

nova flavor-key ix-mn.crap2 set cpu_arch='{i386|x86_64}' "baremetal:deploy_kernel_id"=39c9bb46-7a94-4d6b-af2f-6794020dda67 "baremetal:deploy_ramdisk_id"=fd3448d8-5f96-448d-b433-c95bc206a2ad

nova boot --flavor ix-mn.crap2 --image ubuntu-13.10-1-image ubuntu-test
(In reply to Jake Watkins [:dividehex] from comment #47)
> Baremetal linux deployment success!
> 
> This cleared up a misconception I (and maybe others) had about the
> deployment of baremetal images from openstack.  The baremetal deployment
> helper does NOT install a bootloader, boot partition, kernel or initramfs
> iamge; it only partitions and write the root filesystem to the baremetal
> disk.   From that point, openstack boots baremetal nodes to pxe (via ipmi)
> which then boots the image kernel and initramfs.  To boot the image kernel
> and initramfs after the deployment, the deployment initramfs needs to run
> kexec.  Where it retrieves and boots the image kernel/initrd.  I rebuilt the
> deployment image with the kexec element and all is well.

\o/ for getting stuff working and figuring out our misconception.
Depends on: 982739
Neutron was installed and configured a couple weeks ago and now replaces nova-networking.  This gives us a lot more features and control of network configuration.  I've opted to use openvswitch with gre tunneling.  This will dynamically create and configure gre tunnels and bridges to all compute hosts and neutron controller. I've also create a router, network, subnet for the virtual instance and a seperate network and subnet for the baremetal instances.  The virtual instances are attached to demo-net while the baremetal are attached to releng.scl3 under the associated subnet 'mobile.releng.scl3'

The baremetal network configuration is set to match the actual mobile.releng.scl3 network.  This means baremetal nodes are given static ips, netmask, dns, and gateway ip which allow the baremetal instances to traverse the releng fw rather than bridge back to neutron as the virtual instances do.

One limitation I noticed in doing this was the static network injection does not set search domains. This is a problem when trying to resolve things such as repo and puppet.  Another limitation, when using the native router on the mobile.releng network is baremetal instances cannot route metadata '169.254.168.254'.  This can probably be overcome by adding a NAT rule to the router which points back at the openstack metadata service running on port 8775.

== CLI c&p notes ==

[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron net-create ext-net -- --router:external=True --provider:network_type gre --provider:segmentation_id 2
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 9cce4df0-3008-492f-8cd7-f648234a20df |
| name                      | ext-net                              |
| provider:network_type     | gre                                  |
| provider:physical_network |                                      |
| provider:segmentation_id  | 2                                    |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 1758deaca4e54c95a75fca0c1033c582     |
+---------------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# nova network-list
+--------------------------------------+---------+------+
| ID                                   | Label   | Cidr |
+--------------------------------------+---------+------+
| 9cce4df0-3008-492f-8cd7-f648234a20df | ext-net | -    |
+--------------------------------------+---------+------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron subnet-create ext-net --allocation-pool start=10.26.51.1,end=10.26.51.254 --gateway=10.26.48.1 --enable_dhcp=false 10.26.48.0/22
Created a new subnet:
+------------------+------------------------------------------------+
| Field            | Value                                          |
+------------------+------------------------------------------------+
| allocation_pools | {"start": "10.26.51.1", "end": "10.26.51.254"} |
| cidr             | 10.26.48.0/22                                  |
| dns_nameservers  |                                                |
| enable_dhcp      | False                                          |
| gateway_ip       | 10.26.48.1                                     |
| host_routes      |                                                |
| id               | 6f44bdd5-6045-4f53-a974-6fc054cc48d2           |
| ip_version       | 4                                              |
| name             |                                                |
| network_id       | 9cce4df0-3008-492f-8cd7-f648234a20df           |
| tenant_id        | 1758deaca4e54c95a75fca0c1033c582               |
+------------------+------------------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# keystone tenant-create --name demo_tenant
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |                                  |
|   enabled   |               True               |
|      id     | 487c6020289149c28cb36b89296afe3b |
|     name    |           demo_tenant            |
+-------------+----------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# keystone tenant-list
+----------------------------------+-------------+---------+
|                id                |     name    | enabled |
+----------------------------------+-------------+---------+
| 1758deaca4e54c95a75fca0c1033c582 |    admin    |   True  |
| 487c6020289149c28cb36b89296afe3b | demo_tenant |   True  |
| 7a9ad3bc126b499fabb82766c93c26df |   service   |   True  |
+----------------------------------+-------------+---------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron router-create ext-to-int --tenant-id 487c6020289149c28cb36b89296afe3b
Created a new router:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| external_gateway_info |                                      |
| id                    | 924d9f52-d59a-4fce-bf7e-abf514438ca0 |
| name                  | ext-to-int                           |
| status                | ACTIVE                               |
| tenant_id             | 487c6020289149c28cb36b89296afe3b     |
+-----------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron router-gateway-set 924d9f52-d59a-4fce-bf7e-abf514438ca0 9cce4df0-3008-492f-8cd7-f648234a20df
Set gateway for router 924d9f52-d59a-4fce-bf7e-abf514438ca0
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron net-create --tenant-id 487c6020289149c28cb36b89296afe3b demo-net
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 41812a22-b903-46d1-a7fa-f2d8bed412d2 |
| name                      | demo-net                             |
| provider:network_type     | gre                                  |
| provider:physical_network |                                      |
| provider:segmentation_id  | 1                                    |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 487c6020289149c28cb36b89296afe3b     |
+---------------------------+--------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron subnet-create --tenant-id 487c6020289149c28cb36b89296afe3b demo-net 192.168.95.0/24 --gateway 192.168.95.1
Created a new subnet:
+------------------+----------------------------------------------------+
| Field            | Value                                              |
+------------------+----------------------------------------------------+
| allocation_pools | {"start": "192.168.95.2", "end": "192.168.95.254"} |
| cidr             | 192.168.95.0/24                                    |
| dns_nameservers  |                                                    |
| enable_dhcp      | True                                               |
| gateway_ip       | 192.168.95.1                                       |
| host_routes      |                                                    |
| id               | 133b4ffa-540e-45b3-8f97-c946e0894f41               |
| ip_version       | 4                                                  |
| name             |                                                    |
| network_id       | 41812a22-b903-46d1-a7fa-f2d8bed412d2               |
| tenant_id        | 487c6020289149c28cb36b89296afe3b                   |
+------------------+----------------------------------------------------+
[root@openstack1.relabs.releng.scl3.mozilla.com neutron]# neutron router-interface-add 924d9f52-d59a-4fce-bf7e-abf514438ca0 133b4ffa-540e-45b3-8f97-c946e0894f41
Added interface 9585b39c-7dec-41fd-90bb-d8162962b21c to router 924d9f52-d59a-4fce-bf7e-abf514438ca0.
The ip range for baremetal instances have been reserved in inventory.  I've also created 2 A/PTR records for the 2 ix-mn hosts already available to openstack.
https://inventory.mozilla.org/en-US/core/range/21/
I've successfully deployed an image of Ubuntu 12.04 which is based on a kickstarted install from puppetagain.

The image is named 'ubuntu-12.04-7.qcow2'

I tried using the ubuntu cloud images and the ubuntu minimal images without success. They would either fail during a diskimage-builder build or during a puppet run after a deployment.  Both root causes were mismatched package dependencies between what came installed on the image vs. what was available in the puppetagain repos.  Needless to say, our repos are out of date.  Once I captured the post kickstarted image and deployed it, puppet runs happened flawlessly.

After capture, the image also needed to be run through the diskimage-builder process in order to prep and sanitize it before being imported into glance.  Since the root fs image wasn't coming from the pre-built cloud images, some extra steps were needed.  This included resetting /etc/fstab and udev net rules.  It also included installing cloud-init and setting the conf to point to NoCloud datasource.  This was crucial to getting ssh host keys generated and set on first run.
Depends on: 990733
Summary: Install OpenStack in relabs → Experiment with OpenStack as a future cloud deployment platform for releng
While looking into Ironic last week, one particular blueprint stood out:

tl;dr:
Windows images are not supported in ironic just yet. In its current form, the ironic driver insists on creating partitions and deploying an image to a root partition. This doesn't allow an entire windows disk image (w/ bootloader) to be pushed to disk.  The solution would be to flag an image in glance as to being either partition or whole disk.

https://blueprints.launchpad.net/ironic/+spec/windows-disk-image-support
I talked to some OS folks at their booth at PyCon, and they suggested that we will most likely need to write our own drivers.  In fact, they indicated that just about every OpenStack deployment that is more than the most basic private cloud involves substantial custom development.  That's pretty easy when the model is a good match, and progressively harder as what you're trying to do diverges from "basic private cloud".
We're moving ahead with staging.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.