Open main menu

Changes

no edit summary
{{Deprecated}}
 
== Source ==
The official repository for the source code can be found at https://github.com/freephile/qb
=== Collaborators =Docs ==Early collaborators include# Lex Sulzer https://github.com/lexsulzer# Steve Pieper https://github.com/pieper# Jean Christophe Fillion-Robert https://github.com/jcfr# Yaron Koren https://github.com/yaronkoren == ToDo ===== QB ===# {{AI}} Discuss options, strategy and general issues with Lex## Make a Press Release about eQuality Technology partnering with the Linux Competency Center to lead development of the Quality Box# {{AI}} Make sure the mail system is working (add extra configuration for MediaWiki The <refcode>https://www.mediawiki.org/wiki/Manual:$wgSMTPdocs</refcode> to tie in with clients mail system?) or set this up as a hosting feature with SendGrid/et al. <ref>[[Private:Email_Marketing]]</ref> as folder contains the sources for the underlying service shared by all domains on a plan. ## {{AI}} Test documentation, and determine best email solution. We '''do''' have Pear mail installed . What about Swiftmailer?# {{AI}} Create Service website similar to https://fantasktic.com# {{AI}} Get rid of '''EMPTY_WIKI_NAME''' in group_vars/all/config... what is it for? I assume it's some kind of chicken and egg thing, but I don't think we need it.# {{AI}} Add support for separating wiki host from db host. See published through github pages to https://gistfreephile.github.com/halberom/0663ef9933360fcf7141 for gist on how to use 'gather_facts' on one group of hosts (e.g. db servers) to fill out a template for another set of hosts (web servers).# {{AI}} replace usage of '''MYSQL_WIKI_PASSWORD''' with actual random password; or user supplied password (found in .io/rolesqb/install_mediawiki and ./roles/create_new_wiki_on_db_host)# {{AI}} Activate the 'install lua sandbox' task
=== SPL Project ===
## [https://www.mediawiki.org/wiki/Category:MediaWiki_configuration_settings_removed_in_version_1.27.0 Review deprecated settings] for occurences in LocalSettings.php
=== Back Burner ===
# {{In Progress}} Create documentation of features (deployability, software, extensions like [[mw:Extension:Semantic_Glossary/Example Semantic Glossary]]
## {{In Progress}} Create PowerPoint / slides
# {{Done}} Add vagrant deployment option (See [[Private:QualityBox/Vagrant]])
# Add Search and [https://www.mediawiki.org/wiki/Extension:PdfHandler PdfHandler] extensions
# Add DNSMasq (or equivalent) http://www.nickhammond.com/vagrant-and-ansible-for-local-development/ https://help.ubuntu.com/community/Dnsmasq to make resolver easier for .dev or .local domains
# Add Docker option https://docs.ansible.com/ansible/intro_inventory.html#non-ssh-connection-types although the images provided by docker would need heavy customization, so the case for doing this is not yet clear. Perhaps a service option where 'sandbox' was the service tier would make sense however if it didn't contain the differentiating factors that make QualityBox attractive, then how would the sandbox sell the service?
# create the distinction between creating a db host and web host (e.g. remove 'install apache' from the qualitybox role)
 
