diff options
| author | Ralph Bean <rbean@redhat.com> | 2015-06-12 16:27:31 +0000 |
|---|---|---|
| committer | Ralph Bean <rbean@redhat.com> | 2015-06-12 16:27:45 +0000 |
| commit | 60dbdd00cffcfa3c19ec056f3e9e8eacf00fdbdb (patch) | |
| tree | 917667921232aff9df74fb261704a90a8790f20b | |
| parent | 7acd9320253f77985b8a7179c607a9772c684462 (diff) | |
| download | ansible-60dbdd00cffcfa3c19ec056f3e9e8eacf00fdbdb.tar.gz ansible-60dbdd00cffcfa3c19ec056f3e9e8eacf00fdbdb.tar.xz ansible-60dbdd00cffcfa3c19ec056f3e9e8eacf00fdbdb.zip | |
Try dynamically generating some fedmsg config from group/host vars in staging.
| -rw-r--r-- | filter_plugins/fedmsg.py | 25 | ||||
| -rw-r--r-- | inventory/group_vars/all | 4 | ||||
| -rw-r--r-- | inventory/group_vars/anitya-backend | 2 | ||||
| -rw-r--r-- | inventory/group_vars/anitya-frontend | 2 | ||||
| -rw-r--r-- | inventory/group_vars/badges-backend | 3 | ||||
| -rw-r--r-- | inventory/group_vars/badges-backend-stg | 3 | ||||
| -rw-r--r-- | inventory/group_vars/badges-web | 4 | ||||
| -rw-r--r-- | inventory/group_vars/badges-web-stg | 4 | ||||
| -rw-r--r-- | inventory/group_vars/pagure | 3 | ||||
| -rw-r--r-- | inventory/group_vars/pagure-stg | 3 | ||||
| -rw-r--r-- | inventory/group_vars/staging | 3 | ||||
| -rw-r--r-- | roles/anitya/fedmsg/templates/base.py.j2 | 5 | ||||
| -rw-r--r-- | roles/fedmsg/base/templates/base.py.j2 | 6 | ||||
| -rw-r--r-- | roles/fedmsg/base/templates/policy.py.j2 | 11 | ||||
| -rw-r--r-- | roles/pagure/fedmsg/templates/base.py.j2 | 4 |
15 files changed, 72 insertions, 10 deletions
diff --git a/filter_plugins/fedmsg.py b/filter_plugins/fedmsg.py new file mode 100644 index 000000000..c6a02b65f --- /dev/null +++ b/filter_plugins/fedmsg.py @@ -0,0 +1,25 @@ +import operator + + +def invert_fedmsg_authz_policy(vars): + """ Given hostvars that map hosts -> topics, invert that + and return a dict that maps topics -> hosts. + + Really, returns a list of tuples -- not a dict. + """ + + inverted = {} + for host in vars: + prefix = '.'.join([vars[host]['fedmsg_prefix'], + vars[host]['fedmsg_env']]) + fqdn = vars[host].get('fedmsg_fqdn', vars[host]['ansible_fqdn']) + + for cert in vars[host].get('fedmsg_certs', []): + for topic in cert.get('can_send', []): + key = prefix + '.' + topic + inverted[key] = inverted.get(key, []) + inverted[key].append(cert['service'] + '-' + fqdn) + + result = inverted.items() + result.sort(key=operator.itemgetter(0)) + return result diff --git a/inventory/group_vars/all b/inventory/group_vars/all index 65be94144..43cc1ebe1 100644 --- a/inventory/group_vars/all +++ b/inventory/group_vars/all @@ -59,6 +59,10 @@ fedmsg_loglevel: INFO # active. fedmsg_active: False +# Other defaults for fedmsg environments +fedmsg_prefix: org.fedoraproject +fedmsg_env: prod + # By default, nodes don't backup any dbs on them unless they declare it. dbs_to_backup: [] diff --git a/inventory/group_vars/anitya-backend b/inventory/group_vars/anitya-backend index f7d9cb592..a4309f685 100644 --- a/inventory/group_vars/anitya-backend +++ b/inventory/group_vars/anitya-backend @@ -29,6 +29,8 @@ fedmsg_certs: owner: root group: fedmsg +fedmsg_prefix: org.release-monitoring +fedmsg_env: prod # For the MOTD csi_security_category: Low diff --git a/inventory/group_vars/anitya-frontend b/inventory/group_vars/anitya-frontend index c64bda774..8744aceab 100644 --- a/inventory/group_vars/anitya-frontend +++ b/inventory/group_vars/anitya-frontend @@ -31,6 +31,8 @@ fedmsg_certs: owner: root group: apache +fedmsg_prefix: org.release-monitoring +fedmsg_env: prod # For the MOTD csi_security_category: Low diff --git a/inventory/group_vars/badges-backend b/inventory/group_vars/badges-backend index f00415f65..af1e8f859 100644 --- a/inventory/group_vars/badges-backend +++ b/inventory/group_vars/badges-backend @@ -20,6 +20,9 @@ fedmsg_certs: - service: fedbadges owner: root group: fedmsg + can_send: + - fedbadges.badge.award + - fedbadges.person.rank.advance # For the MOTD diff --git a/inventory/group_vars/badges-backend-stg b/inventory/group_vars/badges-backend-stg index f100c1b38..d336373f1 100644 --- a/inventory/group_vars/badges-backend-stg +++ b/inventory/group_vars/badges-backend-stg @@ -20,6 +20,9 @@ fedmsg_certs: - service: fedbadges owner: root group: fedmsg + can_send: + - fedbadges.badge.award + - fedbadges.person.rank.advance # For the MOTD diff --git a/inventory/group_vars/badges-web b/inventory/group_vars/badges-web index 336d376f7..e289f0af2 100644 --- a/inventory/group_vars/badges-web +++ b/inventory/group_vars/badges-web @@ -25,6 +25,10 @@ fedmsg_certs: - service: tahrir owner: root group: tahrir + can_send: + - fedbadges.badge.award + - fedbadges.person.rank.advance + - fedbadges.person.login.first # For the MOTD diff --git a/inventory/group_vars/badges-web-stg b/inventory/group_vars/badges-web-stg index 2bbe4a2e4..e3bc70835 100644 --- a/inventory/group_vars/badges-web-stg +++ b/inventory/group_vars/badges-web-stg @@ -25,6 +25,10 @@ fedmsg_certs: - service: tahrir owner: root group: tahrir + can_send: + - fedbadges.badge.award + - fedbadges.person.rank.advance + - fedbadges.person.login.first # For the MOTD diff --git a/inventory/group_vars/pagure b/inventory/group_vars/pagure index 0fb393c7a..4e6fd82fb 100644 --- a/inventory/group_vars/pagure +++ b/inventory/group_vars/pagure @@ -20,6 +20,9 @@ fedmsg_certs: owner: git group: apache +fedmsg_prefix: io.pagure +fedmsg_env: prod + fas_client_groups: sysadmin-noc,sysadmin-web freezes: false diff --git a/inventory/group_vars/pagure-stg b/inventory/group_vars/pagure-stg index 152eea387..3cdf12203 100644 --- a/inventory/group_vars/pagure-stg +++ b/inventory/group_vars/pagure-stg @@ -20,6 +20,9 @@ fedmsg_certs: owner: git group: apache +fedmsg_prefix: io.pagure +fedmsg_env: stg + fas_client_groups: sysadmin-noc,sysadmin-web freezes: false diff --git a/inventory/group_vars/staging b/inventory/group_vars/staging index 40f15b872..cd9c3a2cb 100644 --- a/inventory/group_vars/staging +++ b/inventory/group_vars/staging @@ -9,3 +9,6 @@ wildcard_cert_name: wildcard-2014.stg.fedoraproject.org # This only does anything if the host is not RHEL6 collectd_graphite: True + +fedmsg_prefix: org.fedoraproject +fedmsg_env: stg diff --git a/roles/anitya/fedmsg/templates/base.py.j2 b/roles/anitya/fedmsg/templates/base.py.j2 index 6aa831b3e..8a9bcee4c 100644 --- a/roles/anitya/fedmsg/templates/base.py.j2 +++ b/roles/anitya/fedmsg/templates/base.py.j2 @@ -1,7 +1,6 @@ config = dict( - topic_prefix="org.release-monitoring", - - environment="prod", + topic_prefix="{{ fedmsg_prefix }}", + environment="{{ fedmsg_env }}", # This used to be set to 1 for safety, but it turns out it was # excessive. It is the number of seconds that fedmsg should sleep diff --git a/roles/fedmsg/base/templates/base.py.j2 b/roles/fedmsg/base/templates/base.py.j2 index 8a4427a22..c04852b0d 100644 --- a/roles/fedmsg/base/templates/base.py.j2 +++ b/roles/fedmsg/base/templates/base.py.j2 @@ -1,11 +1,7 @@ config = dict( # Set this to dev if you're hacking on fedmsg or an app locally. # Set to stg or prod if running in the Fedora Infrastructure. - {% if env == 'staging' %} - environment="stg", - {% else %} - environment="prod", - {% endif %} + environment="{{ fedmsg_env }}", # Most hosts will be "false" here indicating that if they publish messages, # they will passively bind to ports and have other consuming services diff --git a/roles/fedmsg/base/templates/policy.py.j2 b/roles/fedmsg/base/templates/policy.py.j2 index 3e2212cde..85c0739cf 100644 --- a/roles/fedmsg/base/templates/policy.py.j2 +++ b/roles/fedmsg/base/templates/policy.py.j2 @@ -216,6 +216,17 @@ config = dict( topic_prefix + "announce.announcement": [ "announce-lockbox01.phx2.fedoraproject.org", ], + + {% if env == 'staging' %} + # ** policy dynamically generated from inventory vars + # See ansible/filter_plugins/fedmsg.py for this inversion filter. + {% for topic, certs in hostvars | invert_fedmsg_authz_policy %} + "{{topic}}": [ + {% for cert in certs %} + "{{ cert }}",{% endfor %} + ], + {% endfor %} + {% endif %} }, ) diff --git a/roles/pagure/fedmsg/templates/base.py.j2 b/roles/pagure/fedmsg/templates/base.py.j2 index 21c9c79dc..18b9e26af 100644 --- a/roles/pagure/fedmsg/templates/base.py.j2 +++ b/roles/pagure/fedmsg/templates/base.py.j2 @@ -1,11 +1,11 @@ config = dict( - topic_prefix="io.pagure", # Tell every call to `fedmsg.publish` to use the relay active=True, cert_prefix="pagure", - environment="prod", + topic_prefix="{{ fedmsg_prefix }}", + environment="{{ fedmsg_env }}", # This used to be set to 1 for safety, but it turns out it was # excessive. It is the number of seconds that fedmsg should sleep |
