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 + diff --git a/roles/pathagar/tasks/main.yml b/roles/pathagar/tasks/main.yml index 3ee3308e8..059285172 100644 --- a/roles/pathagar/tasks/main.yml +++ b/roles/pathagar/tasks/main.yml @@ -1,27 +1,31 @@ -- name: Remove if exist pathagar rpm version - package: name=pathagar - state=absent +- name: Remove package Pathagar (in case rpm?) + package: + name: pathagar + state: absent -- name: Install pathagar pre requisites (both fedora and debian) - package: name={{ item }} - state=present +- name: Install Pathagar prerequisites (all OSs) + package: + name: "{{ item }}" + state: present with_items: - python-virtualenv - python-pip - python-psycopg2 -- name: Install pathagar pre requisites for debian - package: name={{ item }} - state=present +- name: Install Pathagar prerequisites (debuntu) + package: + name: "{{ item }}" + state: present with_items: - libapache2-mod-wsgi - libxml2-dev - libxslt-dev when: is_debuntu -- name: Install pathagar pre requisites not debian - package: name={{ item }} - state=present +- name: Install Pathagar prerequisites (not debuntu) + package: + name: "{{ item }}" + state: present with_items: - mod_wsgi - libxml2-devel @@ -29,32 +33,37 @@ when: not is_debuntu - name: Create destination folder - file: path={{ pathagar_src }} - state=directory - owner=root - group=root - mode=0755 + file: + path: "{{ pathagar_src }}" + state: directory + owner: root + group: root + mode: 0755 - name: Create books destination folder - file: path={{ pathagar_media }} - state=directory - owner={{ apache_user }} - group={{ apache_user }} - mode=0755 + file: + path: "{{ pathagar_media }}" + state: directory + owner: "{{ apache_user }}" + group: "{{ apache_user }}" + mode: 0755 -- name: Determine if pathagar has already been downloaded from git - stat: path="{{ pathagar_src }}/settings.py" +- name: Determine if Pathagar has already been downloaded from git + stat: + path: "{{ pathagar_src }}/settings.py" register: pathagar -- name: Clone pathagar repo - git: repo=https://github.com/PathagarBooks/pathagar.git - dest={{ pathagar_src }} - update=yes - version=master - when: internet_available and pathagar.stat.exists is defined and not pathagar.stat.exists +- name: Clone Pathagar repo + git: + repo: https://github.com/PathagarBooks/pathagar.git + dest: "{{ pathagar_src }}" + update: yes + version: master + when: internet_available and pathagar.stat.exists is defined and not pathagar.stat.exists -- name: Install pathagar requirements in a virtualenv - pip: name={{ item }} +- name: Install Pathagar requirements in a virtualenv + pip: + name: "{{ item }}" with_items: - Django==1.4.5 - django-tagging==0.3.1 @@ -62,117 +71,134 @@ - lxml==3.4.4 when: internet_available -- name: Install pathagar requirements in a virtualenv - pip: name={{ item }} - extra_args="--use-wheel" - virtualenv={{ pathagar_venv }} - virtualenv_site_packages=yes +- name: Install Pathagar requirements in a virtualenv + pip: + name: "{{ item }}" + extra_args: "--use-wheel" + virtualenv: "{{ pathagar_venv }}" + virtualenv_site_packages: yes with_items: - django-taggit==0.14 -- name: Create pathagar postgresql user - postgresql_user: name={{ pathagar_db_user }} - password={{ pathagar_db_password }} - role_attr_flags=NOSUPERUSER,NOCREATEROLE,NOCREATEDB - state=present +- name: Create Pathagar postgresql user + postgresql_user: + name: "{{ pathagar_db_user }}" + password: "{{ pathagar_db_password }}" + role_attr_flags: NOSUPERUSER,NOCREATEROLE,NOCREATEDB + state: present become: yes become_user: postgres - name: Start postgresql-iiab - service: name=postgresql-iiab - state=started + service: + name: postgresql-iiab + state: started -- name: Enable pathagar postgresql user access by md5 method - lineinfile: backup=yes - dest=/library/pgsql-iiab/pg_hba.conf - regexp="^host\s+pathagar" - line="host pathagar pathagar samehost md5" - state=present - insertafter="^# IPv4 local connections" - owner=postgres - group=postgres +- name: Enable Pathagar postgresql user access by md5 method + lineinfile: + backup: yes + dest: /library/pgsql-iiab/pg_hba.conf + regexp: '^host\s+pathagar' + line: "host pathagar pathagar samehost md5" + state: present + insertafter: "^# IPv4 local connections" + owner: postgres + group: postgres register: enable_pathagar_md5_access - name: Reload postgresql service - service: name=postgresql-iiab - state=reloaded + service: + name: postgresql-iiab + state: reloaded when: enable_pathagar_md5_access.changed -- name: Create pathagar postgresql database - postgresql_db: name={{ pathagar_db_name }} - encoding=utf8 - owner={{ pathagar_db_user }} - state=present - template=template0 +- name: Create Pathagar postgresql database + postgresql_db: + name: "{{ pathagar_db_name }}" + encoding: utf8 + owner: "{{ pathagar_db_user }}" + state: present + template: template0 become: yes become_user: postgres -- name: Install XS custom settings for patahgar - template: src=prod_settings.py - dest={{ pathagar_src }}/prod_settings.py - owner=root - group=root - mode=0644 +- name: Install IIAB custom settings for Pathagar + template: + src: prod_settings.py + dest: "{{ pathagar_src }}/prod_settings.py" + owner: root + group: root + mode: 0644 -- name: Create pathagar initial db - django_manage: app_path={{ pathagar_src }} - command=syncdb - virtualenv={{ pathagar_venv }} - settings=pathagar.prod_settings +- name: Create Pathagar initial db + django_manage: + app_path: "{{ pathagar_src }}" + command: syncdb + virtualenv: "{{ pathagar_venv }}" + settings: pathagar.prod_settings -- name: Upload pathagar admin user - template: src=auth.User.json - dest={{ pathagar_dir }}/auth.User.json - owner=root - group=root - mode=0600 +- name: Upload Pathagar admin user + template: + src: auth.User.json + dest: "{{ pathagar_dir }}/auth.User.json" + owner: root + group: root + mode: 0600 -- name: Load pathagar admin user - django_manage: app_path={{ pathagar_src }} - command=loaddata - virtualenv={{ pathagar_venv }} - settings=pathagar.prod_settings - fixtures={{ pathagar_dir }}/auth.User.json +- name: Load Pathagar admin user + django_manage: + app_path: "{{ pathagar_src }}" + command: loaddata + virtualenv: "{{ pathagar_venv }}" + settings: pathagar.prod_settings + fixtures: "{{ pathagar_dir }}/auth.User.json" -- name: Collect pathagar static files - django_manage: app_path={{ pathagar_src }} - command=collectstatic - virtualenv={{ pathagar_venv }} - settings=pathagar.prod_settings +- name: Collect Pathagar static files + django_manage: + app_path: "{{ pathagar_src }}" + command: collectstatic + virtualenv: "{{ pathagar_venv }}" + settings: pathagar.prod_settings -- name: Install wsgi.py for patahgar - template: src=wsgi.py - dest={{ pathagar_dir }}/wsgi.py - owner=root - group=root - mode=0644 +- name: Install wsgi.py for Pathagar + template: + src: wsgi.py + dest: "{{ pathagar_dir }}/wsgi.py" + owner: root + group: root + mode: 0644 -- name: Install httpd conf for pathagar - template: src=pathagar.conf - backup=yes - dest=/etc/{{ apache_config_dir }}/pathagar.conf - mode=0644 +- name: Install httpd conf for Pathagar + template: + src: pathagar.conf + backup: yes + dest: "/etc/{{ apache_config_dir }}/pathagar.conf" + mode: 0644 -- name: Enable pathagar - file: path=/etc/apache2/sites-enabled/pathagar.conf - src=/etc/apache2/sites-available/pathagar.conf - state=link +- name: Enable Pathagar (debuntu) + file: + path: /etc/apache2/sites-enabled/pathagar.conf + src: /etc/apache2/sites-available/pathagar.conf + state: link when: pathagar_enabled and is_debuntu -- name: Disable pathagar - file: path=/etc/apache2/sites-enabled/pathagar.conf - state=absent +- name: Disable Pathagar (debuntu) + file: + path: /etc/apache2/sites-enabled/pathagar.conf + state: absent when: not pathagar_enabled and is_debuntu - name: Restart http - service: name={{ apache_service }} - state=reloaded + service: + name: "{{ apache_service }}" + state: reloaded -- name: add pathagar to service list - ini_file: dest='{{ service_filelist }}' - section=pathagar - option='{{ item.option }}' - value='{{ item.value }}' +- name: Add 'pathagar' to list of services at /etc/iiab/iiab.ini + ini_file: + dest: "{{ service_filelist }}" + section: pathagar + option: "{{ item.option }}" + value: "{{ item.value }}" with_items: - option: name value: pathagar diff --git a/roles/phpmyadmin/defaults/main.yml b/roles/phpmyadmin/defaults/main.yml index b6ea54548..ae18bd369 100644 --- a/roles/phpmyadmin/defaults/main.yml +++ b/roles/phpmyadmin/defaults/main.yml @@ -1,4 +1,4 @@ phpmyadmin_install: False phpmyadmin_enabled: False -phpmyadmin_name: "phpMyAdmin-4.7.8-all-languages" +phpmyadmin_name: "phpMyAdmin-4.7.9-all-languages" phpmyadmin_name_zip: "{{ phpmyadmin_name }}.zip" diff --git a/vars/default_vars.yml b/vars/default_vars.yml index 4bc5cb105..21e3d5652 100644 --- a/vars/default_vars.yml +++ b/vars/default_vars.yml @@ -249,6 +249,10 @@ calibre_web_path: calibre #NEEDS WORK: https://github.com/iiab/iiab/issues/529 dokuwiki_install: False dokuwiki_enabled: False +# MediaWiki +mediawiki_install: False +mediawiki_enabled: False + # Elgg elgg_install: True elgg_enabled: False diff --git a/vars/medium.localvars b/vars/medium.localvars index 54d10c40c..81ebe2f91 100644 --- a/vars/medium.localvars +++ b/vars/medium.localvars @@ -128,6 +128,9 @@ calibre_web_path: calibre #NEEDS WORK: https://github.com/iiab/iiab/issues/529 dokuwiki_install: False dokuwiki_enabled: False +mediawiki_install: False +mediawiki_enabled: False + elgg_install: True elgg_enabled: True