Skip to content

Commit

Permalink
node_exporter: Fix Systemd ProtectHome option in service unit
Browse files Browse the repository at this point in the history
Fixes an issue with the jinja2 snippet which is used to create the node_exporter Systemd unit. More details here: #13

Jinja2 namespaces are used to ensure the variable `protect_home` can be set in the parent scope of the `for` loop looking through the mounts.

Signed-off-by: Kevin Bowrin <kevinbowrin@cunet.carleton.ca>
  • Loading branch information
cudevmaxwell committed May 9, 2023
1 parent 26d2f99 commit be0a877
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ def test_service(host):
assert s.is_running


def test_protecthome_property(host):
s = host.service("node_exporter")
p = s.systemd_properties
assert p.get("ProtectHome") == "yes"


def test_socket(host):
sockets = [
"tcp://127.0.0.1:8080"
Expand Down
6 changes: 6 additions & 0 deletions roles/node_exporter/molecule/default/tests/test_default.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ def test_service(host):
assert s.is_running


def test_protecthome_property(host):
s = host.service("node_exporter")
p = s.systemd_properties
assert p.get("ProtectHome") == "yes"


def test_socket(host):
sockets = [
"tcp://127.0.0.1:9100"
Expand Down
6 changes: 6 additions & 0 deletions roles/node_exporter/molecule/latest/tests/test_alternative.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ def test_service(host):
assert s.is_running


def test_protecthome_property(host):
s = host.service("node_exporter")
p = s.systemd_properties
assert p.get("ProtectHome") == "yes"


def test_socket(host):
s = host.socket("tcp://0.0.0.0:9100")
assert s.is_listening
6 changes: 3 additions & 3 deletions roles/node_exporter/templates/node_exporter.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ Restart=always
RestartSec=1
StartLimitInterval=0

{% set protect_home = 'yes' %}
{% set ns = namespace(protect_home = 'yes') %}
{% for m in ansible_mounts if m.mount.startswith('/home') %}
{% set protect_home = 'read-only' %}
{% set ns.protect_home = 'read-only' %}
{% endfor %}
ProtectHome={{ protect_home }}
ProtectHome={{ ns.protect_home }}
NoNewPrivileges=yes

{% if (ansible_facts.packages.systemd | first).version is version('232', '>=') %}
Expand Down

0 comments on commit be0a877

Please sign in to comment.