Bug 1842919

Summary: /etc/hosts on the undercloud grows on updates with repeated entries
Product: Red Hat OpenStack Reporter: Jaison Raju <jraju>
Component: python-tripleoclientAssignee: Emilien Macchi <emacchi>
Status: CLOSED CURRENTRELEASE QA Contact: David Rosenfeld <drosenfe>
Severity: high Docs Contact:
Priority: high    
Version: 16.1 (Train)CC: ariveral, aschultz, augol, bdobreli, dhill, dvd, emacchi, hbrock, jhajyahy, jraju, jslagle, kecarter, lmiccini, lshort, mburns, michele, mivollme, nchandek, ramishra, ravsingh, schhabdi
Target Milestone: z3Keywords: Reopened, TestOnly, Triaged
Target Release: 16.1 (Train on RHEL 8.2)   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: python-tripleoclient-12.3.2-1.20200815213404.29686a6.el8ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-11-09 11:52:59 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:
Attachments:
Description Flags
hosts file from undercloud
none
templates used for testing
none
config-download none

Description Jaison Raju 2020-06-02 11:48:37 UTC
Description of problem:
/etc/hosts has multiple entries for undercloud IP address with hostnames with different network name suffix. There are also more than one entries for the same IP.

Version-Release number of selected component (if applicable):
latest
tripleo-ansible-0.4.2-0.20200404124615.67005aa.el8ost.noarch
openstack-tripleo-heat-templates-11.3.2-0.20200405044625.ec9970c.el8ost.noarch

How reproducible:
Always

Steps to Reproduce:
1. Deploy an environment with composable network.
2. check/backup /etc/hosts on undercloud
3. Run overcloud deploy again
4. check/backup /etc/hosts on undercloud

Actual results:
During each deploy 3 duplicate entries are added for undercloud with different network suffix.

Expected results:
There is always one entry for undercloud with only required alias that is - hostname, fqdn with domain, hostname with valid network ctlplane (If at all it is required anywhere.)

Additional info:
This was reproduced in customer environment and internally.

Comment 1 Jaison Raju 2020-06-02 11:52:37 UTC
Created attachment 1694425 [details]
hosts file from undercloud

Comment 2 Jaison Raju 2020-06-02 11:53:05 UTC
Created attachment 1694426 [details]
templates used for testing

Comment 3 Jaison Raju 2020-06-02 11:55:16 UTC
Created attachment 1694427 [details]
config-download

Comment 5 Alex Schultz 2020-06-02 13:24:01 UTC
This is expected due to the way the hostname/IPs are managed. This reuses the code that we use in the overcloud and the reason why they are the same is because we don't actually have different IPs for the various "networks".  This is currently how it works and unless it's breaking something this is NOTABUG.

Comment 6 Jaison Raju 2020-06-02 15:08:14 UTC
Hi Alex,

When we did the initial deployment of overcloud, this entry was not seen.
After stack update, three of such entries were added:

Here are the concerns:
1. Why are there duplicate entries of the same IP seen as above?
2. The above entry also looks like it has a lot of repetition, for example - 'undercloud.ctlplane' itself is repeated 15 times in a single line.
3. At every stack update these line almost increase by 3 times.
For example:
Before:
172.16.0.1 undercloud.ctlplane.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain

After:
172.16.0.1 undercloud.ctlplane.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud.ctlplane undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain undercloud undercloud.external.localdomain undercloud.external undercloud.ctlplane.localdomain undercloud.ctlplane undercloud.localdomain

The '3.' behavior can cause the very very large file. Infact in customer environment, we noticed this failure, which we suspect is due to the above large file.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
(undercloud) [stack@jsfuc01 ~]$ ./deploy.sh
Thu May 28 14:55:37 CEST 2020
Removing the current plan files
Uploading new plan files
Temporary Swift GET/PUT URL parameters have successfully been updated.
Plan updated.
Processing templates in the directory /tmp/tripleoclient-ioy26qde/tripleo-heat-templates
Action tripleo.parameters.update execution failed: Error validating environment for plan overcloud: ERROR: Request limit exceeded: JSON body size (5005048 bytes) exceeds maximum allowed size (4194304 bytes).
None

real    2m21.564s
user    0m10.136s
sys     0m3.549s
----------------------------------------------------------------------------------------------------------------------------------------------------------------

Also I had been searching commits and I noticed 3b8e6f78e19e776c087dc5c3ff225703b5c487bc from tht looks related.

Comment 7 Alex Schultz 2020-06-02 15:13:28 UTC
Ok that's a bug where we're continuing to re-add hosts for every deployment. I think that's been fixed but we'll have to dig up the fix and see where it's landed.   I've renamed the bug to more closely describe the issue.

Comment 11 Michele Baldessari 2020-07-09 13:47:28 UTC
*** Bug 1855172 has been marked as a duplicate of this bug. ***

Comment 20 Rabi Mishra 2020-08-31 11:32:03 UTC
*** Bug 1873107 has been marked as a duplicate of this bug. ***

Comment 21 Rabi Mishra 2020-09-17 12:52:41 UTC
*** Bug 1879931 has been marked as a duplicate of this bug. ***

Comment 34 Lon Hohberger 2020-10-29 10:51:52 UTC
According to our records, this should be resolved by python-tripleoclient-12.3.2-1.20200914164928.el8ost.  This build is available now.