MWStake MediaWiki Manager: Difference between revisions

From MWStake
Jump to navigation Jump to search
Line 53: Line 53:
Slide 2/10: '''How and Why?'''
Slide 2/10: '''How and Why?'''


Cut system into as few as possible but into as many as necessary interfacing components in order to fulfill all intended use cases in accordance with corresponding users' capabilities and needs.
* Dissect system
* into as few as possible
* but into as many as necessary
* interfacing components
* in order to fulfill all intended use cases
* in accordance with corresponding users' capabilities and needs.


=== Abstraction Layers ===
=== Abstraction Layers ===

Revision as of 09:29, 13 April 2021

What is this about?

  1. Install MediaWiki.
  
  2. Manage (settings), upgrades, extensions, snapshots and content through an independent CLI/API/UI.
  
  3. Put MediaWiki in SafeMode in case of problems.

MWStake MWM Service Portfolio

Mediawiki-manager-Service-Protfolio.png

Development Broadcasting

There are videos about MWStake MWM at dataspects' YouTube channel.

Project Reasoning and Potential Goals

Slide 1/10: Why and What?

  1. Your kitchen / hotel chain kitchens
    • appliances vs. parts
    • integration levels and interfaces
  2. MWM:
    1. git clone
    2. install.sh
    3. manage:
      • Install/configure/upgrade system(s)
      • Install/enable/disable/upgrade/configure extensions
        • MediaWiki Stakeholders Group Certified Extensions Service
      • Backup/restore/clone/compare/consolidate system(s) (snapshots)
      • Troubleshoot/safe mode
      • Inject/extract/facet/edit/consolidate/import/export/remove apps/structures/ontologies
        • MediaWiki Stakeholders Group Certified Apps Service
      • Scripting/automate/schedule tasks
      • Package/move/archive/migrate system(s)

MWM Implementation Aspects

Slide 2/10: How and Why?

  • Dissect system
  • into as few as possible
  • but into as many as necessary
  • interfacing components
  • in order to fulfill all intended use cases
  • in accordance with corresponding users' capabilities and needs.

Abstraction Layers

CLI <-- API <-- UI
  1. UI is GUI for API
  2. API wraps CLI
  3. CLI means bash scripts covering all use cases

Containers

Podman-managed MWM Kubernetes deploy manifest:

  1. container "mediawiki" + user volumes and config envs
  2. container "mediawiki-safemode" + config envs
  3. container "mariadb" + config envs

Install

envsubst < mediawiki-manager.tpl > mediawiki-manager.yml       # <-- Customize system
podman play kube mediawiki-manager.yml                         # <-- Schedule system (runs normal mediawiki container)
podman container stop mwm-deployment-pod-0-mediawiki-safemode  # <-- Stop safe mode mediawiki container

Normal mode

# From scratch
podman pod start mwm-deployment-pod-0                          # <-- Run pod
podman container stop mwm-deployment-pod-0-mediawiki-safemode  # <-- Stop safe mode mediawiki container

# Returning from safe mode
podman container stop mwm-deployment-pod-0-mediawiki-safemode  # <-- Stop safe mode mediawiki container
podman container stop mwm-deployment-pod-0-mediawiki           # <-- Start normal mediawiki container

Safe mode

podman container stop mwm-deployment-pod-0-mediawiki           # <-- Stop normal mediawiki container
podman container start mwm-deployment-pod-0-mediawiki-safemode # <-- Start safe mode mediawiki container
  1. /images still volumed in
  2. still uses production database
  3. mostly unchanged envs
  4. "volumed out" and falling back to reliable container-internal versions:
    • LocalSettings.php (containing $wgReadOnly = true; $wgSiteNotice = "================ MWM Safe Mode ================";)
    • extensions
    • skins
    • vendor
    • composer.json

Target User Groups

Slide 2/10: Who can use the concepts in MWM how? Here I try to segregate target users into groups that share capabilities and needs.

User Group Point/Select/Type/Click CLI/SSH Scripting Edit configuration junior Edit configuration senior
Examples "Web Interface" Automate/schedule tasks
  • Edit LocalSettings.php
  • Run composer

PLUS

  • Interpret logs
  • Report bugs/feature request
  • Branch code, develop and PR
UGUI "WebAdmin" Yes - "Macro" style only from within UI
("Excel Record Macro Style")
- -
UGAdmin "SysAdmin" Yes Yes Run/arrange .sh scripts Yes -
UGCoder "Developer" Yes Yes Run/arrange/compose/create/edit .sh scripts including API calls Yes Yes

Use Cases

Install/configure/upgrade system(s)

Where How Why
locally on a single computer as a containerized app for personal/private/development use
in an intranet
  • as a containerized app on a root server
  • as a containerized app on a PAAS
for corporate internal use

on the internet/in the cloud

  • on a shared host
  • as a containerized app on a root server
  • as a containerized app on a PAAS
for corporate internal/external/public use

Install/enable/disable/upgrade/configure extensions

CLI (Bash)

The command:

./cli/manage-extensions/show-extension-catalogue.sh

parses https://github.com/dataspects/mediawiki-manager/blob/main/catalogues/extensions.json to offer the selection of "certified" extensions upon which the commands:

  • ./cli/manage-extensions/enable-extension.sh <EXTNAME> and
  • ./cli/manage-extensions/disable-extension.sh <EXTNAME>

can be executed.

MWM manage extensions on cli bash abstraction level.png

Backup/restore/clone/compare/consolidate system(s) (snapshots)

Troubleshoot/safe mode

Idea: if someone corrupts extensions/ and/or LocalSettings.php, then ./start-SAFE-MODE.sh restarts the wiki in safe mode, by falling back to container-internal versions of extensions/ and LocalSettings.php.

MWMSafeModeAlert.png

MWM Normal Mode MWM Safe Mode

Mwm-normal-mode.png

Mwm-safe-mode.png

Inject/extract/facet/edit/consolidate/import/export/remove apps/structures/ontologies

Scripting

Package system(s)

  1. mediawiki-apps.json

MediaWiki Stakeholders Group Certified Extensions Service

Abstraction Layers

Mediawiki-manager-Service-Architecture.png

ALcontainerization: Podman

  1. The mediawiki container image contains a full MediaWiki installation.
  2. initialize-persistent-mediawiki-service-volumes.sh will copy the 5 persistence-relevant files/directories out to the host so they can be volumed in when starting the mediawiki container.
  3. This shall allow for start-SAFE-MODE.sh.

ALcli: shell scripts using MWAPI and CRUDing files in service volumes

ALapi: MWM API (Go) wrapping and parametrizing ALcli shell scripts and using MWAPI

https://github.com/dataspects/mwmapi

Unit Testing

ALui: MWM UI (React/Material UI) using and parametrizing ALapi endpoints

https://github.com/dataspects/mwmui

Integration Testing