== Subpages ==
{{#subpages:}}
 
== Goal ==
My goal is to create an automated and repeatable way to specify and deploy a "base" box which can be deployed on a number of cloud providers: namely VirtualBox for local development; Digital Ocean for ease of use and cost; AWS for larger enterprise customers who prefer to use Amazon. Future providers might include VMware.
 
The base box should have
# Ubuntu Linux 16.04 (gui/no-gui)
# Apache
# MySQL (or MariaDB)
# PHP (and extensions)
# memcached
# jenkins?
# munin?
# monit
# etckeeper?
# git
# ssh
# ansible
 
Depending on the provider, there may be extra configurations or requirements
# Guest additions if provider is VirtualBox (not needed for AWS)
 
== Provision ==
The process should look like (initially I was focused on Vagrant first, but now I'm deploying to DO first, and we'll add Vagrant support later. See the certbot project for what looks like an advanced usage of Vagrant)
<source lang="bash">
cd ~/vagrant
vagrant box add quality-box /~/Downloads/quality-Wiki.box
vagrant init quality-box
vagrant up
</source>
 
The QualityBox is based on a prebuilt image (nb: not true - unless we adopt Lex's approach. At the moment, we install a base Ubuntu, and modify that.) that we've made rather than recreating the box step by step for each installation. See [https://www.vagrantup.com/docs/boxes/base.html Creating a base box]
 
== Pricing / Costs ==
=== Vendor Costs ===
If using Docker, pricing depends on whether it's cloud or premise, and ranges from $15/mo for a single node to $300/mo per node for 24x7 support. Keep in mind that several "nodes" may be needed to complete a service which is scalable, modular and spans production and pre-production. Developer nodes are free.
 
=== Comparisons ===
Referata.com does not support HTTPS<ref>http://referata.com/wiki/Referata:FAQ#Does_Referata_support_secure_HTTP_.28.22HTTPS.22.29.3F</ref>. And, it has a limited set of extensions <ref>http://referata.com/wiki/Referata:About</ref>. There are 4 plans <ref>http://referata.com/wiki/Referata:Features</ref> that range in price from (free), $20, $50 and $80/mo. The free tier is especially not remarkable. The only plans that offer a domain name are $50 and $80 with no mention of the RAM and CPU dedicated (hint: it is slow). Speaking with Yaron, the QualityBox should be priced at $300/mo
 
 
== Inventory ==
We'll (probably?) have both static hosts (our own that we want to refer to explicitly) and dynamic hosts (clients' servers which we can refer to by naming convention or id) to operate on. This is sometimes referred to as a 'hybrid cloud'. With Ansible, you can specify an inventory directory where multiple sources are found. Executable files are treated as dynamic sources. <ref>[https://docs.ansible.com/ansible/intro_dynamic_inventory.html Using Inventory Directories and Multiple Inventory Sources]</ref>
 
=== Python Script ===
The '''digital_ocean.py''' script that comes with Ansible is a useful tool to interact with the DigitalOcean API to retrieve data about your droplets.
 
You can list your DigitalOcean droplets with the following:
 
<code> ~/bin/ansible/contrib/inventory/digital_ocean.py --list --api-token INSERT_TOKEN_HERE</code>
 
Use <code>~/bin/ansible/contrib/inventory/digital_ocean.py --help</code> to see the command options.
 
Note that you can also export your DO_API_TOKEN, or put it in a vars file.
There is even an <code>--env -e</code> option to display the environment/DO_API_TOKEN if you've exported it.
 
Because we can use the script to tell us about the inventory in an ansible compatible way, the best bet for creating and managing droplets would be
# have one playbook create a bunch of droplets
# run '''digital_ocean.py''' to generate a hosts file
# run another playbook in tandem with that hosts file to turn all those droplets into QualityBoxes
 
=== Dashboard ===
https://cloud.digitalocean.com/droplets
 
== Log ==
 
I've used just Ansible (no Vagrant) to provision and destroy boxes at Digital Ocean.
 
I downloaded and installed the latest (v1.8.4) of Vagrant since my earlier version didn't recognize the latest version of VirtualBox
 
The installation of vagrant is in <code>C:\Users\Greg\projects\spl</code>
 
The first time you setup the box, you need to run <code>vagrant halt</code> and <code>vagrant up</code> to re-read the customizations... but actually I'm not sure of that. I don't think there are any customizations in the scripts provided by Lex. The MediaWiki-Vagrant setup that I did for MG was customized.
 
Over a year ago, I forked<ref>https://github.com/freephile/ansible-playbook</ref> the Orain/ansible-playbook <ref>https://github.com/Orain/ansible-playbook</ref> to begin an ansible based MediaWiki wiki farm aka QualityBox. Now I'm 453 commits behind them. But their playbook is heavily customized for their specific wikifarm. It is not a generic setup. I've done nothing to make my fork more generic. Also, I have not introduced the specific [[features]] that I think would add value to a generic setup to create an enterprise "distribution" of SMW.
 
 
== Recipe Notes ==
The [https://docs.ansible.com/ansible/apache2_module_module.html Apache2 module] will enable/disable Apache modules
 
The [https://docs.ansible.com/ansible/digital_ocean_domain_module.html Domain Module] will create the DNS records for you at DO
 
How do I create certificates?? There is a Letsencrypt module in the "[https://docs.ansible.com/ansible/list_of_web_infrastructure_modules.html Web Infrastructure Modules]" that can be used. Just need to think creatively how to use it? (chicken/egg problem)
<blockquote>
# this won't work because you can't get a cert for a domain that isn't yours
greg@eqt:~/certificates$ ~/bin/letsencrypt/letsencrypt-auto --domain wiki.slicer.org --apache certonly --dry-run
</blockquote>
 
Do we want to enable an interwiki table to facilitate transclusion between wikis?
 
Need to update group_vars/all/default_extensions (or add qb_extensions)
<source lang="bash">grep -Po '(?<=name: ")[^"]*' ./mediawiki-tools-ansible-wikifarm/group_vars/all/default_extensions |sort</source>
# Arrays
# Cargo
# Cite
# CodeEditor
# CustomNavBlocks
# DataTransfer
# DynamicPageList
# ExternalData
# HeaderTabs
# HierarchyBuilder
# HitCounters
# ImageMap
# InputBox
# JSBreadCrumbs
# LdapAuthentication
# LDAPAuthorization
# Lingo
# MagicNoCache
# Maps
# OpenIDConnect
# ParserFunctions
# PipeEscape
# Piwik
# PluggableAuth
# ReplaceText
# SafeDelete
# Scribunto
# SemanticDependency
# Semantic Extra Special Properties
# SemanticForms
# SemanticGlossary
# Semantic Maps
# Semantic MediaWiki
# SemanticRating
# Semantic Result Formats
# SemanticTitle
# SimpleMathJax
# SimpleSAMLphp
# SimpleTooltip
# SyntaxHighlight_GeSHi
# TitleIcon
# UrlGetParameters
# UserFunctions
# Variables
# VIKI
# VikiSemanticTitle
# VikiTitleIcon
# WhosOnline
# Widgets
# WikiEditor
 
For each complex extension like Visual Editor, install dependencies
 
== Other Notes ==
I might need to expose a Miga data viewer of the CSV data to view the details of the [[Private:SPL]] infrastructure. http://migadv.com/usage/
{{References}}
4,558

edits