roles/koji-gc: Deploy the Koji garbage collector
The *koji-gc* role sets up the Koji garbage collector utility to run periodically. It uses cron for scheduling. A client certificate is required for authentication, and must be supplied by placing it in the `certs/koji/{{ inventory_hostname }}` directory.jenkins-master
parent
760d3f4aec
commit
1a8d7ce29a
|
@ -0,0 +1,6 @@
|
||||||
|
koji_gc_delay: 1 day
|
||||||
|
koji_gc_grace_period: 1 week
|
||||||
|
kojihub_host: '{{ ansible_fqdn }}'
|
||||||
|
kojihub_url: https://{{ kojihub_host }}/kojihub
|
||||||
|
kojiweb_hostname: '{{ kojihub_host }}'
|
||||||
|
kojiweb_url: https://{{ kojiweb_hostname }}/koji
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
printf 'koji-gc run: %s\n' "$(date)" >> /var/log/koji-gc.log
|
||||||
|
|
||||||
|
/usr/sbin/koji-gc --no-mail 2>&1 | tee -a /var/log/koji-gc.log | grep -Ei 'err|fail|warn'
|
||||||
|
exit 0
|
|
@ -0,0 +1,47 @@
|
||||||
|
- name: ensure packages are installed
|
||||||
|
package:
|
||||||
|
name=koji-utils
|
||||||
|
state=present
|
||||||
|
tags:
|
||||||
|
- install
|
||||||
|
|
||||||
|
- name: ensure koji-gc certificate is installed
|
||||||
|
copy:
|
||||||
|
src={{ item }}
|
||||||
|
dest=/etc/koji-gc/koji-gc.pem
|
||||||
|
mode=0400
|
||||||
|
owner=root
|
||||||
|
group=root
|
||||||
|
with_fileglob:
|
||||||
|
- certs/koji/{{ inventory_hostname }}/koji-gc.pem
|
||||||
|
- name: ensure koji-gc ca certificates are installed
|
||||||
|
copy:
|
||||||
|
src={{ item }}
|
||||||
|
dest=/etc/koji-gc/{{ item|basename }}
|
||||||
|
mode=0644
|
||||||
|
with_fileglob:
|
||||||
|
- certs/koji/{{ inventory_hostname }}/*.crt
|
||||||
|
- name: ensure koji hub server ca certificate is trusted
|
||||||
|
copy:
|
||||||
|
src={{ item }}
|
||||||
|
dest=/etc/pki/ca-trust/source/anchors/koji-hub.crt
|
||||||
|
mode=0644
|
||||||
|
with_fileglob:
|
||||||
|
- certs/koji/{{ inventory_hostname }}/serverca.crt
|
||||||
|
notify: update ca trust
|
||||||
|
- name: ensure koji-gc is configured
|
||||||
|
template:
|
||||||
|
src=koji-gc.conf.j2
|
||||||
|
dest=/etc/koji-gc/koji-gc.conf
|
||||||
|
mode=0644
|
||||||
|
|
||||||
|
- name: ensure koji-gc cron script is installed
|
||||||
|
copy:
|
||||||
|
src=koji-gc-cron.sh
|
||||||
|
dest=/usr/local/libexec/koji-gc-cron
|
||||||
|
mode=0755
|
||||||
|
- name: ensure koji-gc is scheduled
|
||||||
|
template:
|
||||||
|
src=koji-gc.crond.j2
|
||||||
|
dest=/etc/cron.d/koji-gc
|
||||||
|
mode=0644
|
|
@ -0,0 +1,60 @@
|
||||||
|
#test policy file
|
||||||
|
#earlier = higher precedence!
|
||||||
|
|
||||||
|
[main]
|
||||||
|
key_aliases =
|
||||||
|
30C9ECF8 fedora-test
|
||||||
|
4F2A6FD2 fedora-gold
|
||||||
|
897DA07A redhat-beta
|
||||||
|
1AC70CE6 fedora-extras
|
||||||
|
527E5D3A fmos-release
|
||||||
|
|
||||||
|
unprotected_keys =
|
||||||
|
fedora-test
|
||||||
|
fedora-extras
|
||||||
|
redhat-beta
|
||||||
|
|
||||||
|
delay = {{ koji_gc_delay }}
|
||||||
|
grace_period = {{ koji_gc_grace_period }}
|
||||||
|
|
||||||
|
server = {{ kojihub_url }}
|
||||||
|
weburl = {{ kojiweb_url }}
|
||||||
|
|
||||||
|
# The service name of the principal being used by the hub
|
||||||
|
#krbservice = host
|
||||||
|
|
||||||
|
cert = /etc/koji-gc/client.pem
|
||||||
|
ca = /etc/koji-gc/clientca.crt
|
||||||
|
serverca = /etc/koji-gc/serverca.crt
|
||||||
|
|
||||||
|
# The domain name that will be appended to Koji usernames
|
||||||
|
# when creating email notifications
|
||||||
|
{% if koji_gc_email_domain is defined %}
|
||||||
|
email_domain = {{ koji_gc_email_domain }}
|
||||||
|
{% else %}
|
||||||
|
#email_domain = fedoraproject.org
|
||||||
|
{% endif %}
|
||||||
|
{% if koji_gc_email_from is defined %}
|
||||||
|
email_from = {{ koji_gc_email_from }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# TODO: This should be configurable... #}
|
||||||
|
[prune]
|
||||||
|
policy =
|
||||||
|
#stuff to protect
|
||||||
|
#note that tags with master lock engaged are already protected
|
||||||
|
tag *-updates :: keep
|
||||||
|
age < 1 day :: skip
|
||||||
|
sig fedora-gold :: skip
|
||||||
|
sig fmos-release :: skip
|
||||||
|
sig fedora-test && age < 12 weeks :: keep
|
||||||
|
|
||||||
|
#stuff to chuck semi-rapidly
|
||||||
|
tag *-testing *-candidate :: { # nested rules
|
||||||
|
order >= 2 :: untag
|
||||||
|
order > 0 && age > 6 weeks :: untag
|
||||||
|
} #closing braces must be on a line by themselves (modulo comments/whitespace)
|
||||||
|
tag *-candidate && age > 60 weeks :: untag
|
||||||
|
|
||||||
|
#default: keep the last 3
|
||||||
|
order > 2 :: untag
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% if koji_gc_notify is defined %}
|
||||||
|
MAILTO={{ koji_gc_notify }}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
40 3 * * * root /usr/local/libexec/koji-gc-cron
|
||||||
|
50 3 * * 0 root find {{ koji_home }}/scratch -mindepth 1 -not -newermt '-60 days' -delete
|
||||||
|
55 3 * * 0 root find {{ koji_home }}/work -mindepth 1 -not -newermt '-30 days' -delete
|
Loading…
Reference in New Issue