Bug 1277652

Summary: [Docs][RFE][HardProv] Document how to determine which IPs are assigned to which host
Product: Red Hat OpenStack Reporter: Dan Sneddon <dsneddon>
Component: documentationAssignee: Deepti Navale <dnavale>
Status: CLOSED CURRENTRELEASE QA Contact: Charelle Collett <ccollett>
Severity: high Docs Contact:
Priority: medium    
Version: 12.0 (Pike)CC: bfournie, dnavale, dtantsur, hbrock, jcoufal, jmelvin, lbopf, mariel, mburns, racedoro, rhel-osp-director-maint, sasha, srevivo
Target Milestone: gaKeywords: Documentation, FutureFeature, Reopened, Triaged
Target Release: 12.0 (Pike)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: docs-accepted
Fixed In Version: Doc Type: Enhancement
Doc Text:
This updates adds new commands that allow you to determine host to IP mapping from the undercloud without needing to access the hosts directly. You can show which IP addresses are assigned to which host and to which port with the following command: openstack stack output show overcloud HostsEntry -c output_value -f value Use grep to filter the results for a specific host. You can also map the hosts to bare metal nodes with the following command: openstack baremetal node list --fields uuid name instance_info -f json
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-12-19 04:22:02 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Dan Sneddon 2015-11-03 18:07:15 UTC
Description of problem:
The network isolation mechanism in TripleO will assign static IP addresses to each interface on each node. Those IPs correspond to Neutron ports, but we need a list of IPs per node. There isn't an easy way to tell which Neutron ports relate to which nodes.

Version-Release number of selected component (if applicable):
OSP-D/RDO-M 7 & 7.1

How reproducible:
100%

Steps to Reproduce:
1. Deploy overcloud
2. Run "neutron port-list" on the undercloud
3.

Actual results:
There isn't a clear mapping of the Neutron ports to the nodes.

Expected results:
Heat should have the data about which Neutron ports have been assigned to a node. We just need a way to report on this. Alternately, we could use the nova-to-neutron-port mapping to do the same.

Additional info:
I see this eventually being implemented as an OSP-D command line function. Even putting together a set of Heat (or Nova/Neutron) commands that would extract this information would be helpful, and we can work from there.

Comment 2 Jeremy 2015-11-23 18:54:23 UTC
We want to assign predetermined IP addresses to more than just the control plane. E.G. we are also using Internal API and Storage (for Ceph Mon and OSD) networks.

 don't really need to break out the load balancer from the HAProxy which is provided on the controllers; we don't want to forgo the included load balancer, in order to specify the VIP addresses.

One idea, is to be able to specify an IP map which should be consulted when IP addresses are requested and allocated during an overcloud deployment. E.G. we can specify a static address for any IP, in any network we've chosen to isolate, as long as that IP falls within the correct subnet CIDR and range as specified in our network environment yaml file.

I hope this description helps clarify what we are looking for.

Comment 6 Jeremy 2016-02-09 16:10:26 UTC
Is it possible to set static IP address to compute nodes as well on deploy?

