210 lines
5.7 KiB
YAML
210 lines
5.7 KiB
YAML
---
|
|
- import_tasks: "mount_fs.yml"
|
|
|
|
- name: register security context for pgsql directory
|
|
command: "ls -dZ /var/lib/pgsql"
|
|
register: pgsql_ls
|
|
changed_when: False # `ls' command is not changing anything
|
|
|
|
- name: update selinux context for postgress db dir if it's wrong
|
|
command: "restorecon -vvRF /var/lib/pgsql"
|
|
when: pgsql_ls.stdout is defined and 'postgresql_db_t' not in pgsql_ls.stdout
|
|
|
|
- name: install daily custom copr-frontend-crontab
|
|
copy: src=cron.daily/copr-frontend-optional dest=/etc/cron.daily/
|
|
mode=0755
|
|
tags: [cron_tasks]
|
|
|
|
- name: install hourly custom copr-frontend-crontab
|
|
copy: src=cron.hourly/copr-frontend-optional dest=/etc/cron.hourly/
|
|
mode=0755
|
|
tags: [cron_tasks]
|
|
|
|
- name: install copr-frontend and copr-selinux
|
|
dnf:
|
|
state: present
|
|
name:
|
|
- copr-frontend
|
|
- copr-selinux
|
|
tags:
|
|
- packages
|
|
|
|
- name: Configure cron job for generating prometheus metrics hourly
|
|
cron:
|
|
name: "generating prometheus metrics"
|
|
user: root
|
|
minute: 0
|
|
job: "/usr/bin/python3 /usr/bin/monitoring.py && mv -f /var/lib/prometheus/node-exporter/copr_cdn_status.prom.new /var/lib/prometheus/node-exporter/copr_cdn_status.prom && mv -f /var/lib/prometheus/node-exporter/copr_ping_status.prom.new /var/lib/prometheus/node-exporter/copr_ping_status.prom"
|
|
tags:
|
|
- cron_tasks
|
|
|
|
- name: Deploy the prometheus monitoring script
|
|
copy:
|
|
src: monitoring.py
|
|
dest: /usr/bin/monitoring.py
|
|
mode: 0750
|
|
owner: root
|
|
group: root
|
|
tags:
|
|
- cron_tasks
|
|
|
|
# we install python-alembic because https://bugzilla.redhat.com/show_bug.cgi?id=1536058
|
|
- name: install additional pkgs for copr-frontend
|
|
dnf:
|
|
state: present
|
|
pkg:
|
|
- "bash-completion"
|
|
- "mod_ssl"
|
|
- redis
|
|
- pxz
|
|
- python3-alembic
|
|
- mod_auth_gssapi
|
|
- nagios-plugins-http
|
|
- python3-prometheus_client
|
|
- python3-beautifulsoup4
|
|
tags:
|
|
- packages
|
|
|
|
#- name: patch for issue XXX
|
|
# patch: src=patches/xxx.patch
|
|
# dest=/the/patched/file.py
|
|
# tags: patches
|
|
|
|
- name: directory for postgresql dumps
|
|
file: state=directory path=/var/www/html/db_dumps/
|
|
owner=copr-fe mode=755
|
|
|
|
- name: install copr configs
|
|
template: src="copr.conf" dest=/etc/copr/copr.conf mode=600
|
|
notify:
|
|
- reload httpd
|
|
- restart copr-fe-fedora-messaging-reader
|
|
tags:
|
|
- config
|
|
- copr_infrastructure_password
|
|
|
|
- name: enable and start redis # TODO: .service in copr-backend should depend on redis
|
|
service: name=redis enabled=yes state=started
|
|
when: not services_disabled|bool
|
|
|
|
# This was state=yes for https://bugzilla.redhat.com/show_bug.cgi?id=1535689 for
|
|
# some time, and since requests were fixed we want it the other way around
|
|
# again.
|
|
- name: Dis-alllow execmem for Apache
|
|
seboolean:
|
|
name: httpd_execmem
|
|
state: no
|
|
persistent: yes
|
|
|
|
- import_tasks: "psql_setup.yml"
|
|
|
|
- name: upgrade db to head
|
|
command: alembic-3 upgrade head
|
|
become: yes
|
|
become_user: copr-fe
|
|
args:
|
|
chdir: /usr/share/copr/coprs_frontend/
|
|
register: alembic_result
|
|
changed_when: alembic_result.stdout is search("Running upgrade")
|
|
|
|
- name: install letsencrypt ssl certificates for dev
|
|
include_role: name=copr/certbot
|
|
tags:
|
|
- config
|
|
- certbot
|
|
|
|
- import_tasks: "httpd.yml"
|
|
|
|
- name: enable services
|
|
service: state=started enabled=yes name={{ item }}
|
|
with_items:
|
|
- httpd
|
|
- crond
|
|
when: not services_disabled|bool
|
|
|
|
- name: set dev banner for dev instance
|
|
when: devel|bool
|
|
copy: src=banner-include.html dest=/var/lib/copr/
|
|
|
|
- name: disallow robots on dev instance
|
|
when: devel|bool
|
|
copy: src=robots.txt dest=/var/www/html/
|
|
|
|
|
|
- name: register whether indexes rebuild is required
|
|
command: copr-frontend update_indexes_required
|
|
become: yes
|
|
become_user: copr-fe
|
|
register: update_indexes_required_result
|
|
changed_when: False
|
|
failed_when: False
|
|
|
|
- name: rebuild indexes
|
|
command: ./manage.py update_indexes
|
|
become: yes
|
|
become_user: copr-fe
|
|
args:
|
|
chdir: /usr/share/copr/coprs_frontend/
|
|
when: update_indexes_required_result.rc != 0
|
|
|
|
- name: make sure /etc/fedora-messaging directory exists
|
|
file: path=/etc/fedora-messaging state=directory
|
|
|
|
- name: install fedora messaging config for Copr
|
|
template: src="fedora-messaging/copr_messaging.toml" dest="/etc/fedora-messaging/copr_messaging.toml"
|
|
notify:
|
|
- restart copr-fe-fedora-messaging-reader
|
|
tags:
|
|
- config
|
|
|
|
- name: detect copr-frontend version
|
|
package_facts: manager=auto
|
|
|
|
- name: install custom systemd service files
|
|
copy: src=systemd dest=/etc
|
|
notify:
|
|
- reload httpd
|
|
|
|
- name: compress rotated httpd logs
|
|
copy: src="httpd.logrotate" dest="/etc/logrotate.d/httpd"
|
|
tags: [logrotate_tasks]
|
|
|
|
- name: start logrotate service
|
|
service: name=logrotate.timer state=started enabled=yes
|
|
when: not services_disabled|bool
|
|
|
|
- name: start fm-consumer service
|
|
service: state=started enabled=yes name="fm-consumer@copr_messaging"
|
|
when:
|
|
- not services_disabled|bool
|
|
|
|
- name: install bash_profile file to ease some admin tasks
|
|
copy:
|
|
content: |
|
|
export PGUSER=copr-fe
|
|
export PGDATABASE=coprdb
|
|
dest: "{{ copr_fe_homedir }}/.bash_profile"
|
|
|
|
- name: start node exporter
|
|
service: state=started enabled=yes name=node_exporter
|
|
|
|
- name: configure options in node exporter
|
|
lineinfile:
|
|
path: /etc/default/prometheus-node-exporter
|
|
regexp: '^ARGS='
|
|
line: 'ARGS=--collector.textfile.directory="/var/lib/prometheus/node-exporter" --collector.systemd'
|
|
backrefs: yes
|
|
notify: restart node_exporter
|
|
|
|
- name: install nrpe
|
|
dnf: name=nrpe state=present
|
|
|
|
- name: install the check script
|
|
template:
|
|
dest: "/usr/bin/copr-cdn-check.py"
|
|
src: "copr-cdn-check.py.j2"
|
|
group: "nagios"
|
|
mode: 0750
|
|
vars:
|
|
api_key: "{{ copr_uptimerobot_api_key_ro | default('not-configured') }}"
|
|
tags: copr_cdn
|