diff --git a/roles/6-generic-apps/tasks/main.yml b/roles/6-generic-apps/tasks/main.yml index 2b74a43ef..38f707041 100644 --- a/roles/6-generic-apps/tasks/main.yml +++ b/roles/6-generic-apps/tasks/main.yml @@ -9,6 +9,12 @@ when: dokuwiki_install tags: dokuwiki +- name: MEDIAWIKI + include_role: + name: mediawiki + when: mediawiki_install + tags: mediawiki + - name: ELGG include_role: name: elgg diff --git a/roles/mediawiki/defaults/main.yml b/roles/mediawiki/defaults/main.yml new file mode 100644 index 000000000..708549e45 --- /dev/null +++ b/roles/mediawiki/defaults/main.yml @@ -0,0 +1,24 @@ +mediawiki_major_version: "1.30" +mediawiki_minor_version: "0" +mediawiki_version: "{{ mediawiki_major_version }}.{{ mediawiki_minor_version }}" + +mediawiki_download_base_url: "https://releases.wikimedia.org/mediawiki/{{ mediawiki_major_version }}" +mediawiki_src: "mediawiki-{{ mediawiki_version }}.tar.gz" + +mediawiki_db_name: iiab_mediawiki +mediawiki_db_user: iiab_mediawiki_user +mediawiki_db_user_password: changeme + +mediawiki_admin_user: Admin +mediawiki_admin_user_password: changeme + +mediawiki_site_name: Community Wiki + +mediawiki_install: True +mediawiki_enabled: True + +mediawiki_install_path: "{{ content_base }}" +mediawiki_abs_path: "{{ mediawiki_install_path }}/mediawiki-{{ mediawiki_version }}" + +mediawiki_url: /mediawiki +mediawiki_full_url: "http://{{ iiab_hostname }}.{{ iiab_domain }}/{{ mediawiki_url }}" diff --git a/roles/mediawiki/tasks/install.yml b/roles/mediawiki/tasks/install.yml new file mode 100644 index 000000000..ac868c999 --- /dev/null +++ b/roles/mediawiki/tasks/install.yml @@ -0,0 +1,120 @@ +- name: Install required packages + package: name={{ item }} + state=present + with_items: + - "php{{ php_version }}-intl" + - "php{{ php_version }}-mbstring" + tags: + - download + +- name: Download the latest MediaWiki software + get_url: + url: "{{ mediawiki_download_base_url }}/{{ mediawiki_src }}" + dest: "{{ downloads_dir }}" + timeout: "{{ download_timeout }}" +# force: yes +# backup: yes + register: mediawiki_download_output + when: internet_available + +- name: Unpack download to permanent location + unarchive: + src: "{{ downloads_dir }}/{{ mediawiki_src }}" + dest: "{{ mediawiki_install_path }}" + owner: root + group: "{{ apache_user }}" + mode: 0755 + keep_newer: yes + +- name: MySQL database needs to be running if we are trying to create a new db + service: + state: started + name: "{{ mysql_service }}" + +- name: Create MySQL mediawiki database + mysql_db: + name: "{{ mediawiki_db_name }}" + state: present + +- name: Create MySQL mediawiki database user + mysql_user: + name: "{{ mediawiki_db_user }}" + password: "{{ mediawiki_db_user_password }}" + priv: "{{ mediawiki_db_name }}.*:ALL,GRANT" + state: present + +- name: Configure MediaWiki + shell: > + php '{{ mediawiki_abs_path }}/maintenance/install.php' + --dbname={{ mediawiki_db_name }} + --dbserver="localhost" + --installdbuser={{ mediawiki_db_user }} + --installdbpass={{ mediawiki_db_user_password }} + --dbuser={{ mediawiki_db_user }} + --dbpass={{ mediawiki_db_user_password }} + --server="{{ iiab_hostname }}.{{ iiab_domain }}" + --scriptpath=/mediawiki + --lang=en + --pass={{ mediawiki_admin_user_password }} + "{{ mediawiki_site_name }}" + "{{ mediawiki_admin_user }}" + args: + chdir: "{{ mediawiki_abs_path }}" + creates: "{{ mediawiki_abs_path }}/LocalSettings.php" + +- name: Copy mediawiki config file to change a few calculated settings + template: + src: LocalSettings.php.j2 + dest: "{{ mediawiki_abs_path }}/LocalSettings.php" + owner: root + group: "{{ apache_user }}" + mode: 0640 + +- name: Copy mediawiki httpd conf file + template: + src: mediawiki.conf.j2 + dest: "/etc/{{ apache_config_dir }}/mediawiki.conf" + +- name: Enable httpd conf file if we are disabled (debuntu) + file: + src: /etc/apache2/sites-available/mediawiki.conf + dest: /etc/apache2/sites-enabled/mediawiki.conf + state: link + when: mediawiki_enabled and is_debuntu + +- name: Remove httpd conf file if we are disabled (OS's other than debuntu) + file: + path: /etc/apache2/sites-enabled/mediawiki.conf + state: absent + when: not mediawiki_enabled and is_debuntu + +- name: Restart Apache, so it picks up the new aliases + service: + name: "{{ apache_service }}" + state: restarted + +- name: Add 'mediawiki' to list of services at /etc/iiab/iiab.ini + ini_file: + dest: "{{ service_filelist }}" + section: mediawiki + option: "{{ item.option }}" + value: "{{ item.value }}" + with_items: + - option: name + value: mediawiki + - option: description + value: '"mediawiki is a blog and web site management application."' + - option: mediawiki_src + value: "{{ mediawiki_src }}" + - option: mediawiki_abs_path + value: "{{ mediawiki_abs_path }}" + - option: mediawiki_db_name + value: "{{ mediawiki_db_name }}" + - option: mediawiki_db_user + value: "{{ mediawiki_db_user }}" + - option: mediawiki_url + value: "{{ mediawiki_url }}" + - option: mediawiki_full_url + value: "{{ mediawiki_full_url }}" + - option: mediawiki_enabled + value: "{{ mediawiki_enabled }}" diff --git a/roles/mediawiki/tasks/main.yml b/roles/mediawiki/tasks/main.yml new file mode 100644 index 000000000..6c77d3e7c --- /dev/null +++ b/roles/mediawiki/tasks/main.yml @@ -0,0 +1,3 @@ +- name: Include the install playbook + include_tasks: install.yml + when: mediawiki_install diff --git a/roles/mediawiki/templates/LocalSettings.php.j2 b/roles/mediawiki/templates/LocalSettings.php.j2 new file mode 100644 index 000000000..29546f93c --- /dev/null +++ b/roles/mediawiki/templates/LocalSettings.php.j2 @@ -0,0 +1,133 @@ + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted +