From 6b0c4d384d172c6cd867bc2e8e3f90e461bfa020 Mon Sep 17 00:00:00 2001 From: Vladimir Still <git@vstill.eu> Date: Fri, 4 Feb 2022 14:08:15 +0100 Subject: [PATCH] ansible: Add rudimentary samba role --- ansible/roles/samba/defaults/main.yml | 2 ++ .../roles/samba/filter_plugins/formatters.py | 26 ++++++++++++++ ansible/roles/samba/tasks/main.yml | 34 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 ansible/roles/samba/defaults/main.yml create mode 100644 ansible/roles/samba/filter_plugins/formatters.py create mode 100644 ansible/roles/samba/tasks/main.yml diff --git a/ansible/roles/samba/defaults/main.yml b/ansible/roles/samba/defaults/main.yml new file mode 100644 index 0000000..8d87fcc --- /dev/null +++ b/ansible/roles/samba/defaults/main.yml @@ -0,0 +1,2 @@ +homes: false +printers: false diff --git a/ansible/roles/samba/filter_plugins/formatters.py b/ansible/roles/samba/filter_plugins/formatters.py new file mode 100644 index 0000000..54a8294 --- /dev/null +++ b/ansible/roles/samba/filter_plugins/formatters.py @@ -0,0 +1,26 @@ +import jinja2.runtime + +def yesno(value, default="no") -> str: + if isinstance(value, jinja2.runtime.Undefined) or value is None: + return default + if value is True: + return "yes" + if value is False: + return "no" + raise ValueError(f"Value {value} not valid boolean") + + +def smb_list(value) -> str: + if isinstance(value, list): + assert all(map(lambda x: isinstance(x, str), value)), "values must be strings" + return ", ".join(value) + if isinstance(value, str): + return value + if isinstance(value, jinja2.runtime.Undefined) or value is None: + return "" + raise ValueError(f"Value {value} is neither list of strings nor a string (or undefined)") + + +class FilterModule(object): + def filters(self): + return {"yesno": yesno, "smb_list": smb_list} diff --git a/ansible/roles/samba/tasks/main.yml b/ansible/roles/samba/tasks/main.yml new file mode 100644 index 0000000..5119683 --- /dev/null +++ b/ansible/roles/samba/tasks/main.yml @@ -0,0 +1,34 @@ +- name: Install Samba + apt: + pkg: + - samba + +- name: Samba public group + group: + name: smb + system: true + +- name: Samba public user + user: + name: smb + group: smb + shell: /usr/sbin/nologin + home: /var/empty + system: true + create_home: false + +- name: Samba config + template: + dest: /etc/samba/smb.conf + src: smb.conf.j2 + validate: testparm -s %s + register: samba_config + +- name: Reload Samba + systemd: + name: '{{item}}' + state: '{{"restarted" if samba_config.changed else "started"}}' + enabled: true + loop: + - smbd + - nmbd -- GitLab