I think we're all in agreement that removing dependencies on /etc/hosts is
an improvement.  I'm working on this and should have the changes committed
this week.

To summarize the situation and changes, the backend code currently reads
/etc/hosts in order to determine the private IP address of a node.  It does
not rely on the computer.privateIPaddress field in the database.  Several
node configuration tasks depend on knowing the correct private IP address.
 The backend code also currently uses the computer.hostname value to SSH
into nodes.  As a result, it depends on hostname-private IP address
resolution working correctly -- which is usually accomplished via
/etc/hosts.

I will change the code to:
(1) Not read or reference /etc/hosts at all
(2) Use the computer.privateIPaddress field as the authoritative value
(3) Use the private IP address instead of the hostname for all SSH and
other connections
(4) Add utils.pm::update_private_ip_address

This will allow any provisioning module to have control over how private IP
addresses are allocated.  If they are dynamically allocated when a node is
loaded or instantiated, the provisioning module can retrieve the dynamic
private IP address from Openstack or some other provisioning API, and call
update_private_ip_address to set the correct value in the database.  The
provisioning module should also call $self->data->set_private_ip_address.
 When control is passed from the provisioning to the OS module, everything
should be set up correctly.

-Andy

Reply via email to