https://github.com/computecanada/mc-hub
Web interface to launch Magic Castles without knowing anything about Terraform
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.2%) to scientific vocabulary
Repository
Web interface to launch Magic Castles without knowing anything about Terraform
Basic Info
- Host: GitHub
- Owner: ComputeCanada
- License: bsd-3-clause
- Language: Python
- Default Branch: main
- Size: 25.6 MB
Statistics
- Stars: 12
- Watchers: 5
- Forks: 3
- Open Issues: 22
- Releases: 31
Metadata Files
README.md
MC Hub
Web interface to launch Magic Castle clusters without knowing anything about Terraform.

Requirements
- Docker
- Bash interpreter
Basic setup
Before running the MC Hub Docker container, you need to setup a few things.
- Create a directory named
clusters_backupand give it the proper permissions.mkdir clusters_backup sudo chmod -R 777 clusters_backup
If you are using Google Cloud as a DNS provider, do the following steps.
- Create a service account that has permissions to manage the DNS settings (if you don't already have one). The account should have the DNS Administrator role.
- Create a new keypair and download it, in JSON format.
- Copy the JSON key file to the root of the repository in a file named
gcloud-key.json.cp <JSON key file location> gcloud-key.json
Configuration
You need to create a configuration file named configuration.json in the current directory.
Read the section on the JSON Configuration for more information.
Running the pre-built Docker image
- Run the latest image of MC Hub. This command binds the port 5000 from the container's Flask server to the host's port 8080. You may change port 8080 to another port. Also change
v9.1.2for the latest version of MC Hub in the following command.
If you are not using the Google Cloud DNS provider, remove the line --mount "type=bind,source=$(pwd)/gcloud-key.json,target=/home/mcu/credentials/gcloud-key.json" \.
shell script
docker run --rm -p 8080:5000 \
--mount "type=volume,source=database,target=/home/mcu/database" \
--mount "type=bind,source=$(pwd)/gcloud-key.json,target=/home/mcu/credentials/gcloud-key.json" \
--mount "type=bind,source=$(pwd)/clusters_backup,target=/home/mcu/clusters" \
--mount "type=bind,source=$(pwd)/configuration.json,target=/home/mcu/configuration.json" \
cmdntrf/mc-hb:v9.1.2
- Navigate to
http://localhost:8080and start building clusters! - Kill the container when you are done.
docker kill <CONTAINER ID>
Building the image from source
Refer to the Developer Documentation.
Cluster storage & backup
Magic Castle clusters are built in the directory /home/mcu/clusters/<cluster name>.<domain> inside the
docker container.
This folder contains the logs from terraform commands, the plans and the state file.
By running the container according to the above instructions, a bind mount was created. This
makes the /home/mcu/clusters/<cluster name>.<domain> directory accessible to the host machine in
$(pwd)/clusters_backup.
Also, a volume named database was created and will persist the database even if the container fails or is destroyed. However, the database volume can only be accessed from within a running container, not by the host machine.
In the end, if one MC Hub container is destroyed or fails, a new container will recover all the previously created clusters in the directory.
Adding SAML Authentication and HTTPS to MC Hub
Option 1. Deploying with an Ansible playbook (recommended)
Use Ansible MC Hub.
Option 2. Configuring the server manually
Check out the wiki page.
Owner
- Name: Compute Canada / Calcul Canada
- Login: ComputeCanada
- Kind: organization
- Location: Canada
- Website: computecanada.ca
- Repositories: 171
- Profile: https://github.com/ComputeCanada
GitHub Events
Total
- Push event: 4
- Pull request event: 1
- Fork event: 1
- Create event: 2
Last Year
- Push event: 4
- Pull request event: 1
- Fork event: 1
- Create event: 2
Dependencies
- 1120 dependencies
- @babel/eslint-parser ^7.17.0 development
- @rushstack/eslint-patch ^1.1.0 development
- @vue/cli-plugin-babel ~5.0.1 development
- @vue/cli-plugin-eslint ~5.0.1 development
- @vue/cli-plugin-router ~5.0.1 development
- @vue/cli-plugin-unit-jest ~5.0.1 development
- @vue/eslint-config-prettier ^7.0.0 development
- @vue/test-utils ^1.1.0 development
- @vue/vue2-jest ^27.0.0-alpha.4 development
- eslint ^8.10.0 development
- eslint-plugin-vue ^8.5.0 development
- moxios ^0.4.0 development
- prettier ^2.5.1 development
- sass ^1.26.10 development
- sass-loader ^8.0.0 development
- vue-cli-plugin-vuetify ^2.4.7 development
- vue-eslint-parser ^8.3.0 development
- vue-jest ^3.0.6 development
- vue-template-compiler ^2.6.12 development
- vuetify-loader ^1.6.0 development
- @monaco-editor/loader ^1.3.2
- @vue/cli-service ~5.0.1
- axios ^0.21.2
- core-js ^3.6.4
- js-yaml ^4.0.0
- lodash ^4.17.21
- monaco-editor ^0.33.0
- monaco-editor-webpack-plugin ^7.0.1
- vue ^2.6.14
- vue-router ^3.5.3
- vuetify ^2.6.4
- atomicwrites 1.4.0 develop
- attrs 21.4.0 develop
- iniconfig 1.1.1 develop
- pluggy 1.0.0 develop
- py 1.11.0 develop
- pytest 7.1.2 develop
- pytest-flask 1.2.0 develop
- pytest-mock 3.7.0 develop
- tomli 2.0.1 develop
- appdirs 1.4.4
- certifi 2022.5.18.1
- cffi 1.15.0
- charset-normalizer 2.0.12
- click 8.1.3
- colorama 0.4.4
- cryptography 37.0.2
- decorator 5.1.1
- dogpile.cache 1.1.5
- flask 2.1.2
- flask-cors 3.0.10
- flask-sqlalchemy 2.5.1
- gevent 21.12.0
- greenlet 1.1.2
- gunicorn 20.1.0
- humanize 4.1.0
- idna 3.3
- importlib-metadata 4.11.4
- iso8601 1.0.2
- itsdangerous 2.1.2
- jinja2 3.1.2
- jmespath 1.0.0
- jsonpatch 1.32
- jsonpath-ng 1.5.3
- jsonpointer 2.3
- keystoneauth1 4.6.0
- markupsafe 2.1.1
- marshmallow 3.15.0
- munch 2.5.0
- netifaces 0.11.0
- openstacksdk 0.61.0
- os-service-types 1.7.0
- packaging 21.3
- pbr 5.9.0
- ply 3.11
- pycparser 2.21
- pyparsing 3.0.9
- pyyaml 6.0
- requests 2.27.1
- requestsexceptions 1.4.0
- six 1.16.0
- sqlalchemy 1.4.36
- stevedore 3.5.0
- urllib3 1.26.9
- werkzeug 2.1.2
- zipp 3.8.0
- zope.event 4.5.0
- zope.interface 5.4.0
- pytest ^7.0.1 develop
- pytest-flask ^1.2.0 develop
- pytest-mock ^3.7.0 develop
- Flask ^2.0.3
- Flask-Cors ^3.0.10
- Flask-SQLAlchemy ^2.5.1
- SQLAlchemy ^1.4.36
- gunicorn ^20.1.0
- humanize ^4.0.0
- jsonpath-ng ^1.5.3
- marshmallow ^3.14.1
- openstacksdk ^0.61.0
- python ^3.9
- base-server latest build
- node 18-bullseye build
- python 3.10-slim-bullseye build
- actions/checkout v3 composite