From d28f793ad94cf6f6884146ffaf93740ff68d9267 Mon Sep 17 00:00:00 2001 From: marito Date: Tue, 17 Jun 2025 13:13:01 +0800 Subject: [PATCH] mailpit as utility v1 --- Lenvi.yaml | 4 ++++ playbook.yml | 2 ++ roles/mailpit/handlers/main.yml | 6 ++++++ roles/mailpit/tasks/main.yml | 24 ++++++++++++++++++++++ roles/mailpit/templates/mailpit.service.j2 | 14 +++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 roles/mailpit/handlers/main.yml create mode 100644 roles/mailpit/tasks/main.yml create mode 100644 roles/mailpit/templates/mailpit.service.j2 diff --git a/Lenvi.yaml b/Lenvi.yaml index 576856f..ce56221 100644 --- a/Lenvi.yaml +++ b/Lenvi.yaml @@ -12,6 +12,8 @@ # php_version: "8.3" # Must match one of your project's PHP versions # redis: # enabled: false +# mailpit: +# enabled: false # Fake SMTP server to catch and view emails sent during local dev # db_engine: # Choose between mariadb, mysql, or postgresql. Lenvi will install and manage the correct service. @@ -38,6 +40,8 @@ utilities: php_version: "8.3" redis: enabled: false + mailpit: + enabled: false # 🛢️ Database Engine db_engine: "mariadb" diff --git a/playbook.yml b/playbook.yml index f716dee..6855d46 100644 --- a/playbook.yml +++ b/playbook.yml @@ -21,4 +21,6 @@ when: utilities.phpmyadmin.enabled is defined and utilities.phpmyadmin.enabled - role: redis when: utilities.redis.enabled is defined and utilities.redis.enabled + - role: mailpit + when: utilities.mailpit.enabled is defined and utilities.mailpit.enabled - role: projects \ No newline at end of file diff --git a/roles/mailpit/handlers/main.yml b/roles/mailpit/handlers/main.yml new file mode 100644 index 0000000..86784a3 --- /dev/null +++ b/roles/mailpit/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: "Restart Mailpit service" + ansible.builtin.systemd: + name: mailpit + daemon_reload: yes + state: restarted \ No newline at end of file diff --git a/roles/mailpit/tasks/main.yml b/roles/mailpit/tasks/main.yml new file mode 100644 index 0000000..7383eeb --- /dev/null +++ b/roles/mailpit/tasks/main.yml @@ -0,0 +1,24 @@ +--- +- name: "Install Mailpit using the official installation script" + ansible.builtin.shell: "bash <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh)" + args: + creates: /usr/local/bin/mailpit + register: mailpit_install + changed_when: "mailpit_install.rc == 0 and 'Installed Mailpit to' in mailpit_install.stdout" + become: yes + +- name: "Create Mailpit systemd service file" + ansible.builtin.template: + src: mailpit.service.j2 + dest: /etc/systemd/system/mailpit.service + owner: root + group: root + mode: '0644' + notify: Restart Mailpit service + +- name: "Ensure Mailpit service is enabled and started" + ansible.builtin.systemd: + name: mailpit + enabled: yes + state: started + daemon_reload: yes \ No newline at end of file diff --git a/roles/mailpit/templates/mailpit.service.j2 b/roles/mailpit/templates/mailpit.service.j2 new file mode 100644 index 0000000..abfed19 --- /dev/null +++ b/roles/mailpit/templates/mailpit.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Mailpit +After=network.target + +[Service] +User={{ ansible_user_id }} +Group={{ ansible_user_gid }} +Type=simple +ExecStart=/usr/local/bin/mailpit +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target \ No newline at end of file