diff --git a/roles/mediawiki/defaults/main.yml b/roles/mediawiki/defaults/main.yml index f650561f4..2f49d7548 100644 --- a/roles/mediawiki/defaults/main.yml +++ b/roles/mediawiki/defaults/main.yml @@ -29,4 +29,4 @@ mediawiki_abs_path: "{{ mediawiki_install_path }}/mediawiki-{{ mediawiki_version mediawiki_url: /wiki mediawiki_url2: /mediawiki mediawiki_full_url: "http://{{ iiab_hostname }}.{{ iiab_domain }}{{ mediawiki_url }}" # http://box.lan/wiki -mediawiki_symlink: w # can also be mwlink. NO slashes as they are suppplied as needed in the code +mediawiki_symlink: w # Can also be mwlink. NO slashes as they are supplied as needed in the code diff --git a/roles/mediawiki/tasks/apache.yml b/roles/mediawiki/tasks/apache.yml new file mode 100644 index 000000000..d7669f548 --- /dev/null +++ b/roles/mediawiki/tasks/apache.yml @@ -0,0 +1,12 @@ +- name: Enable http://box{{ mediawiki_url }} via Apache # http://box/wiki + command: a2ensite mediawiki.conf + when: mediawiki_enabled | bool + +- name: Disable http://box{{ mediawiki_url }} via Apache # http://box/wiki + command: a2dissite mediawiki.conf + when: not mediawiki_enabled + +- name: Restart '{{ apache_service }}' systemd service + systemd: + name: "{{ apache_service }}" # apache2 or httpd, as set in /opt/iiab/iiab/vars/.yml + state: restarted diff --git a/roles/mediawiki/tasks/enable.yml b/roles/mediawiki/tasks/enable.yml deleted file mode 100644 index df0ed43cd..000000000 --- a/roles/mediawiki/tasks/enable.yml +++ /dev/null @@ -1,62 +0,0 @@ -# Apache - -- name: Enable http://box{{ mediawiki_url }} via Apache # i.e. http://box/wiki - command: a2ensite mediawiki.conf - when: apache_install and mediawiki_enabled - -- name: Disable http://box{{ mediawiki_url }} via Apache - command: a2dissite mediawiki.conf - when: apache_install and not mediawiki_enabled - -- name: Restart Apache systemd service ({{ apache_service }}) - systemd: - name: "{{ apache_service }}" # apache2 or httpd, as set in /opt/iiab/iiab/vars/.yml - state: restarted - when: apache_enabled | bool - -# NGINX - -- name: Enable http://box{{ mediawiki_url }} & http://box{{ mediawiki_url2 }} via NGINX, by installing {{ nginx_conf_dir }}/mediawiki-nginx.conf from template - template: - src: mediawiki-nginx.conf.j2 - dest: "{{ nginx_conf_dir }}/mediawiki-nginx.conf" - when: nginx_install and mediawiki_enabled - -- name: Disable http://box{{ mediawiki_url }} & http://box{{ mediawiki_url2 }} via NGINX, by removing {{ nginx_conf_dir }}/mediawiki-nginx.conf - file: - path: "{{ nginx_conf_dir }}/mediawiki-nginx.conf" - state: absent - when: nginx_install and not mediawiki_enabled - -- name: Restart 'nginx' systemd service - systemd: - name: nginx - state: restarted - when: nginx_enabled | bool - - -- name: Add 'mediawiki' variable values to {{ iiab_ini_file }} - ini_file: - path: "{{ iiab_ini_file }}" - section: mediawiki - option: "{{ item.option }}" - value: "{{ item.value | string }}" - with_items: - - option: name - value: MediaWiki - - option: description - value: '"MediaWiki is a blog and web site management application, from the people who create Wikipedia."' - - 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/install.yml b/roles/mediawiki/tasks/install.yml index 3b8151a1b..a260c0e04 100644 --- a/roles/mediawiki/tasks/install.yml +++ b/roles/mediawiki/tasks/install.yml @@ -8,43 +8,43 @@ - name: Download {{ mediawiki_download_base_url }}/{{ mediawiki_src }} to {{ downloads_dir }} get_url: url: "{{ mediawiki_download_base_url }}/{{ mediawiki_src }}" - dest: "{{ downloads_dir }}" + dest: "{{ downloads_dir }}" # /opt/iiab/downloads timeout: "{{ download_timeout }}" #force: yes #backup: yes when: internet_available | bool -- name: Unpack it to permanent location {{ mediawiki_abs_path }} +- name: Unarchive (unpack) it to permanent location {{ mediawiki_abs_path }} ({{ apache_user }}:{{ apache_user }}, u+rw,g+r,o+r) unarchive: src: "{{ downloads_dir }}/{{ mediawiki_src }}" - dest: "{{ mediawiki_install_path }}" + dest: "{{ mediawiki_install_path }}" # /library owner: "{{ apache_user }}" group: "{{ apache_user }}" mode: u+rw,g+r,o+r # '0755' forced executable bits on files keep_newer: yes -- name: Create symlink {{ doc_root }}/{{ mediawiki_symlink }} -> {{ mediawiki_abs_path }} +- name: Symlink {{ doc_root }}/{{ mediawiki_symlink }} -> {{ mediawiki_abs_path }} file: - src: "{{ mediawiki_abs_path }}" - path: "{{ doc_root }}/{{ mediawiki_symlink }}" + src: "{{ mediawiki_abs_path }}" # /library/mediawiki-1.XY.Z + path: "{{ doc_root }}/{{ mediawiki_symlink }}" # /library/www/html/w state: link - name: Start MySQL systemd service ({{ mysql_service }}) so we can create db systemd: - state: started name: "{{ mysql_service }}" + state: started - name: Create MySQL database {{ mediawiki_db_name }} mysql_db: - name: "{{ mediawiki_db_name }}" - state: present + name: "{{ mediawiki_db_name }}" # iiab_mediawiki + #state: present - name: Create MySQL database user {{ mediawiki_db_user }} with password, and permissions to above db mysql_user: - name: "{{ mediawiki_db_user }}" + name: "{{ mediawiki_db_user }}" # iiab_mediawiki_user password: "{{ mediawiki_db_user_password }}" priv: "{{ mediawiki_db_name }}.*:ALL,GRANT" - state: present + #state: present - name: Configure MediaWiki, if {{ mediawiki_abs_path }}/LocalSettings.php doesn't exist shell: > @@ -61,29 +61,29 @@ "{{ mediawiki_site_name }}" "{{ mediawiki_admin_user }}" args: - chdir: "{{ mediawiki_abs_path }}" + chdir: "{{ mediawiki_abs_path }}" # /library/mediawiki-1.XY.Z creates: "{{ mediawiki_abs_path }}/LocalSettings.php" - name: Configure wgArticlePath variable in {{ mediawiki_abs_path }}/LocalSettings.php lineinfile: - dest: "{{ mediawiki_abs_path }}/LocalSettings.php" + path: "{{ mediawiki_abs_path }}/LocalSettings.php" # /library/mediawiki-1.XY.Z line: '$wgArticlePath = "/wiki/$1";' - name: Configure $wgUsePathInfo variable in {{ mediawiki_abs_path }}/LocalSettings.php lineinfile: - dest: "{{ mediawiki_abs_path }}/LocalSettings.php" + path: "{{ mediawiki_abs_path }}/LocalSettings.php" # /library/mediawiki-1.XY.Z line: '$wgUsePathInfo = true;' - name: Configure $wgServer variable in {{ mediawiki_abs_path }}/LocalSettings.php lineinfile: - dest: "{{ mediawiki_abs_path }}/LocalSettings.php" + path: "{{ mediawiki_abs_path }}/LocalSettings.php" # /library/mediawiki-1.XY.Z regexp: '^\$wgServer =' line: '$wgServer = "//" . $_SERVER["HTTP_HOST"];' - name: Install /etc/{{ apache_conf_dir }}/mediawiki.conf from template, for http://box{{ mediawiki_url }} via Apache template: src: mediawiki.conf.j2 - dest: "/etc/{{ apache_conf_dir }}/mediawiki.conf" + dest: "/etc/{{ apache_conf_dir }}/mediawiki.conf" # apache2/sites-available on debuntu # RECORD MediaWiki AS INSTALLED @@ -94,6 +94,6 @@ - name: "Add 'mediawiki_installed: True' to {{ iiab_state_file }}" lineinfile: - dest: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml + path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml regexp: '^mediawiki_installed' line: 'mediawiki_installed: True' diff --git a/roles/mediawiki/tasks/main.yml b/roles/mediawiki/tasks/main.yml index df4bbcc74..10d15f273 100644 --- a/roles/mediawiki/tasks/main.yml +++ b/roles/mediawiki/tasks/main.yml @@ -1,7 +1,60 @@ -- name: Install MediaWiki {{ mediawiki_version }} - include_tasks: install.yml - when: mediawiki_install and not mediawiki_installed is defined +# "How do i fail a task in Ansible if the variable contains a boolean value? +# I want to perform input validation for Ansible playbooks" +# https://stackoverflow.com/questions/46664127/how-do-i-fail-a-task-in-ansible-if-the-variable-contains-a-boolean-value-i-want/46667499#46667499 -- name: Enable MediaWiki - include_tasks: enable.yml - when: mediawiki_install or mediawiki_installed is defined +# We assume 0-init/tasks/validate_vars.yml has DEFINITELY been run, so no need +# to re-check whether vars are defined here. As Ansible vars cannot be unset: +# https://serverfault.com/questions/856729/how-to-destroy-delete-unset-a-variable-value-in-ansible + +- name: Assert that "mediawiki_install is sameas true" (boolean not string etc) + assert: + that: mediawiki_install is sameas true + fail_msg: "PLEASE SET 'mediawiki_install: True' e.g. IN: /etc/iiab/local_vars.yml" + quiet: yes + +- name: Assert that "mediawiki_enabled | type_debug == 'bool'" (boolean not string etc) + assert: + that: mediawiki_enabled | type_debug == 'bool' + fail_msg: "PLEASE GIVE VARIABLE 'mediawiki_enabled' A PROPER (UNQUOTED) ANSIBLE BOOLEAN VALUE e.g. IN: /etc/iiab/local_vars.yml" + quiet: yes + + +- name: Install MediaWiki {{ mediawiki_version }} if 'mediawiki_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml + include_tasks: install.yml + when: mediawiki_installed is undefined + + +- name: Enable/Disable/Restart Apache if primary + include_tasks: apache.yml + when: not nginx_enabled + +- name: Enable/Disable/Restart NGINX if primary + include_tasks: nginx.yml + when: nginx_enabled | bool + + +- name: Add 'mediawiki' variable values to {{ iiab_ini_file }} + ini_file: + path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini + section: mediawiki + option: "{{ item.option }}" + value: "{{ item.value | string }}" + with_items: + - option: name + value: MediaWiki + - option: description + value: '"MediaWiki is a blog and web site management application, from the people who create Wikipedia."' + - 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/nginx.yml b/roles/mediawiki/tasks/nginx.yml new file mode 100644 index 000000000..5c4caee08 --- /dev/null +++ b/roles/mediawiki/tasks/nginx.yml @@ -0,0 +1,16 @@ +- name: Enable http://box{{ mediawiki_url }} & http://box{{ mediawiki_url2 }} via NGINX, by installing {{ nginx_conf_dir }}/mediawiki-nginx.conf from template # http://box/wiki & http://box/mediawiki + template: + src: mediawiki-nginx.conf.j2 + dest: "{{ nginx_conf_dir }}/mediawiki-nginx.conf" # /etc/nginx.conf.d + when: mediawiki_enabled | bool + +- name: Disable http://box{{ mediawiki_url }} & http://box{{ mediawiki_url2 }} via NGINX, by removing {{ nginx_conf_dir }}/mediawiki-nginx.conf # http://box/wiki & http://box/mediawiki + file: + path: "{{ nginx_conf_dir }}/mediawiki-nginx.conf" # /etc/nginx.conf.d + state: absent + when: not mediawiki_enabled + +- name: Restart 'nginx' systemd service + systemd: + name: nginx + state: restarted