--- - 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