diff --git a/roles/docker-fusiondirectory/README.md b/roles/docker-fusiondirectory/README.md new file mode 100644 index 00000000..ef51ef21 --- /dev/null +++ b/roles/docker-fusiondirectory/README.md @@ -0,0 +1,34 @@ +# DRAFT FusionDirectory DRAFT🐳 + +# TODO +This needs to be implemented + +## Description + +This Ansible role deploys and configures [FusionDirectory](https://www.fusiondirectory.org/) – a powerful web-based LDAP administration tool. Using Docker Compose, the role runs a pre-configured FusionDirectory container which allows you to manage your LDAP directory through a user-friendly web interface. + +## Overview + +Designed to simplify LDAP management, this role: +- Loads necessary FusionDirectory-specific variables. +- Generates an environment file based on a template. +- Deploys a FusionDirectory Docker container via Docker Compose. +- Integrates with your existing central LDAP service. + +## Purpose + +The purpose of this role is to automate the deployment of FusionDirectory in your Docker environment, ensuring a quick and consistent setup for managing your LDAP data. Ideal for production or homelab deployments, it reduces manual configuration steps and helps enforce best practices. + +## Features + +- **Easy Deployment:** Minimal manual setup via pre-configured templates and variables. +- **LDAP Integration:** Connects seamlessly with your existing central LDAP server. +- **Web Interface:** Provides an intuitive GUI for LDAP administration. +- **Docker Compose Integration:** Automates container creation and restart. + +## Credits 📝 + +Developed and maintained by **Kevin Veen-Birkenbach**. +Learn more at [www.veen.world](https://www.veen.world) +Part of the [CyMaIS Project](https://github.com/kevinveenbirkenbach/cymais) +License: [CyMaIS NonCommercial License (CNCL)](https://s.veen.world/cncl) \ No newline at end of file diff --git a/roles/docker-fusiondirectory/meta/main.yml b/roles/docker-fusiondirectory/meta/main.yml new file mode 100644 index 00000000..5dc7e49e --- /dev/null +++ b/roles/docker-fusiondirectory/meta/main.yml @@ -0,0 +1,21 @@ +--- +galaxy_info: + author: "Kevin Veen-Birkenbach" + description: >- + FusionDirectory is a web-based tool to manage LDAP directories and this role ensures a reliable, easy-to-use interface for LDAP administration. + license: "CyMaIS NonCommercial License (CNCL)" + license_url: "https://s.veen.world/cncl" + company: "Kevin Veen-Birkenbach Consulting & Coaching Solutions" + min_ansible_version: "2.9" + platforms: + - name: Docker + versions: + - "latest" + galaxy_tags: + - fusiondirectory + - ldap + - docker + - administration + repository: "https://s.veen.world/cymais" + issue_tracker_url: "https://s.veen.world/cymaisissues" + documentation: "https://s.veen.world/cymais" diff --git a/roles/docker-fusiondirectory/tasks/main.yml b/roles/docker-fusiondirectory/tasks/main.yml new file mode 100644 index 00000000..65e23553 --- /dev/null +++ b/roles/docker-fusiondirectory/tasks/main.yml @@ -0,0 +1,13 @@ +- name: "include docker-compose role" + include_role: + name: docker-compose + +- name: "include role nginx-domain-setup for {{application_id}}" + include_role: + name: nginx-domain-setup + vars: + domain: "{{ domains[application_id] }}" + http_port: "{{ ports.localhost.http[application_id] }}" + +- name: "copy docker-compose.yml and env file" + include_tasks: copy-docker-compose-and-env.yml diff --git a/roles/docker-fusiondirectory/templates/docker-compose.yml.j2 b/roles/docker-fusiondirectory/templates/docker-compose.yml.j2 new file mode 100644 index 00000000..5222655a --- /dev/null +++ b/roles/docker-fusiondirectory/templates/docker-compose.yml.j2 @@ -0,0 +1,46 @@ +services: + +{% include 'roles/docker-oauth2-proxy/templates/container.yml.j2' %} + + application: + container_name: {{ application_id }} + logging: + driver: journald + restart: {{docker_restart_policy}} + image: ghcr.io/ldapaccountmanager/lam:{{applications[application_id].version}} + ports: + - 127.0.0.1:{{ports.localhost.http[application_id]}}:80 +{% include 'roles/docker-compose/templates/services/base.yml.j2' %} +{% include 'templates/docker/container/networks.yml.j2' %} + +{# include 'templates/docker/compose/volumes.yml.j2' #} + +{% include 'templates/docker/compose/networks.yml.j2' %} + +services: + fusiondirectory: + image: tiredofit/fusiondirectory:latest + container_name: fusiondirectory + ports: + - "8080:80" # Exponiert den Webservice (HTTP) des Containers auf Port 8080 des Hosts + environment: + # FusionDirectory spezifische Einstellungen + - FUSIONDIRECTORY_ADMIN_USER=admin + - FUSIONDIRECTORY_ADMIN_PASS=yourFusionDirPassword + # LDAP-Verbindungsdaten (diese werden von FusionDirectory benötigt, um sich mit Ihrem LDAP-Server zu verbinden) + - LDAP_HOST=ldap.example.com + - LDAP_ADMIN_DN=cn=admin,dc=example,dc=com + - LDAP_ADMIN_PASS=yourLDAPPassword + - LDAP_BASE_DN=dc=example,dc=com + # Optional: Falls TLS für die LDAP-Verbindung genutzt werden soll, können Sie diese Variablen definieren: + #- ENABLE_TLS=TRUE + #- TLS_CRT_FILENAME=cert.pem + #- TLS_KEY_FILENAME=key.pem + #- TLS_CA_CRT_FILENAME=ca_cert.pem + volumes: + # Hier können Sie persistente Daten ablegen – z. B. individuelle Konfigurationen oder benutzerdefinierte Plugins + - fusiondirectory_data:/assets/fusiondirectory + restart: always + +volumes: + fusiondirectory_data: diff --git a/roles/docker-fusiondirectory/templates/env.j2 b/roles/docker-fusiondirectory/templates/env.j2 new file mode 100644 index 00000000..8fe70b81 --- /dev/null +++ b/roles/docker-fusiondirectory/templates/env.j2 @@ -0,0 +1,14 @@ +# See all variables here: +# https://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env + +# Basic Configuration +LAM_PASSWORD= {{applications[application_id].administrator_password}} # LAM configuration master password and password for server profile "lam + +# Database +LAM_CONFIGURATION_DATABASE= files # configuration database (files or mysql) @todo implement mariadb + +# LDAP Configuration +LDAP_SERVER= {{ldap.server.domain}} # domain of LDAP database root entry +LDAP_BASE_DN= {{ldap.dn.root}} # LDAP base DN to overwrite value generated by LDAP_DOMAIN +LDAP_USER= {{ldap.dn.administrator}} # LDAP admin user (set as login user for LAM) +LDAP_ADMIN_PASSWORD= {{ldap.bind_credential}} # LDAP admin password \ No newline at end of file diff --git a/roles/docker-fusiondirectory/vars/main.yml b/roles/docker-fusiondirectory/vars/main.yml new file mode 100644 index 00000000..dd6ff92f --- /dev/null +++ b/roles/docker-fusiondirectory/vars/main.yml @@ -0,0 +1 @@ +application_id: "fusiondirectory" \ No newline at end of file diff --git a/tasks/server.yml b/tasks/server.yml index 27e08950..d7f7db13 100644 --- a/tasks/server.yml +++ b/tasks/server.yml @@ -30,6 +30,16 @@ include_role: name: docker-keycloak +- name: setup lam + when: ("lam" in group_names) + include_role: + name: docker-lam + +- name: setup phpldapadmin + when: ("phpldapadmin" in group_names) + include_role: + name: docker-phpldapadmin + - name: setup nextcloud hosts when: ("nextcloud" in group_names) include_role: