97 lines
4.5 KiB
Markdown
97 lines
4.5 KiB
Markdown
# Ansible role `bertvv.samba`
|
|
|
|
An Ansible role for setting up Samba as a file server. Specifically, the responsibilities of this role are to:
|
|
|
|
- Install the necessary packages
|
|
- Configure SELinux settings
|
|
- Create share directories
|
|
- Manage users and passwords
|
|
- Manage access to shares
|
|
|
|
## Requirements
|
|
|
|
- SELinux is expected to be running
|
|
- The firewall should be active
|
|
- Samba users should already exist as system users
|
|
|
|
You can take a look at role [bertvv.el7](https://galaxy.ansible.com/list#/roles/2305) that does all this and more.
|
|
|
|
## Role Variables
|
|
|
|
|
|
| Variable | Required | Default | Comments |
|
|
| :--- | :--- | :--- | :--- |
|
|
| `samba_create_varwww_symlinks` | no | - | When this is set to `yes`, symlinks are created in `/var/www/html` to the shares. |
|
|
| `samba_load_homes` | no | no | Make user home directories accessible. |
|
|
| `samba_load_printers` | no | no | Make printers accessible. |
|
|
| `samba_log` | no | - | Set the log file. If left undefined, logging is done through syslog. |
|
|
| `samba_log_size` | no | 5000 | Set the maximum size of the log file. |
|
|
| `samba_map_to_guest` | no | `bad user` | Behaviour when unregistered users access the shares. |
|
|
| `samba_netbios_name` | yes | - | The NetBIOS name of this server. |
|
|
| `samba_passdb_backend` | no | `tdbsam` | Password database backend. |
|
|
| `samba_security` | no | `user` | Samba security setting |
|
|
| `samba_server_string` | no | `fileserver %m` | Comment string for the server. |
|
|
| `samba_shares` | no | - | List of dicts containing share definitions. See below for details. |
|
|
| `samba_shares_root` | no | `/srv/shares` | Directories for the shares are created under this directory. |
|
|
| `samba_users` | no | - | List of dicts defining users that can access shares. |
|
|
| `samba_workgroup` | no | `WORKGROUP` | Name of the server workgroup. |
|
|
|
|
### Defining users
|
|
|
|
In order to allow users to access the shares, they need to get a password specifically for Samba:
|
|
|
|
```Yaml
|
|
samba_users:
|
|
- name: alice
|
|
password: ecila
|
|
- name: bob
|
|
password: bob
|
|
- name: charlie
|
|
password: eilrahc
|
|
```
|
|
|
|
Unfortunately, passwords have to be in plain text for now.
|
|
|
|
### Defining shares
|
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
No dependencies.
|
|
|
|
## Example Playbook
|
|
|
|
See the [test playbook](tests/test.yml)
|
|
|
|
## Testing
|
|
|
|
The `tests` directory contains acceptance tests for this role in the form of a Vagrant environment. The directory `tests/roles/samba` is a symbolic link that should point to the root of this project in order to work. To create it, do
|
|
|
|
```ShellSession
|
|
$ cd tests/
|
|
$ mkdir roles
|
|
$ ln -frs ../../PROJECT_DIR roles/samba
|
|
```
|
|
|
|
You may want to change the base box into one that you like. The current one is based on Box-Cutter's [CentOS Packer template](https://github.com/boxcutter/centos).
|
|
|
|
The playbook [`test.yml`](tests/test.yml) applies the role to a VM, setting role variables.
|
|
|
|
## See also
|
|
|
|
If you are looking for a Samba role for Debian or Ubuntu, take a look at this [comprehensive role](https://galaxy.ansible.com/list#/roles/1597) by Debops. Jeff Geerling also has written a [Samba role for EL](https://galaxy.ansible.com/list#/roles/438), but at the time of writing this, it is very basic.
|
|
|
|
## Contributing
|
|
|
|
Issues, feature requests, ideas are appreciated and can be posted in the Issues section. Pull requests are also very welcome. Preferably, create a topic branch and when submitting, squash your commits into one (with a descriptive message).
|
|
|
|
## License
|
|
|
|
BSD
|
|
|
|
## Author Information
|
|
|
|
Bert Van Vreckem (bert.vanvreckem@gmail.com)
|
|
|