Bug 1777293

Summary: When importing multiple ansible role variables in satellite that have the same variable name, they are silently overwritten.
Product: Red Hat Satellite Reporter: Francisco Peralta <fperalta>
Component: Ansible - Configuration ManagementAssignee: Ondřej Ezr <oezr>
Status: CLOSED ERRATA QA Contact: Lukas Pramuk <lpramuk>
Severity: high Docs Contact:
Priority: high    
Version: 6.6.0CC: ahumbe, dleroux, ktordeur, oezr, satellite6-bugs, tbrisker
Target Milestone: 6.9.0Keywords: PrioBumpGSS, Triaged
Target Release: Unused   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1933160 (view as bug list) Environment:
Last Closed: 2021-04-21 13:12:13 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 Francisco Peralta 2019-11-27 10:48:55 UTC
Description of problem:

If you try to import some ansible roles in satellite 6.6 that contain the same variable name the GUI will not warn nor give an error but silently import the variables and the last imported variable with the same name wins.


Version-Release number of selected component (if applicable):

Satellite 6.6.0

How reproducible:

1. Create two roles that have a default variable with the same name.
2. Import them: only the last variable will be visible/used in the GUI.

Actual results:

Only the last imported variable with the same name will be present/used.

Expected results:

We would expect that the two or more variables would be considered locally to the related role (so not overwriting each other) or at least have a warning message for the user to know that he just overwrote a variable with another in two roles (he could eventually rename them and reimport them again)

Additional info:

If roles are developed by different teams or as often is the case imported from galaxy or the comunity you cannot be sure or enforce that the variable name will be unique for *all* roles, thus you should foresee this and avoid them to be global, but local to the rule or at least give a warning to take countermeasures by using best practices in variable naming (prefixing with role name etc).

Comment 6 Tomer Brisker 2020-01-26 15:26:06 UTC
Created redmine issue https://projects.theforeman.org/issues/28859 from this bug

Comment 8 Bryan Kearney 2020-03-12 10:04:09 UTC
Upstream bug assigned to oezr

Comment 9 Bryan Kearney 2020-03-12 10:04:24 UTC
Upstream bug assigned to oezr

Comment 10 Ondřej Ezr 2020-03-12 22:45:55 UTC
*** Bug 1777298 has been marked as a duplicate of this bug. ***

Comment 14 Bryan Kearney 2020-04-22 20:18:42 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/28859 has been resolved.

Comment 20 Lukas Pramuk 2021-03-11 12:11:56 UTC
VERIFIED.

@Satellite 6.9.0 Snap16
tfm-rubygem-foreman_ansible-6.1.1-1.el7sat.noarch

by the following reproducer:


1) Install any role from galaxy
# ansible-galaxy install -p /etc/ansible/roles adriagalin.motd

2) Import the role and its variables
# hammer ansible roles import --proxy-id 1
# hammer ansible variables import --proxy-id 1

3) Craft a role with duplicate variable names to be imported
# cp -r /etc/ansible/roles/adriagalin.motd /etc/ansible/roles/lpramuk.motd

4) Import the crafted role and its variables
# hammer ansible roles import --proxy-id 1
# hammer ansible variables import --proxy-id 1

5) Check the imported variables
# hammer ansible variables list --search ag_motd
----|-----------------------------|----------------------------------------------------------------------------------|---------|----------------
ID  | VARIABLE                    | DEFAULT VALUE                                                                    | TYPE    | ROLE           
----|-----------------------------|----------------------------------------------------------------------------------|---------|----------------
117 | ag_motd_add_footer          | false                                                                            | boolean | adriagalin.motd
163 | ag_motd_add_footer          | false                                                                            | boolean | lpramuk.motd   
167 | ag_motd_content             |                                                                                  | string  | lpramuk.motd   
121 | ag_motd_content             |                                                                                  | string  | adriagalin.motd
166 | ag_motd_info                | [{" FQDN:    "=>"{{ ansible_fqdn }}"}, {" Distro:  "=>"{{ ansible_distributio... | array   | lpramuk.motd   
120 | ag_motd_info                | [{"FQDN: "=>"{{ ansible_fqdn }}"}, {"  OS: "=>"{{ ansible_distribution }}"}]     | array   | adriagalin.motd
119 | ag_motd_sysadmins_email     | random                                                                | string  | adriagalin.motd
165 | ag_motd_sysadmins_email     | random                                                                | string  | lpramuk.motd   
118 | ag_motd_sysadmins_signature | Random system administrators                                                     | string  | adriagalin.motd
164 | ag_motd_sysadmins_signature | Random system administrators                                                     | string  | lpramuk.motd   
----|-----------------------------|----------------------------------------------------------------------------------|---------|----------------

>>> every variable is listed twice, one variable per each role -> duplicate variables in different roles are no longer overwritten

Comment 23 errata-xmlrpc 2021-04-21 13:12:13 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: Satellite 6.9 Release), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2021:1313