ansible-role-samba/README.md

97 lines
4.5 KiB
Markdown
Raw Normal View History

# 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
2015-03-13 23:39:42 +00:00
- 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
2015-03-13 23:39:42 +00:00
| 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)