Skip to content

Commit b358e39

Browse files
committed
Add role to deploy MongoDB as quadlet on lovelace
1 parent 469bd68 commit b358e39

8 files changed

Lines changed: 91 additions & 1 deletion

File tree

ansible/playbook.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,12 @@
6262
roles:
6363
- git-mirrors
6464

65-
- name: Deploy our PostgreSQL database hosts
65+
- name: Deploy our database hosts
6666
hosts: databases
6767
roles:
6868
- postgres
6969
- prometheus-postgres-exporter
70+
- mongodb
7071

7172
- name: Deploy our LDAP server environment to the LDAP host
7273
hosts: ldap

ansible/roles/mongodb/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# mongodb
2+
3+
This role deploys MongoDB using podman quadlets.
4+
5+
The container starts as root, but drops privileges after startup.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
- name: Restart mongodb
3+
ansible.builtin.service:
4+
name: mongodb
5+
state: restarted
6+
tags:
7+
- role::mongodb
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
dependencies:
3+
- podman
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
- name: Template quadlet services
3+
ansible.builtin.template:
4+
src: mongodb.{{ item }}.j2
5+
dest: /etc/containers/systemd/mongodb.{{ item }}
6+
owner: root
7+
group: root
8+
mode: 0o444
9+
register: mongodb_units
10+
tags:
11+
- role::mongodb
12+
notify:
13+
- Restart mongodb
14+
loop:
15+
- container
16+
- image
17+
- volume
18+
19+
- name: Start and enable the quadlet
20+
ansible.builtin.service:
21+
name: mongodb.service
22+
daemon_reload: "{{ mongodb_units is changed }}"
23+
state: started
24+
enabled: true
25+
tags:
26+
- role::mongodb
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# {{ ansible_managed }}
2+
3+
[Unit]
4+
Description = Mongo NoSQL (NonSensical Query Language) Server
5+
6+
[Container]
7+
Image = mongodb.image
8+
Pull = missing
9+
Volume = mongodb.volume:/data/db
10+
11+
[Service]
12+
# Resource control
13+
CPUQuota = 20%
14+
MemoryMax = 900M
15+
16+
# Sandboxing
17+
NoNewPrivileges = true
18+
PrivateDevices = true
19+
ProtectHome = true
20+
ProtectKernelLogs = true
21+
ProtectKernelModules = true
22+
ProtectSystem = true
23+
RestrictRealtime = true
24+
RestrictSUIDSGID = true
25+
UMask = 0077
26+
27+
[Install]
28+
WantedBy = network-online.target
29+
30+
# vim: ft=dosini.jinja2:
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# {{ ansible_managed }}
2+
3+
[Unit]
4+
Description = Mongo NoSQL (NonSensical Query Language) Server image
5+
After = network-online.target
6+
7+
[Image]
8+
Image = docker.io/library/mongo:4.4
9+
10+
# vim: ft=dosini.jinja2:
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# {{ ansible_managed }}
2+
3+
[Unit]
4+
Description = Mongo NoSQL (NonSensical Query Language) volume
5+
6+
[Volume]
7+
8+
# vim: ft=dosini.jinja2:

0 commit comments

Comments
 (0)