Skip to content

Commit

Permalink
✨ Add Maker Management Platform (#161)
Browse files Browse the repository at this point in the history
  • Loading branch information
anarion80 authored Jun 3, 2024
1 parent c8e853c commit 9fc2d51
Show file tree
Hide file tree
Showing 11 changed files with 194 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ If you have a spare domain name you can configure applications to be accessible
* [Lowcoder](https://github.com/lowcoder-org/lowcoder) - The Open Source Retool, Tooljet and Appsmith Alternative.
* [LubeLogger](https://github.com/hargata/lubelog) - LubeLogger is a web-based vehicle maintenance and fuel mileage tracker.
* [Mainsail](https://github.com/mainsail-crew/mainsail) - popular web interface for managing and controlling 3D printers with Klipper
* [Maker Management Platform](https://github.com/Maker-Management-Platform/docs) - management of a variety of digital assets related to 3d printing, manufacturing, laser engraving and such.
* [Mantium](https://github.com/diogovalentte/mantium) - dashboard for tracking mangas from multiple source sites, like Mangadex and ComicK.
* [Mattermost](https://mattermost.com/) - open source platform for secure collaboration across the entire software development lifecycle
* [MariaDB](https://mariadb.org/) - one of the most popular open source relational databases
Expand Down
4 changes: 4 additions & 0 deletions nas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,10 @@
tags:
- miniserve

- role: mmp
tags:
- mmp

- role: mosquitto
tags:
- mosquitto
Expand Down
26 changes: 26 additions & 0 deletions roles/mmp/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
mmp_enabled: false
mmp_available_externally: false

# directories
mmp_data_directory: "{{ docker_home }}/mmp"

# network
mmp_ui_port: "8152"
mmp_agent_port: "8153"
mmp_hostname: "mmp"
mmp_network_name: "mmp"

# specs
mmp_agent_memory: 1g
mmp_ui_memory: 1g

# docker
mmp_agent_container_name: mmp-agent
mmp_agent_image_name: "ghcr.io/maker-management-platform/agent"
mmp_agent_image_version: main
mmp_ui_container_name: mmp-ui
mmp_ui_image_name: "ghcr.io/maker-management-platform/mmp-ui"
mmp_ui_image_version: master
mmp_user_id: "1000"
mmp_group_id: "1000"
11 changes: 11 additions & 0 deletions roles/mmp/docs/mmp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Maker Management Platform

Homepage: [https://github.com/Maker-Management-Platform/docs](https://github.com/Maker-Management-Platform/docs)

Maker Management Platform, or mmp, aims to simplify and unify the management of a variety of digital assets related to 3d printing, manufacturing, laser engraving and such.

## Usage

Set `mmp_enabled: true` in your `inventories/<your_inventory>/group_vars/nas.yml` file.

Maker Management Platform web interface can be found at [http://ansible_nas_host_or_ip:8152](http://ansible_nas_host_or_ip:8152).
6 changes: 6 additions & 0 deletions roles/mmp/molecule/default/molecule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
provisioner:
inventory:
group_vars:
all:
mmp_enabled: true
10 changes: 10 additions & 0 deletions roles/mmp/molecule/default/side_effect.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
- name: Stop
hosts: all
become: true
tasks:
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
ansible.builtin.include_role:
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
vars:
mmp_enabled: false
26 changes: 26 additions & 0 deletions roles/mmp/molecule/default/verify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- name: Include vars
ansible.builtin.include_vars:
file: ../../defaults/main.yml

- name: Get mmp db container state
community.docker.docker_container:
name: "{{ mmp_db_container_name }}"
register: result_db

- name: Get mmp container state
community.docker.docker_container:
name: "{{ mmp_container_name }}"
register: result

- name: Check if mmp containers are running
ansible.builtin.assert:
that:
- result_db.container['State']['Status'] == "running"
- result_db.container['State']['Restarting'] == false
- result.container['State']['Status'] == "running"
- result.container['State']['Restarting'] == false
26 changes: 26 additions & 0 deletions roles/mmp/molecule/default/verify_stopped.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- name: Include vars
ansible.builtin.include_vars:
file: ../../defaults/main.yml

- name: Try and stop and remove mmp db
community.docker.docker_container:
name: "{{ mmp_db_container_name }}"
state: absent
register: result_db

- name: Try and stop and remove mmp
community.docker.docker_container:
name: "{{ mmp_container_name }}"
state: absent
register: result

- name: Check if mmp is stopped
ansible.builtin.assert:
that:
- not result_db.changed
- not result.changed
1 change: 1 addition & 0 deletions roles/mmp/requirements.yml
69 changes: 69 additions & 0 deletions roles/mmp/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
- name: Start Mmp
block:
- name: Create mmp Directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- "{{ mmp_data_directory }}"

- name: Create Mmp network
community.docker.docker_network:
name: "{{ mmp_network_name }}"

- name: Create Mmp Agent Docker Container
community.docker.docker_container:
name: "{{ mmp_agent_container_name }}"
image: "{{ mmp_agent_image_name }}:{{ mmp_agent_image_version }}"
pull: true
ports:
- "{{ mmp_agent_port }}:8000"
volumes:
- "{{ mmp_data_directory }}/library:/library:rw"
- "{{ mmp_data_directory }}/data:/data:rw"
networks:
- name: "{{ mmp_network_name }}"
network_mode: "{{ mmp_network_name }}"
container_default_behavior: no_defaults
labels:
traefik.enable: "false"
restart_policy: always
memory: "{{ mmp_agent_memory }}"

- name: Create Mmp UI Docker Container
community.docker.docker_container:
container_default_behavior: no_defaults
name: "{{ mmp_ui_container_name }}"
image: "{{ mmp_ui_image_name }}:{{ mmp_ui_image_version }}"
pull: true
networks:
- name: "{{ mmp_network_name }}"
network_mode: "{{ mmp_network_name }}"
ports:
- "{{ mmp_ui_port }}:8081"
env:
AGENT_ADDRESS: "{{ mmp_agent_container_name }}:8000"
restart_policy: unless-stopped
memory: "{{ mmp_ui_memory }}"
labels:
traefik.enable: "{{ mmp_available_externally | string }}"
traefik.http.routers.mmp.rule: "Host(`{{ mmp_hostname }}.{{ ansible_nas_domain }}`)"
traefik.http.routers.mmp.tls.certresolver: "letsencrypt"
traefik.http.routers.mmp.tls.domains[0].main: "{{ ansible_nas_domain }}"
traefik.http.routers.mmp.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
traefik.http.services.mmp.loadbalancer.server.port: "8081"
when: mmp_enabled is true

- name: Stop Mmp
block:
- name: Stop Mmp db
community.docker.docker_container:
name: "{{ mmp_db_container_name }}"
state: absent

- name: Stop Mmp
community.docker.docker_container:
name: "{{ mmp_container_name }}"
state: absent
when: mmp_enabled is false
14 changes: 14 additions & 0 deletions website/docs/applications/other/mmp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: "Maker Management Platform"
description: "Management of a variety of digital assets related to 3d printing, manufacturing, laser engraving and such."
---

Homepage: [https://github.com/Maker-Management-Platform/docs](https://github.com/Maker-Management-Platform/docs)

Maker Management Platform, or mmp, aims to simplify and unify the management of a variety of digital assets related to 3d printing, manufacturing, laser engraving and such.

## Usage

Set `mmp_enabled: true` in your `inventories/<your_inventory>/group_vars/nas.yml` file.

Maker Management Platform web interface can be found at [http://ansible_nas_host_or_ip:8152](http://ansible_nas_host_or_ip:8152).

0 comments on commit 9fc2d51

Please sign in to comment.