Comment 7 Dan Sneddon 2016-02-09 16:11:19 UTC
(In reply to Jeremy from comment #6)
> Is it possible to set static IP address to compute nodes as well on deploy?

That's not possible at this time, although that feature is on the roadmap.

Comment 10 Mike Burns 2016-04-07 20:54:03 UTC
This bug did not make the OSP 8.0 release.  It is being deferred to OSP 10.

Comment 12 Dan Sneddon 2016-12-13 17:40:51 UTC
We have implemented pre-selecting IP addresses for compute nodes as well as controllers. We still require a reporting mechanism which will output the host-to-IP-address mapping for all nodes.

Comment 13 Dmitry Tantsur 2017-02-06 15:34:51 UTC
It seems like quite a simple workflow to implement in tripleo-common: get all ports attached to instances, right? Or does it involve querying heat as well? Anyway, proposing to 12.

Comment 14 Bob Fournier 2017-02-27 14:48:25 UTC
It appears that the command "openstack stack output show overcloud HostsEntry"
gives us most of what we want in terms of IP->Host assignments.

[stack@host01 ~]$ openstack stack output show overcloud HostsEntry --max-width 80
+--------------+---------------------------------------------------------------+
| Field        | Value                                                         |
+--------------+---------------------------------------------------------------+
| description  | The content that should be appended to your /etc/hosts if you |
|              | want to get                                                   |
|              | hostname-based access to the deployed nodes (useful for       |
|              | testing without                                               |
|              | setting up a DNS).                                            |
|              |                                                               |
| output_key   | HostsEntry                                                    |
| output_value | 172.17.0.10 overcloud-controller-0.localdomain overcloud-     |
|              | controller-0                                                  |
|              | 10.8.145.18 overcloud-controller-0.external.localdomain       |
|              | overcloud-controller-0.external                               |
|              | 172.17.0.10 overcloud-controller-0.internalapi.localdomain    |
|              | overcloud-controller-0.internalapi                            |
|              | 172.18.0.15 overcloud-controller-0.storage.localdomain        |
|              | overcloud-controller-0.storage                                |
|              | 172.21.2.12 overcloud-controller-0.storagemgmt.localdomain    |
|              | overcloud-controller-0.storagemgmt                            |
|              | 172.16.0.15 overcloud-controller-0.tenant.localdomain         |
|              | overcloud-controller-0.tenant                                 |
|              | 10.8.146.13 overcloud-controller-0.management.localdomain     |
|              | overcloud-controller-0.management                             |
|              | 10.8.146.13 overcloud-controller-0.ctlplane.localdomain       |
|              | overcloud-controller-0.ctlplane                               |
|              |                                                               |
|              | 172.17.0.21 overcloud-compute-0.localdomain overcloud-        |
|              | compute-0                                                     |
|              | 10.8.146.12 overcloud-compute-0.external.localdomain          |
|              | overcloud-compute-0.external                                  |
|              | 172.17.0.21 overcloud-compute-0.internalapi.localdomain       |
|              | overcloud-compute-0.internalapi                               |
|              | 172.18.0.20 overcloud-compute-0.storage.localdomain           |
|              | overcloud-compute-0.storage                                   |
|              | 10.8.146.12 overcloud-compute-0.storagemgmt.localdomain       |
|              | overcloud-compute-0.storagemgmt                               |
|              | 172.16.0.16 overcloud-compute-0.tenant.localdomain overcloud- |
|              | compute-0.tenant                                              |
|              | 10.8.146.12 overcloud-compute-0.management.localdomain        |
|              | overcloud-compute-0.management                                |
|              | 10.8.146.12 overcloud-compute-0.ctlplane.localdomain          |
|              | overcloud-compute-0.ctlplane                                  |
|              |                                                               |
|              |                                                               |
|              |                                                               |
|              |                                                               |
|              | 10.8.145.16  overcloud.localdomain                            |
|              | 10.8.146.7  overcloud.ctlplane.localdomain                    |
|              | 172.17.0.19  overcloud.internalapi.localdomain                |
|              | 172.18.0.19  overcloud.storage.localdomain                    |
|              | 172.21.2.16  overcloud.storagemgmt.localdomain                |
+--------------+---------------------------------------------------------------+


To associate the hosts with Ironic nodes the following command can be used to
map the uuid/name to the display_name in instance_info (e.g. overcloud-controller-0)


[stack@host01 ~]$ openstack baremetal node list --fields uuid name instance_info --max-width 80
+-----------------------------------+------+-----------------------------------+
| UUID                              | Name | Instance Info                     |
+-----------------------------------+------+-----------------------------------+
| 962e5384-5893-45ba-               | None | {u'root_gb': u'40',               |
| 9bb7-17cd04120fae                 |      | u'display_name': u'overcloud-     |
|                                   |      | controller-0', u'image_source':   |
|                                   |      | u'a8cc4098-bacd-475b-             |
|                                   |      | bd76-33d7562dae11',               |
|                                   |      | u'capabilities':                  |
|                                   |      | u'{"boot_option": "local"}',      |
|                                   |      | u'memory_mb': u'4096', u'vcpus':  |
|                                   |      | u'1', u'local_gb': u'557',        |
|                                   |      | u'configdrive': u'******',        |
|                                   |      | u'swap_mb': u'0'}                 |
| 14b06bc2-44f3-4827-a862-717d2fb5c | None | {u'root_gb': u'40',               |
| 01d                               |      | u'display_name': u'overcloud-     |
|                                   |      | compute-0', u'image_source':      |
|                                   |      | u'a8cc4098-bacd-475b-             |
|                                   |      | bd76-33d7562dae11',               |
|                                   |      | u'capabilities':                  |
|                                   |      | u'{"boot_option": "local"}',      |
|                                   |      | u'memory_mb': u'4096', u'vcpus':  |
|                                   |      | u'1', u'local_gb': u'557',        |
|                                   |      | u'configdrive': u'******',        |
|                                   |      | u'swap_mb': u'0'}                 |
+-----------------------------------+------+-----------------------------------+


Are these commands adequate get the host/IP mapping or do we want a new command
which makes it more apparent?

Comment 16 Ramon Acedo 2017-04-11 14:21:58 UTC
Closing as per triage conversation.

Comment 17 Lucy Bopf 2017-06-29 01:24:08 UTC
Reopening so we can use this bug to track required docs changes.

Comment 18 Lucy Bopf 2017-07-27 01:58:33 UTC
Clearing target release pending docs triage.

Updated Version to reflect the release to which this bug applies.

Comment 19 Lucy Bopf 2017-07-31 04:26:47 UTC
Adding a rough estimate for effort assuming that comment 14 captures the full requirement.

Comment 20 Lucy Bopf 2017-09-21 06:42:06 UTC
Assigning to Deepti for review.

Comment 22 Bob Fournier 2017-11-01 15:40:27 UTC
I've updated the Doc text to add the commands. I've included the output for clarity but you can remove if not needed.

Comment 26 Charelle Collett 2017-11-15 05:49:26 UTC
Looks good to me, merged.