Initial port of datagrepper from puppet to ansible.
https://fedorahosted.org/fedora-infrastructure/ticket/4393
This commit is contained in:
parent
d3a7ea1fa7
commit
e470c9948e
7 changed files with 288 additions and 0 deletions
|
@ -1,2 +1,16 @@
|
||||||
---
|
---
|
||||||
|
# Define resources for this group of hosts here.
|
||||||
|
lvm_size: 20000
|
||||||
|
mem_size: 2048
|
||||||
|
num_cpus: 2
|
||||||
|
|
||||||
|
# for systems that do not match the above - specify the same parameter in
|
||||||
|
# the host_vars/$hostname file
|
||||||
|
|
||||||
|
tcp_ports: [ 80, 443, 6996 ]
|
||||||
|
# Neeed for rsync from log02 for logs.
|
||||||
|
custom_rules: [ '-A INPUT -p tcp -m tcp -s 10.5.126.29 --dport 873 -j ACCEPT', '-A INPUT -p tcp -m tcp -s 192.168.1.56 --dport 873 -j ACCEPT' ]
|
||||||
|
|
||||||
|
fas_client_groups: sysadmin-noc,sysadmin-datenommer,fi-apprentice
|
||||||
|
|
||||||
freezes: false
|
freezes: false
|
||||||
|
|
105
playbooks/groups/datagrepper.yml
Normal file
105
playbooks/groups/datagrepper.yml
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
# create a new datagrepper server
|
||||||
|
|
||||||
|
- name: make datagrepper server
|
||||||
|
hosts: datagrepper;datagrepper-stg
|
||||||
|
user: root
|
||||||
|
gather_facts: False
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "{{ private }}/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- include: "{{ tasks }}/virt_instance_create.yml"
|
||||||
|
- include: "{{ tasks }}/accelerate_prep.yml"
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
- name: make the box be real
|
||||||
|
hosts: datagrepper;datagrepper-stg
|
||||||
|
user: root
|
||||||
|
gather_facts: True
|
||||||
|
accelerate: "{{ accelerated }}"
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "{{ private }}/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- base
|
||||||
|
- rkhunter
|
||||||
|
- denyhosts
|
||||||
|
- nagios_client
|
||||||
|
- fas_client
|
||||||
|
- collectd/base
|
||||||
|
- fedmsg/base
|
||||||
|
- rsyncd
|
||||||
|
- sudo
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- include: "{{ tasks }}/hosts.yml"
|
||||||
|
- include: "{{ tasks }}/yumrepos.yml"
|
||||||
|
- include: "{{ tasks }}/2fa_client.yml"
|
||||||
|
- include: "{{ tasks }}/motd.yml"
|
||||||
|
- include: "{{ tasks }}/openvpn_client.yml"
|
||||||
|
when: env != "staging"
|
||||||
|
- include: "{{ tasks }}/apache.yml"
|
||||||
|
- include: "{{ tasks }}/mod_wsgi.yml"
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
- name: set up gluster server on prod
|
||||||
|
hosts: packages
|
||||||
|
user: root
|
||||||
|
gather_facts: True
|
||||||
|
accelerate: "{{ accelerated }}"
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "{{ private }}/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: gluster/server
|
||||||
|
name: gluster
|
||||||
|
username: "{{ packagesglusterusername }}"
|
||||||
|
password: "{{ packagesglusterpassword }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
datadir: /srv/glusterfs/packages
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
- name: set up gluster client on prod
|
||||||
|
hosts: packages
|
||||||
|
user: root
|
||||||
|
gather_facts: True
|
||||||
|
accelerate: "{{ accelerated }}"
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "{{ private }}/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: gluster/client
|
||||||
|
name: gluster
|
||||||
|
servers:
|
||||||
|
- packages03.phx2.fedoraproject.org
|
||||||
|
- packages04.phx2.fedoraproject.org
|
||||||
|
username: "{{ packagesglusterusername }}"
|
||||||
|
password: "{{ packagesglusterpassword }}"
|
||||||
|
owner: apache
|
||||||
|
group: apache
|
||||||
|
mountdir: /var/cache/fedoracommunity
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- include: "{{ handlers }}/restart_services.yml"
|
||||||
|
|
||||||
|
|
40
roles/datagrepper/files/datagrepper-app.conf
Normal file
40
roles/datagrepper/files/datagrepper-app.conf
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
LoadModule expires_module modules/mod_expires.so
|
||||||
|
LoadModule headers_module modules/mod_headers.so
|
||||||
|
LoadModule deflate_module modules/mod_deflate.so
|
||||||
|
|
||||||
|
ExpiresActive On
|
||||||
|
#ExpiresDefault "access plus 300 seconds"
|
||||||
|
|
||||||
|
ErrorLog logs/datagrepper_error_log
|
||||||
|
CustomLog logs/datagrepper_access_log combined
|
||||||
|
|
||||||
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css application/x-javascript
|
||||||
|
|
||||||
|
# This caching may not necessarily be ideal, or even correct.
|
||||||
|
# However, it was the only I could get firebug to show me 302's for
|
||||||
|
# my ToscaWidget resources.
|
||||||
|
<filesmatch ".(gif|jpe?g|png|css|js)$">
|
||||||
|
Header unset Cache-Control
|
||||||
|
Header unset Etag
|
||||||
|
Header add Cache-Control "max-age=2592000"
|
||||||
|
#ExpiresDefault A2592000
|
||||||
|
</filesmatch>
|
||||||
|
|
||||||
|
# Static resources for the datagrepper app.
|
||||||
|
Alias /datagrepper/css /usr/lib/python2.6/site-packages/datagrepper/static/css
|
||||||
|
# Job runner output dir.
|
||||||
|
Alias /datagrepper/output /var/cache/datagrepper
|
||||||
|
|
||||||
|
WSGIDaemonProcess datagrepper user=fedmsg group=fedmsg maximum-requests=50000 display-name=datagrepper processes=8 threads=4 inactivity-timeout=300
|
||||||
|
WSGISocketPrefix run/wsgi
|
||||||
|
WSGIRestrictStdout Off
|
||||||
|
WSGIRestrictSignal Off
|
||||||
|
WSGIPythonOptimize 1
|
||||||
|
|
||||||
|
WSGIScriptAlias /datagrepper /usr/share/datagrepper/apache/datagrepper.wsgi
|
||||||
|
|
||||||
|
<Directory /usr/share/datagrepper/>
|
||||||
|
WSGIProcessGroup datagrepper
|
||||||
|
Order deny,allow
|
||||||
|
Allow from all
|
||||||
|
</Directory>
|
14
roles/datagrepper/files/datagrepper-fedmsg.py
Normal file
14
roles/datagrepper/files/datagrepper-fedmsg.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Configuration for the datagrepper webapp.
|
||||||
|
config = {
|
||||||
|
# We don't actually want to run the datanommer consumer on this machine.
|
||||||
|
'datanommer.enabled': False,
|
||||||
|
|
||||||
|
# Note that this is connecting to db02. That's fine for now, but we want to
|
||||||
|
# move the db for datanommer to a whole other db host in the future. We
|
||||||
|
# expect the amount of data it generates to grow pretty steadily over time
|
||||||
|
# and we don't want *read* operations on that database to slow down all our
|
||||||
|
# other apps.
|
||||||
|
'datanommer.sqlalchemy.url': 'postgresql://{{ datanommerDBUser }}:{{ datanommerDBPassword }}@db-datanommer/datanommer',
|
||||||
|
'fedmsg.consumers.datagrepper-runner.enabled': True,
|
||||||
|
}
|
||||||
|
|
37
roles/datagrepper/files/datagrepper.cfg
Normal file
37
roles/datagrepper/files/datagrepper.cfg
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
|
### Secret key for the Flask application
|
||||||
|
SECRET_KEY = '{{ datagrepperCookieSecret }}'
|
||||||
|
|
||||||
|
### Unhappy mako
|
||||||
|
MAKO_OUTPUT_ENCODING='utf-8'
|
||||||
|
|
||||||
|
{% if environment == "staging" %}
|
||||||
|
DATAGREPPER_BASE_URL='https://apps.stg.fedoraproject.org/datagrepper/'
|
||||||
|
{% else %}
|
||||||
|
DATAGREPPER_BASE_URL='https://apps.fedoraproject.org/datagrepper/'
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
DATAGREPPER_CACHE_BACKEND='dogpile.cache.memcached'
|
||||||
|
{% if environment == "staging" %}
|
||||||
|
DATAGREPPER_CACHE_KWARGS={'arguments': {'url': 'app01.stg.phx2.fedoraproject.org:11211'}}
|
||||||
|
{% else %}
|
||||||
|
DATAGREPPER_CACHE_KWARGS={'arguments': {'url': ['memcached03.phx2.fedoraproject.org:11211', 'memcached04.phx2.fedoraproject.org:11211']}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if environment == "staging" %}
|
||||||
|
SQLALCHEMY_DATABASE_URI='postgresql+psycopg2://{{ datagrepper_app_user }}:{{ datagrepper_app_password }}@db02.stg.phx2.fedoraproject.org:5432/datagrepper'
|
||||||
|
{% else %}
|
||||||
|
SQLALCHEMY_DATABASE_URI='postgresql+psycopg2://{{ datagrepper_app_user }}:{{ datagrepper_app_password }}@db01.phx2.fedoraproject.org:5432/datagrepper'
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if environment == "staging" %}
|
||||||
|
DATAGREPPER_OPENID_ENDPOINT='id.stg.fedoraproject.org'
|
||||||
|
{% else %}
|
||||||
|
DATAGREPPER_OPENID_ENDPOINT='id.fedoraproject.org'
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
RUNNER_LOCKFILE='/var/run/fedmsg/datagrepper.lock'
|
||||||
|
JOB_OUTPUT_DIR='/var/cache/datagrepper'
|
||||||
|
JOB_OUTPUT_URL='https://apps.{% if environment == "staging" %}stg.{% endif %}fedoraproject.org/datagrepper/output'
|
||||||
|
JOB_EXPIRY=timedelta(days=7)
|
12
roles/datagrepper/files/fedmsg-hub
Normal file
12
roles/datagrepper/files/fedmsg-hub
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# puppet/modules/datagrepper/templates/fedmsg-hub.erb
|
||||||
|
__requires__ = ['fedmsg', 'SQLAlchemy >= 0.7', 'jinja2 >= 2.4']
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pkg_resources import load_entry_point
|
||||||
|
os.environ['DATAGREPPER_CONFIG'] = '/etc/datagrepper/datagrepper.cfg'
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(
|
||||||
|
load_entry_point('fedmsg', 'console_scripts', 'fedmsg-hub')()
|
||||||
|
)
|
66
roles/datagrepper/tasks/main.yml
Normal file
66
roles/datagrepper/tasks/main.yml
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
- name: install datagrepper and required packages
|
||||||
|
yum: pkg={{ item }} state=installed
|
||||||
|
with_items:
|
||||||
|
- datagrepper
|
||||||
|
- python-psycopg2
|
||||||
|
tags:
|
||||||
|
- packages
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: creating datagrepper config dir
|
||||||
|
file: path=/etc/datagrepper state=directory owner=root more=755
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: setting up datagrepper config from the template
|
||||||
|
template: src=datagrepper.cfg dest=/etc/datagrepper/datagrepper.cfg owner=fedmsg group=fedmsg mode=640
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: setting up credential from the template
|
||||||
|
template: src=datagrepper-fedmsg.py dest=/etc/fedmsg.d/datagrepper.py owner=fedmsg group=fedmsg mode=640
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: installing memcached package for /topics
|
||||||
|
yum: pkg=python-memcached state=installed
|
||||||
|
tags:
|
||||||
|
- packages
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: setting up httpd config
|
||||||
|
template: src=datagrepper-app.conf dest=/etc/httpd/conf.d/datagrepper.conf owner=root group=root
|
||||||
|
notify:
|
||||||
|
- restart httpd
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: adding fedmsg-hub binary
|
||||||
|
file: src=fedmsg-hub dest=/usr/bin/fedmsg-hub owner=root group=root mode=755
|
||||||
|
notify:
|
||||||
|
- restart fedmsg-hub
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: ensure selinux lets httpd talk to the database
|
||||||
|
seboolean: name=httpd_can_network_connect_db persistent=yes state=yes
|
||||||
|
tags:
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: ensure selinux lets httpd talk to the memcache
|
||||||
|
seboolean: name=httpd_can_network_memcache persistent=yes state=yes
|
||||||
|
tags:
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
- name: adding datagrepper dir in httpd context
|
||||||
|
command: semanage fcontext -a -t httpd_cache_t "/var/cache/datagrepper(/.*)?"
|
||||||
|
tags:
|
||||||
|
- datagrepper
|
||||||
|
|
||||||
|
# selinux policy has been intentionally omitted since that is obtained from fedmsg/base
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue