MWStake MediaWiki Manager: Difference between revisions

From MWStake
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
  Facilitate managing all aspects and use cases regarding the operation of MediaWiki instance(s)
  Facilitate managing all aspects and use cases regarding the operation of MediaWiki instance(s)


* Across set up modes and operating systems
# Across set up modes and operating systems
* Targeting all user groups accordingly
# Targeting all user groups accordingly
* Conveying best practices
# Conveying best practices
* Component monitoring and certification services
# Component monitoring and certification services
 
# Not integrated, but besides MediaWiki instance(s)
# Not integrated, but besides MediaWiki instance(s)
# Install/configure/upgrade system(s)
# Install/configure/upgrade system(s)
Line 17: Line 16:
# Script/automate/schedule tasks
# Script/automate/schedule tasks
# Package/move/archive/migrate system(s)
# Package/move/archive/migrate system(s)
 
# ORTHOGONAL MODULARITY
* ORTHOGONAL MODULARITY


__TOC__
__TOC__

Revision as of 04:20, 20 April 2021

Project Reasoning and Potential Goals

Facilitate managing all aspects and use cases regarding the operation of MediaWiki instance(s)
  1. Across set up modes and operating systems
  2. Targeting all user groups accordingly
  3. Conveying best practices
  4. Component monitoring and certification services
  5. Not integrated, but besides MediaWiki instance(s)
  6. Install/configure/upgrade system(s)
  7. Install/enable/disable/upgrade/configure extensions
    • MediaWiki Stakeholders Group Certified Extensions Service
  8. Backup/restore/clone/compare/consolidate system(s) (snapshots)
  9. Inject/extract/facet/edit/consolidate/import/export/remove apps/structures/ontologies
    • MediaWiki Stakeholders Group Certified Apps Service
  10. Script/automate/schedule tasks
  11. Package/move/archive/migrate system(s)
  12. ORTHOGONAL MODULARITY

MWM Implementation Aspects

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

Podman-managed MWM Kubernetes deploy manifest ("Containers")

  1. Pod "mwm"
  2. Container "mediawiki" + user volumes and config envs
  3. Container "mariadb" + config envs

Config envs

Pending: podman secret

# my-new-system.env
export WG_DB_PASSWORD=8n65f%6n5
⇒ envsubst ⇒
# mediawiki-manager.yml
...
containers:
  - image: docker.io/dataspects/mediawiki:1.35.0-2104121740
    name: mediawiki
    env:
      - name: WG_DB_PASSWORD
        value: 8n65f%6n5
      - ...
...
# Localsettings.php
$wgDBpassword = getenv("WG_DB_PASSWORD");


Target User Groups

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/run/operate 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

CLI: Bash scripts

Mediawiki-manager-InteractionLogics.png

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

API (prototype)

Mediawiki-manager-ExtensionsStore.png

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

Troubleshoot/safe mode

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

CLI (Bash)

https://github.com/dataspects/mediawiki-manager/tree/main/cli/manage-content

Scripting

CLI (Bash)

https://github.com/dataspects/mediawiki-manager/blob/main/cli/manage-extensions/tests.sh

Package system(s)

  1. mediawiki-apps.json

MediaWiki Stakeholders Group Certified Extensions Service

MWStake MWM Service Portfolio

Mediawiki-manager-Service-Protfolio.png

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

MWM UI

Integration Testing

Development Broadcasting

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