ansible/roles/check-compose/tasks/main.yml
Adam Williamson 2b6c8be5aa openqa etc: reinstall local Python libs when Python ver changes
In openqa/dispatcher, relvalconsumer and check-compose roles, we
install Python libraries from git checkouts (these are things we
don't really want to package as they change too much). This
enhances those roles so that we check whether pip considers the
libraries to be installed, and install them if it doesn't. The
purpose is to catch when the Python version rolls over on system
upgrade, and reinstall the libraries in that case - I got bitten
by this when upgrading to F32, I forgot to reinstall these libs
for Python 3.8, and it broke things for a couple of days before
I noticed and fixed it manually...

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2020-05-13 09:58:50 -07:00

192 lines
7.5 KiB
YAML

# Required vars
# - checkcompose_amqp_queue
## string - Message queue name for the consumer. To use the
## fedora-messaging scheduler with public authentication
## on the Fedora production AMQP broker (which is what
## you'd typically want), you only need to set this.
## This should be a unique and private string; the
## official recommendation is to use a random UUID
## generated by uuidgen.
#
# Required vars with defaults
# - checkcompose_prod
## bool - whether this is the production instance. **SHOULD ONLY
## EVER BE TRUE ON ONE SYSTEM IN THE WORLD**
## default - False
# - checkcompose_amqp_passive
## bool - If true, passive_declares will be set true in all the
## fedora-messaging consumer configuration files. This
## is needed for private authentication on the Fedora
## brokers.
## default - False
# - checkcompose_amqp_url
## string - AMQP broker URL for fedora-messaging report sender.
## The role default for this is the Fedora production
## broker with the shared 'fedora' username.
# - checkcompose_amqp_cacert
## string - CA certificate file to use for authenticating with
## AMQP broker for fedora-messaging report sender.
## The role default for this is the CA cert file for the
## Fedora production broker.
# - checkcompose_amqp_cert
## string - Certificate file to use for authenticating with AMQP
## broker for fedora-messaging report sender. The role
## default for this is the certificate file for the
## public 'fedora' account on the Fedora production
## broker.
# - checkcompose_amqp_key
## string - Private key file to use for authenticating with AMQP
## broker for fedora-messaging report sender. The role
## default for this is the key file for the public
## 'fedora' account on the Fedora production broker.
# - checkcompose_amqp_routing_keys
## list - List of routing key names for the fedora-messaging
## scheduler to subscribe to. The role default for this
## is the appropriate keys for the Fedora production
## broker.
# - checkcompose_amqp_mailfrom
## string - From email address for error report emails. Defaults
## to "root@{{ external_hostname }}". Only relevant if
## checkcompose_amqp_mailto is set.
# - checkcompose_amqp_smtp
## string - Hostname of SMTP server to use for sending consumer error
## emails. Defaults to 'localhost'. Only relevant if
## checkcompose_amqp_mailto is set.
#
# Optional vars
# - checkcompose_server
## string - hostname of openQA server to connect to (if not set, openQA
## client configuration will determine this, default will be
## localhost)
# - checkcompose_url
## string - base URL for openQA result links (if not set, will be
## the URL the client actually wound up connecting to)
# - checkcompose_wait
## string - (digits) time in minutes to wait for openQA tests to complete
## before sending the report (defaults to 480)
# - checkcompose_emailfrom
## string - Email address to send reports from (if not set, no reports
## sent)
# - checkcompose_emailto
## string - Email address to send all reports to. Split multiple
## addresses with spaces
# - checkcompose_subvariant_emails
## dict - Per-subvariant recipients foe check-compose emails. Should
## be a dict of dicts like this:
## {
## 'Workstation': {
## 'all': ['foo@workstation.com', 'bar@workstation.com'],
## 'error': ['error@workstation.com'],
## },
## 'Server': {
## 'all': ['foo@server.com'],
## 'error': ['error@server.com'],
## },
## }
## Split multiple addresses with spaces
# - checkcompose_smtp
## string - SMTP server to use for sending the report
# - checkcompose_json
## string - File to append JSON-formatted report summary to
# - checkcompose_loglevel
## string - log level
# - checkcompose_amqp_mailto
## list - List of email addresses to email errors to. If set,
## the email log handler will be configured.
#
# NOTE: this is missing /etc/openqa/client.conf configuration, for now;
# we're assuming it'll be deployed on the openqa server boxes and hence
# client.conf will be in place (and localhost default would be correct
# anyhow). We also get lazy and assume fedora_openqa will be installed
# by openqa/dispatcher role; ideally we should factor this out into a
# shared task or something.
#- name: Install required packages (testing)
# dnf: name={{ item }} state=present enablerepo="updates-testing"
# with_items:
# - python3-fedfind
# tags:
# - packages
- name: Install required packages
package:
name: ['fedora-messaging', 'python3-fedfind', 'python3-openqa_client', 'python3-setuptools',
'python3-pip']
state: present
tags:
- packages
- name: Check out check-compose
git:
repo: https://pagure.io/fedora-qa/check-compose.git # noqa 401
dest: /root/check-compose
register: gitcc
- name: Check if check-compose is installed for current Python
command: "pip show check_compose"
register: instcc
changed_when: "1 != 1"
failed_when: "1 != 1"
check_mode: no
- name: Install check-compose
command: "python3 setup.py install --nodeps"
args:
chdir: /root/check-compose
when: "gitcc is changed or instcc.rc != 0"
notify:
- restart check-compose
- name: Create /etc/pki/fedora-messaging
file:
dest: /etc/pki/fedora-messaging
mode: 0775
owner: root
group: root
state: directory
when: "deployment_type is defined"
tags:
- config
# We always use the openQA cert and key here for now; we don't really
# need a separate identity for check-compose.
- name: Deploy the Fedora infra fedora-messaging cert
copy:
src: "{{ private }}/files/rabbitmq/{{ checkcompose_env }}/pki/issued/openqa{{ checkcompose_env_suffix }}.crt"
dest: /etc/pki/fedora-messaging/openqa{{ checkcompose_env_suffix }}-cert.pem
mode: 0644
owner: root
group: root
when: "deployment_type is defined"
tags:
- config
# This is kinda icky, as there's no intrinsic reason the group geekotest
# should exist so far as this role is concerned. But as we run this role
# on the same box as openQA, in fact we need to keep the ownership in
# line. This needs making cleaner somehow.
- name: Deploy the Fedora infra fedora-messaging key
copy:
src: "{{ private }}/files/rabbitmq/{{ checkcompose_env }}/pki/private/openqa{{ checkcompose_env_suffix }}.key"
dest: /etc/pki/fedora-messaging/openqa{{ checkcompose_env_suffix }}-key.pem
mode: 0640
owner: root
group: geekotest
when: "deployment_type is defined"
tags:
- config
- name: Configure fedora-messaging check-compose consumer
template: src=check-compose.toml.j2 dest=/etc/fedora-messaging/check-compose.toml owner=root group=root mode=0640
notify:
- restart check-compose
tags:
- config
- name: Install config file
template: src=check-compose.conf.j2 dest=/etc/check-compose.conf mode=0644
tags:
- config
- name: Enable and start fedora-messaging check-compose consumer
service: name=fm-consumer@check-compose enabled=yes state=started