ansible/playbooks/openshift-apps/badges.yml
Aurélien Bompard d884a0f8ba
Use the combined RabbitMQ CA cert in the clients
Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
2025-04-11 15:15:45 +02:00

219 lines
6.4 KiB
YAML

#
# Badges (fedbadges & Tahrir)
#
---
- name: Setup the database
hosts: db01.iad2.fedoraproject.org:db01.stg.iad2.fedoraproject.org
gather_facts: no
become: yes
become_user: postgres
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
- /srv/web/infra/ansible/vars/apps/badges.yml
tasks:
- name: DB user
community.postgresql.postgresql_user:
name: "{{ tahrirDBUser }}"
password: "{{ (env == 'production') | ternary(tahrirDBPassword, tahrirstgDBPassword) }}"
- name: Database creation
community.postgresql.postgresql_db:
name: "{{ badges_db_name }}"
owner: "{{ tahrirDBUser }}"
encoding: UTF-8
- name: Give access to the datanommer DB
hosts: datanommer_dbserver:datanommer_dbserver_stg
gather_facts: no
become: yes
become_user: postgres
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
- /srv/web/infra/ansible/vars/apps/badges.yml
tasks:
- name: DB user
community.postgresql.postgresql_user:
name: "{{ tahrirDBUser }}"
password: "{{ (env == 'production') | ternary(tahrirDBPassword, tahrirstgDBPassword) }}"
- name: Grant the db user read only access to datanommer2
community.postgresql.postgresql_privs:
database: datanommer2
privs: SELECT
objs: ALL_IN_SCHEMA
roles: "{{ tahrirDBUser }}"
- name: Make the app be real
hosts: os_control_stg:os_control
user: root
gather_facts: false
vars_files:
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
- /srv/web/infra/ansible/vars/apps/badges.yml
roles:
- role: rabbit/user
user_name: "tahrir{{ env_suffix }}"
user_sent_topics: ^org\.fedoraproject\.{{ env_short }}\.badges\..*
tags:
- config
- fedora-messaging
- rabbitmq_cluster
- role: rabbit/queue
queue_username: "fedbadges{{ env_suffix }}"
queue_name: "fedbadges{{ env_suffix }}"
queue_routing_keys:
# The badges queue is subscribed to everything
- "#"
queue_thresholds:
warning: 20000
critical: 25000
# It sends a message when a badge is awarded
user_sent_topics: ^org\.fedoraproject\.{{ env_short }}\.badges\..*
tags:
- config
- fedora-messaging
- rabbitmq_cluster
- role: openshift/project
project_app: badges
project_description: "Badges"
project_appowners:
- abompard
- nphilipp
- ryanlerch
tags:
- apply-appowners
- role: openshift/object
object_app: badges
object_file: imagestream.yml
object_objectname: imagestream.yml
- role: openshift/object
object_app: badges
object_template: buildconfig.yml.j2
object_objectname: buildconfig.yml
- role: openshift/object
object_app: badges
object_template: secrets.yml.j2
object_objectname: secrets.yml
- role: openshift/object
object_app: badges
object_template: configmap.yml.j2
object_objectname: configmap.yml
- role: openshift/object
object_app: badges
object_file: service.yml
object_objectname: service.yml
- role: openshift/object
object_app: badges
object_file: storage.yml
object_objectname: storage.yml
# Routes
- role: openshift/route
route_app: badges
route_name: frontend
route_host: "badges{{ env_suffix }}.fedoraproject.org"
route_servicename: frontend
route_serviceport: web
route_annotations:
haproxy.router.openshift.io/timeout: 5m
- role: openshift/route
route_app: badges
route_name: frontend-openshift
route_host: "badges.apps.ocp{{ env_suffix }}.fedoraproject.org"
route_servicename: frontend
route_serviceport: web
route_annotations:
haproxy.router.openshift.io/timeout: 5m
# Fedora Messaging
- role: openshift/secret-file
secret_file_app: badges
secret_file_secret_name: fedora-messaging-ca
secret_file_key: cacert.pem
secret_file_privatefile: "rabbitmq/{{env}}/ca-combined.crt"
- role: openshift/secret-file
secret_file_app: badges
secret_file_secret_name: fedora-messaging-crt
secret_file_key: fedbadges-cert.pem
secret_file_privatefile: "rabbitmq/{{env}}/pki/issued/fedbadges{{env_suffix}}.crt"
- role: openshift/secret-file
secret_file_app: badges
secret_file_secret_name: fedora-messaging-key
secret_file_key: fedbadges-key.pem
secret_file_privatefile: "rabbitmq/{{env}}/pki/private/fedbadges{{env_suffix}}.key"
- role: openshift/secret-file
secret_file_app: badges
secret_file_secret_name: tahrir-fedora-messaging-crt
secret_file_key: tahrir-cert.pem
secret_file_privatefile: "rabbitmq/{{env}}/pki/issued/tahrir{{env_suffix}}.crt"
- role: openshift/secret-file
secret_file_app: badges
secret_file_secret_name: tahrir-fedora-messaging-key
secret_file_key: tahrir-key.pem
secret_file_privatefile: "rabbitmq/{{env}}/pki/private/tahrir{{env_suffix}}.key"
# FASJSON access
- role: openshift/ipa-client
ipa_client_app: badges
- role: openshift/keytab
keytab_app: badges
keytab_key: fedbadges.keytab
keytab_secret_name: fedbadges-keytab
keytab_service: fedbadges
# Deployment config
- role: openshift/object
object_app: badges
object_template: deploymentconfig.yml.j2
object_objectname: deploymentconfig.yml
# Cron jobs
- role: openshift/object
object_app: badges
object_template: cron-award.yml.j2
object_objectname: cron-award.yml
- role: openshift/object
object_app: badges
object_template: cron-update-rules.yml.j2
object_objectname: cron-update-rules.yml
- role: openshift/start-build
start_build_app: badges
start_build_buildname: "{{ dcname }}"
loop:
- fedbadges
- tahrir
loop_control:
loop_var: dcname
tags:
- never
- build
- role: openshift/rollout
rollout_app: badges
rollout_dcname: "{{ dcname }}"
loop:
- fedbadges
- tahrir
loop_control:
loop_var: dcname
tags:
- never
- rollout