271 lines
6.5 KiB
YAML
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
|