118 lines
2.8 KiB
YAML
118 lines
2.8 KiB
YAML
## Install and configure samba-ldap.
|
|
---
|
|
- name: check if samba is already there
|
|
stat: path=/etc/ldap/schema/samba.ldif
|
|
register: samba_ldap
|
|
|
|
- name: install samba and provide samba schema
|
|
apt:
|
|
name:
|
|
- samba
|
|
- sssd-ldap
|
|
state: latest # noqa package-latest
|
|
|
|
- name: provide identities from LDAP
|
|
template:
|
|
src: sssd.conf.j2
|
|
dest: /etc/sssd/sssd.conf
|
|
mode: 0600
|
|
notify: restart sssd
|
|
|
|
- name: flush all handlers
|
|
meta: flush_handlers
|
|
|
|
- name: prepare samba schema
|
|
command: cp /usr/share/doc/samba/examples/LDAP/samba.ldif /etc/ldap/schema/
|
|
args:
|
|
creates: /etc/ldap/schema/samba.ldif
|
|
|
|
- name: activate samba.ldif schema
|
|
command: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif
|
|
when: not samba_ldap.stat.exists
|
|
|
|
- name: add indexes to LDAP
|
|
ldap_attrs:
|
|
dn: "olcDatabase={1}mdb,cn=config"
|
|
name: olcDbIndex
|
|
values:
|
|
- sambaSID eq
|
|
- sambaPrimaryGroupSID eq
|
|
- sambaGroupType eq
|
|
- sambaSIDList eq
|
|
- sambaDomainName eq
|
|
state: present
|
|
|
|
- name: modify ACLs to account for Samba
|
|
ldap_attrs:
|
|
dn: "olcDatabase={1}mdb,cn=config"
|
|
name: olcAccess
|
|
values:
|
|
- >-
|
|
to attrs=userPassword
|
|
by self write
|
|
by anonymous auth
|
|
by * none
|
|
- >-
|
|
to attrs=shadowLastChange
|
|
by self write
|
|
by * read
|
|
- >-
|
|
to attrs=sambaNTPassword
|
|
by dn.exact=cn=admin,{{ basedn }} write
|
|
by self write
|
|
by * none
|
|
- >-
|
|
to * by * read
|
|
state: exact
|
|
|
|
- name: customize smb.conf
|
|
blockinfile:
|
|
dest: /etc/samba/smb.conf
|
|
insertafter: '^\s*server role ='
|
|
block: |
|
|
####### LDAP Settings #######
|
|
passdb backend = ldapsam:ldapi:///
|
|
ldap suffix = {{ basedn }}
|
|
ldap user suffix = ou=people
|
|
ldap group suffix = ou=groups
|
|
ldap machine suffix = ou=computers
|
|
ldap idmap suffix = ou=idmap
|
|
ldap admin dn = cn=admin,{{ basedn }}
|
|
ldap ssl = no
|
|
ldap passwd sync = yes
|
|
notify: restart smbd
|
|
|
|
|
|
- name: slurp admin password for samba setup
|
|
slurp:
|
|
src: "{{ ldap_admin_pwd_file }}"
|
|
register: ldap_admin_pwd
|
|
no_log: true
|
|
when: not samba_ldap.stat.exists
|
|
|
|
- name: make samba admin password available to smbd
|
|
command: smbpasswd -w "{{ ldap_admin_pwd['content'] | b64decode | replace('\n', '') }}"
|
|
no_log: true
|
|
notify: restart smbd
|
|
when: not samba_ldap.stat.exists
|
|
|
|
- name: flush all handlers
|
|
meta: flush_handlers
|
|
|
|
- name: add samba attributes to dummy user foo
|
|
command:
|
|
cmd: smbpasswd -s -a foo
|
|
stdin: "{{ foo_pwd }}\n{{ foo_pwd }}"
|
|
when: foo_pwd is defined and foo_pwd | length > 0
|
|
|
|
########################
|
|
|
|
- name: allow services in firewalld
|
|
firewalld:
|
|
zone: internal
|
|
service: "{{ item }}"
|
|
permanent: true
|
|
immediate: true
|
|
state: enabled
|
|
with_items:
|
|
- samba
|