ansible/roles/collab/tasks/main.yml

271 lines
6.5 KiB
YAML

---
- name: Add graphviz repository
ansible.builtin.yum_repository:
name: graphviz
baseurl: >-
{{
"https://www2.graphviz.org" +
"/Packages/stable/centos/$releasever/os/$basearch/"
}}
description: Graphviz
gpgcheck: false
enabled: true
- name: Install dependencies
ansible.builtin.package:
name: "{{ item }}"
state: installed
with_items:
- git
- graphviz-lang-python2
- patch
- python2-mod_wsgi
- python2-pip
- python2-setuptools
- name: Download moin package
ansible.builtin.get_url:
url: "https://static.moinmo.in/files/moin-{{ moin_version }}.tar.gz"
dest: "{{ srcdir }}"
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
checksum: sha1:3eb13b4730bd97259a41c4cd500f8433778ff8cf
- name: Extract moin package
ansible.builtin.unarchive:
src: "{{ srcdir }}/moin-{{ moin_version }}.tar.gz"
dest: "{{ srcdir }}"
owner: root
group: "{{ ansible_wheel }}"
creates: "{{ srcdir }}/moin-{{ moin_version }}"
remote_src: true
- name: Copy collabbackend packages
ansible.builtin.git:
dest: "{{ srcdir }}/collabbackend"
repo: "https://github.com/graphingwiki/collabbackend.git"
version: v1.1.1
- name: Copy graphingwiki packages
ansible.builtin.git:
dest: "{{ srcdir }}/graphingwiki"
repo: "https://github.com/graphingwiki/graphingwiki.git"
version: master
- name: Install foo.sh theme
ansible.builtin.copy:
src: foosh.py
dest: "{{ srcdir }}/collabbackend/collabbackend/plugin/theme/foosh.py"
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
- name: Install static files for foo.sh theme
ansible.posix.synchronize:
dest: "{{ srcdir }}/collabbackend/htdocs"
src: foo.sh
delete: true
recursive: true
- name: Patch moin source
ansible.posix.patch:
src: "moin-{{ moin_version }}.patch"
basedir: "{{ srcdir }}/moin-{{ moin_version }}"
- name: Copy moin htdocs
ansible.builtin.command:
argv:
- cp
- -a
- "{{ srcdir }}/moin-{{ moin_version }}/MoinMoin/web/static/htdocs"
- "{{ srcdir }}/moin-{{ moin_version }}/wiki"
creates: "{{ srcdir }}/moin-{{ moin_version }}/wiki/htdocs"
- name: Install graphigwiki packages
ansible.builtin.pip:
name: ["{{ srcdir }}/graphingwiki", "{{ srcdir }}/collabbackend"]
umask: "0022"
executable: pip2
extra_args: --egg --no-index
- name: Install moin
ansible.builtin.pip:
name: "{{ srcdir }}/moin-{{ moin_version }}"
umask: "0022"
executable: pip2
extra_args: --no-index
- name: Create group collab
ansible.builtin.group:
name: collab
gid: 310
- name: Create user collab
ansible.builtin.user:
name: collab
comment: Service Collab
uid: 310
group: collab
home: /var/lib/collab
shell: /sbin/nologin
- name: Create .profile for user collab
ansible.builtin.copy:
content: "umask 077\n"
dest: /var/lib/collab/.profile
mode: "0440"
owner: collab
group: collab
- name: Create config directories
ansible.builtin.file:
path: "{{ item }}"
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
state: directory
with_items:
- /etc/local
- /etc/local/collab
- name: Create collab.ini
ansible.builtin.copy:
src: collab.ini
dest: /etc/local/collab/collab.ini
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
- name: Set SELinux contexts from data directory
community.general.sefcontext:
path: /export/wikis(/.*)?
setype: httpd_sys_rw_content_t
- name: Create data directory
ansible.builtin.file:
path: /export/wikis
mode: "0755"
owner: root
group: root
seuser: _default
setype: _default
state: directory
- name: Link data directory
ansible.builtin.file:
src: /export/wikis
dest: /srv/wikis
state: link
- name: Create collab directory
ansible.builtin.file:
path: /srv/wikis/collab
state: directory
mode: "0750"
owner: root
group: collab
- name: Create data directories
ansible.builtin.file:
state: directory
path: "{{ item }}"
mode: "02770"
owner: collab
group: collab
with_items:
- "/srv/wikis/collab/archive"
- "/srv/wikis/collab/cache"
- "/srv/wikis/collab/config"
- "/srv/wikis/collab/htdocs"
- "/srv/wikis/collab/log"
- "/srv/wikis/collab/run"
- "/srv/wikis/collab/underlay"
- "/srv/wikis/collab/user"
- "/srv/wikis/collab/wikis"
- name: Create tmpfs mount for cache
ansible.posix.mount:
state: mounted
path: "/export/wikis/collab/cache"
src: none
fstype: tmpfs
opts: "uid=collab,gid=collab,mode=2770,context=\"{{ tmpfs_context }}\""
- name: Install htdocs/.htaccess
ansible.builtin.copy:
src: collab-htaccess
dest: collab-htaccess
mode: "0660"
owner: collab
group: collab
- name: Copy configs from collabbackend archive
ansible.builtin.copy:
src: "{{ srcdir }}/collabbackend/config/{{ item }}"
dest: /srv/wikis/collab/config/{{ item }}
mode: "0660"
owner: collab
group: collab
seuser: _default
setype: _default
force: false
remote_src: true
with_items:
- collabfarm.py
- intermap.txt
- logging.conf
- name: Extract CollabBase.zip from collabbackend archive
ansible.builtin.copy:
src: "{{ srcdir }}/collabbackend/packages/CollabBase.zip"
dest: /var/lib/collab/CollabBase.zip
mode: "0660"
owner: collab
group: collab
remote_src: true
- name: Initialize collab
ansible.builtin.script:
cmd: collab-init.sh
creates: /srv/wikis/collab/wikis/collab
- name: Add collab-htaccess cron job
ansible.builtin.cron:
name: collab-htaccess
user: collab
job: /usr/bin/collab-htaccess
- name: Link collab to apache htdocs
ansible.builtin.file:
src: /srv/wikis/collab/htdocs
dest: "/srv/web/{{ inventory_hostname }}/collab"
owner: root
group: "{{ ansible_wheel }}"
state: link
follow: false
- name: Link moin static to apache htdocs
ansible.builtin.file:
src: /usr/share/moin/htdocs
dest: "/srv/web/{{ inventory_hostname }}/moin_static"
owner: root
group: "{{ ansible_wheel }}"
state: link
follow: false
- name: Add apache to collab group
ansible.builtin.user:
name: apache
groups: collab
append: true
notify: Restart apache
- name: Create apache config
ansible.builtin.template:
src: collab.conf.j2
dest: /etc/httpd/conf.local.d/collab.conf
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
notify: Restart apache