Comment 15 for bug 1829338

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to puppet-tripleo (stable/queens)

Reviewed: https://review.opendev.org/662137
Committed: https://git.openstack.org/cgit/openstack/puppet-tripleo/commit/?id=ec4b1b6fc4c950958ca976f8c0cadb07cd83439c
Submitter: Zuul
Branch: stable/queens

commit ec4b1b6fc4c950958ca976f8c0cadb07cd83439c
Author: Michele Baldessari <email address hidden>
Date: Thu May 16 09:12:50 2019 +0200

    Fix horizon firewall rules in composable roles

    Atm horizon haproxy firewall rules obfuscate any other rule defined via
    the tripleo.haproxy.firewall_rules key.

    Things broke with https://review.opendev.org/#/c/625600/. The reason
    that was pushed is that in composable roles, when splitting off horizon
    away from where haproxy runs, we would not have the proper iptables rules
    on the haproxy role. This was due to the fact that we had
    the following code:
          service_config_settings:
            haproxy:
              tripleo.horizon.firewall_rules:
                '127 horizon':
                  dport:
                    - 80
                    - 443

    The above code never worked as explained in
    3f8ce6fd96bc4f28a052b4c87a19b4b152734091 and so we fixed it by setting
    the proper tripleo.haproxy.firewall_rules key. The issue is that rules
    for haproxy should just never have been set at all via
    service_config_settings keys in the first place. As demonstrated with
    this bug, the merging of hiera dictionaries will mess us up and we'll
    end up overwriting other keys. Haproxy stats access has this:
    outputs:
      role_data:
        description: Role data for the HAproxy role.
        value:
          service_name: haproxy
          monitoring_subscription: {get_param: MonitoringSubscriptionHaproxy}
          config_settings:
            map_merge:
              - tripleo.haproxy.firewall_rules:
                  '107 haproxy stats':
                    dport: 1993

    And since hiera will return the horizon settings for
    tripleo.haproxy.firewall_rules which won't be deep merged with the
    firewall rules from haproxy stats and so rule '107 haproxy stats' will
    never be present.

    Rules for haproxy need to happen in puppet-tripleo/manifests/haproxy*.
    Normally they do, the exception is horizon which uses a specialized
    horizon_endpoint.pp manifest which does not trigger these rules.

    Let's create the firewall rules in haproxy/horizon_endpoint.pp like we
    do for all other endpoints.

    Tested and correctly got:
    [root@controller-0 ~]# iptables -nvL |grep hor
        0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80 state NEW /* 100 horizon_haproxy ipv4 */
        0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 443 state NEW /* 100 horizon_haproxy_ssl ipv4 */
        0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 state NEW /* 126 horizon ipv4 */

    Change-Id: I1325171ef60d7a7e3b57373082fcdb5487be939b
    Related-Bug: #1829338
    (cherry picked from commit 6c2e164adaa0bf0bbc38a3d69e16db105a5519aa)
    (cherry picked from commit f58d8af343c24a709fdfb735534e2dc6b4209338)
    (cherry picked from commit b34f02c7fe3acf3fcd33b0284a765268f403a142)