{"id":28780535,"url":"https://github.com/nlesc/lokum","last_synced_at":"2026-04-18T12:01:41.710Z","repository":{"id":106780189,"uuid":"207833767","full_name":"NLeSC/lokum","owner":"NLeSC","description":"Deploy GlusterFS, Docker, Spark and JupyterHub services on bare-metal cluster.","archived":false,"fork":false,"pushed_at":"2020-03-04T14:51:13.000Z","size":58,"stargazers_count":1,"open_issues_count":13,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-22T15:31:03.908Z","etag":null,"topics":["apache-spark","cassandra","dask","glusterfs","jupyterhub"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NLeSC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-09-11T14:34:08.000Z","updated_at":"2020-11-26T11:08:08.000Z","dependencies_parsed_at":"2023-04-23T03:09:27.512Z","dependency_job_id":null,"html_url":"https://github.com/NLeSC/lokum","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/NLeSC/lokum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLeSC%2Flokum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLeSC%2Flokum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLeSC%2Flokum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLeSC%2Flokum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NLeSC","download_url":"https://codeload.github.com/NLeSC/lokum/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLeSC%2Flokum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31967993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-spark","cassandra","dask","glusterfs","jupyterhub"],"created_at":"2025-06-17T18:07:13.526Z","updated_at":"2026-04-18T12:01:41.659Z","avatar_url":"https://github.com/NLeSC.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Badges\n\n| fair-software.nl recommendations | Badge |\n|:-|:-:|\n| [1. Code Repository](https://fair-software.nl/recommendations/repository) | [![GitHub](https://img.shields.io/github/last-commit/nlesc/lokum)](https://img.shields.io/github/last-commit/nlesc/lokum) |\n| [2. License](https://fair-software.nl/recommendations/license) | [![License](https://img.shields.io/github/license/nlesc/lokum)]((https://img.shields.io/github/license/nlesc/lokum)) |\n| [3. Community Registry](https://fair-software.nl/recommendations/registry) | [![Research Software Directory](https://img.shields.io/badge/rsd-lokum-00a3e3.svg)](https://www.research-software.nl/software/lokum) |\n| [4. Enable Citation](https://fair-software.nl/recommendations/citation) | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3482939.svg)](https://doi.org/10.5281/zenodo.3482939) |\n| [5. Code Quality Checklist](https://fair-software.nl/recommendations/checklist) | [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3754/badge)](https://bestpractices.coreinfrastructure.org/projects/3754)  |\n\n\n# Lokum\n\nThis repository includes scripts to deploy a cluster with GlusterFS, Docker, Spark and JupyterHub services on bare-metal. Currently, it only supports Opennebula platform.\n\nLokum uses [emma](https://github.com/nlesc-sherlock/emma) ansible playbooks to deploy services.\n\n## Technologies \u0026 Tools\n\n- [Terraform Client](https://www.terraform.io)\n- [Runtastic Terraform Opennebula provider](https://github.com/runtastic/terraform-provider-opennebula)\n- [Ansible](https://www.ansible.com/)\n- [emma](https://github.com/nlesc-sherlock/emma)\n\n## Usage\n\n### 1-Pull the Docker image from Docker Hub\n\n```bash\ndocker pull nlesc/lokum:latest\n```\n\n### 2-Settings\n\n#### 2.1 VM configuration (template)\n\nEdit **config/opennebula_k8s.tpl** to adjust the following VM settings:\n\n    CPU = \"2.0\"\n    VCPU = \"2\"\n    IMAGE_ID = \"YOUR_IMAGE_ID\"\n    MEMORY = \"4096\"\n    NIC = [\n      NETWORK = \"INTERNAL_NETWORK_NAME\",\n      NETWORK_UNAME = \"NETWORK_USERNAME\" ]\n\nThere are two **SIZE** variables. The first one is for the cluster itselft and the second one is for the persistent storage. The default values are about 15G and 30G.\n\n#### 2.2 Credentials\n\nEdit **config/variables.tf** and set user credentials.\n\n### 3-Deploy the cluster\n\n```bash\ndocker run --rm --net=host -it \\\n  -v $(pwd)/config:/lokum/config \\\n  -v $(pwd)/deployment:/lokum/deployment \\\n  nlesc/lokum:latest\n```\n\nConfirm the planned changes by typing **yes**\n\nConfiguration and the ssh-keys of each deployed cluster will be stored under **deployment/clusterX** folder.\n\n## Connecting to the nodes\n\n### ssh to nodes\n\nYou can connect to the nodes using generated ssh keys. For example:\n\n```bash\nssh -i ./deployment/cluster0/id_rsa_lokum_root.key root@SERVER_IP\nor\nssh -i ./deployment/cluster0/id_rsa_lokum_ubuntu.key ubuntu@SERVER_IP\n```\n\n## Starting the services manually\n\nRun the following command in main lokum directory.\n\n```bash\ndocker run --rm --net=host -it \\\n  -v $(pwd)/config:/lokum/config \\\n  -v $(pwd)/deployment:/lokum/deployment \\\n  nlesc/lokum:latest\n```\n\n```bash\nDEPLOYMENT_DIR=/lokum/deployment/cluster0; ANSIBLE_HOST_KEY_CHECKING=False; export CLUSTER_NAME=lokum; cd /lokum/emma/vars; sh ./create_vars_files.sh; cd /lokum/emma; ansible-playbook -i ${DEPLOYMENT_DIR}/hosts.yaml --extra-vars 'CLUSTER_NAME=lokum' start_platform.yml --skip-tags 'jupyterhub,cassandra' --private-key=${DEPLOYMENT_DIR}/id_rsa_lokum_ubuntu.key -v\n```\n\nTo check Apache Spark open the link below in a browser:\nhttp://NODE_1_IP:8080/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlesc%2Flokum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnlesc%2Flokum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlesc%2Flokum/lists"}