From 9587b4193c969d8238f05a5abc70d8837f422fa4 Mon Sep 17 00:00:00 2001 From: transcaffeine Date: Fri, 2 May 2025 10:03:59 +0200 Subject: [PATCH] feat(phpldapadmin): add ansible role --- galaxy.yml | 1 + playbooks/phpldapadmin.yml | 7 ++++ roles/phpldapadmin/README.md | 3 ++ .../phpldapadmin/defaults/main/container.yml | 39 +++++++++++++++++++ roles/phpldapadmin/defaults/main/main.yml | 5 +++ roles/phpldapadmin/tasks/deploy-docker.yml | 27 +++++++++++++ roles/phpldapadmin/tasks/main.yml | 18 +++++++++ roles/phpldapadmin/vars/main.yml | 6 +++ 8 files changed, 106 insertions(+) create mode 100644 playbooks/phpldapadmin.yml create mode 100644 roles/phpldapadmin/README.md create mode 100644 roles/phpldapadmin/defaults/main/container.yml create mode 100644 roles/phpldapadmin/defaults/main/main.yml create mode 100644 roles/phpldapadmin/tasks/deploy-docker.yml create mode 100644 roles/phpldapadmin/tasks/main.yml create mode 100644 roles/phpldapadmin/vars/main.yml diff --git a/galaxy.yml b/galaxy.yml index aa06df0..6fb01ca 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -22,3 +22,4 @@ tags: - vaultwarden - snipeit - docker + - phpldapadmin diff --git a/playbooks/phpldapadmin.yml b/playbooks/phpldapadmin.yml new file mode 100644 index 0000000..eb3a77c --- /dev/null +++ b/playbooks/phpldapadmin.yml @@ -0,0 +1,7 @@ +--- +- name: Configure and run phpldapadmin + hosts: "{{ phpldapadmin_hosts | default('phpldapadmin', true) }}" + become: "{{ phpldapadmin_become | default(false) }}" + gather_facts: "{{ phpldapadmin_gather_facts | default(false) }}" + roles: + - role: finallycoffee.services.phpldapadmin diff --git a/roles/phpldapadmin/README.md b/roles/phpldapadmin/README.md new file mode 100644 index 0000000..1e95a49 --- /dev/null +++ b/roles/phpldapadmin/README.md @@ -0,0 +1,3 @@ +# `finallycoffee.services.phpldapadmin` + +Role to deploy and configure [phpldapadmin](https://github.com/leenooks/phpLDAPadmin). diff --git a/roles/phpldapadmin/defaults/main/container.yml b/roles/phpldapadmin/defaults/main/container.yml new file mode 100644 index 0000000..61f5da6 --- /dev/null +++ b/roles/phpldapadmin/defaults/main/container.yml @@ -0,0 +1,39 @@ +--- +phpldapadmin_container_name: phpldapadmin +phpldapadmin_container_image_registry: docker.io +phpldapadmin_container_image_namespace: phpldapadmin +phpldapadmin_container_image_name: phpldapadmin +phpldapadmin_container_image_repository: >-2 + {{ + [ + phpldapadmin_container_image_registry | default([], true), + phpldapadmin_container_image_namespace | default([], true), + phpldapadmin_container_image_name + ] | flatten | join('/') + }} +phpldapadmin_container_image: >-2 + {{ + [ + phpldapadmin_container_image_repository, + phpldapadmin_container_image_tag | default(phpldapadmin_version, true) + ] | join(':') + }} +phpldapadmin_container_image_tag: ~ +phpldapadmin_container_image_source: pull +phpldapadmin_container_image_force_source: >-2 + {{ phpldapadmin_container_image_tag | default(false, true) }} +phpldapadmin_container_env: ~ +phpldapadmin_container_user: ~ +phpldapadmin_container_ports: ~ +phpldapadmin_container_labels: ~ +phpldapadmin_container_volumes: ~ +phpldapadmin_container_networks: ~ +phpldapadmin_container_network_mode: ~ +phpldapadmin_container_dns_servers: ~ +phpldapadmin_container_etc_hosts: ~ +phpldapadmin_container_memory: ~ +phpldapadmin_container_memory_swap: ~ +phpldapadmin_container_memory_reservation: ~ +phpldapadmin_container_restart_policy: "on-failure" +phpldapadmin_container_state: >-2 + {{ (phpldapadmin_state == 'present') | ternary('started', 'absent') }} diff --git a/roles/phpldapadmin/defaults/main/main.yml b/roles/phpldapadmin/defaults/main/main.yml new file mode 100644 index 0000000..3585abc --- /dev/null +++ b/roles/phpldapadmin/defaults/main/main.yml @@ -0,0 +1,5 @@ +--- +phpldapadmin_version: "2.1.2" + +phpldapadmin_state: present +phpldapadmin_deployment_method: docker diff --git a/roles/phpldapadmin/tasks/deploy-docker.yml b/roles/phpldapadmin/tasks/deploy-docker.yml new file mode 100644 index 0000000..b2afdb8 --- /dev/null +++ b/roles/phpldapadmin/tasks/deploy-docker.yml @@ -0,0 +1,27 @@ +--- +- name: Ensure phpldapadmin container image '{{ phpldapadmin_container_image }}' is {{ phpldapadmin_state }} + community.docker.docker_image: + name: "{{ phpldapadmin_container_image }}" + state: "{{ phpldapadmin_state }}" + source: "{{ phpldapadmin_container_image_source }}" + force_source: "{{ phpldapadmin_container_image_force_source }}" + +- name: Ensure phpldapadmin container '{{ phpldapadmin_container_name }}' is {{ phpldapadmin_container_state }} + community.docker.docker_container: + name: "{{ phpldapadmin_container_name }}" + image: "{{ phpldapadmin_container_image }}" + env: "{{ phpldapadmin_container_env | default(omit, true) }}" + user: "{{ phpldapadmin_container_user | default(omit, true) }}" + ports: "{{ phpldapadmin_container_ports | default(omit, true) }}" + labels: "{{ phpldapadmin_container_labels | default(omit, true) }}" + volumes: "{{ phpldapadmin_container_volumes | default(omit, true) }}" + networks: "{{ phpldapadmin_container_networks | default(omit, true) }}" + network_mode: "{{ phpldapadmin_container_network_mode | default(omit, true) }}" + dns_servers: "{{ phpldapadmin_container_dns_servers | default(omit, true) }}" + etc_hosts: "{{ phpldapadmin_container_etc_hosts | default(omit, true) }}" + memory: "{{ phpldapadmin_container_memory | default(omit, true) }}" + memory_swap: "{{ phpldapadmin_container_memory_swap | default(omit, true) }}" + memory_reservation: >-2 + {{ phpldapadmin_container_memory_reservation | default(omit, true) }} + restart_policy: "{{ phpldapadmin_container_restart_policy | default(omit, true) }}" + state: "{{ phpldapadmin_container_state }}" diff --git a/roles/phpldapadmin/tasks/main.yml b/roles/phpldapadmin/tasks/main.yml new file mode 100644 index 0000000..6a8f68d --- /dev/null +++ b/roles/phpldapadmin/tasks/main.yml @@ -0,0 +1,18 @@ +--- +- name: Ensure 'phpldapadmin_state' is valid + ansible.builtin.fail: + msg: >-2 + Unsupported state '{{ phpldapadmin_state }}'! + Supported states are {{ phpldapadmin_states | join(', ') }} + when: phpldapadmin_state not in phpldapadmin_states + +- name: Ensure 'phpldapadmin_deployment_method' is valid + ansible.builtin.fail: + msg: >-2 + Unsupported deployment method '{{ phpldapadmin_deployment_method }}'! + Supported deployment methods are {{ phpldapadmin_deployment_methods | join(', ') }} + when: phpldapadmin_deployment_method not in phpldapadmin_deployment_methods + +- name: Deploy using {{ phpldapadmin_deployment_method }} + ansible.builtin.import_tasks: + file: "deploy-{{ phpldapadmin_deployment_method }}.yml" diff --git a/roles/phpldapadmin/vars/main.yml b/roles/phpldapadmin/vars/main.yml new file mode 100644 index 0000000..5dfda0a --- /dev/null +++ b/roles/phpldapadmin/vars/main.yml @@ -0,0 +1,6 @@ +--- +phpldapadmin_states: + - "present" + - "absent" +phpldapadmin_deployment_methods: + - "docker"