Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
cfba38d
Needed these fixes to get things wirking in centos7
b4ldr Mar 8, 2016
83d063c
add users
b4ldr Mar 14, 2016
60956fe
correct dest
b4ldr Mar 14, 2016
d473d8d
correct syntz
b4ldr Mar 14, 2016
93b8eab
update var name
b4ldr Mar 14, 2016
67bc5eb
correct password
b4ldr Mar 14, 2016
35aeebd
correct password
b4ldr Mar 14, 2016
3b8569c
update
b4ldr Mar 14, 2016
2413b38
correct password
b4ldr Mar 14, 2016
65a0f55
update
b4ldr Mar 14, 2016
64320b0
add white space
b4ldr Mar 14, 2016
aee816b
correct schema
b4ldr Mar 14, 2016
e207ff9
update schema
b4ldr Mar 14, 2016
4a6f882
use loop.index
b4ldr Mar 14, 2016
10d7849
add user and group
b4ldr Mar 14, 2016
63e3f07
correct syntax
b4ldr Mar 14, 2016
78bbe91
correct syntax
b4ldr Mar 14, 2016
3b7b8cb
correct syntax
b4ldr Mar 14, 2016
9d4cd0f
change to result.changed
b4ldr Mar 14, 2016
1b7fef8
correct domain file
b4ldr Mar 14, 2016
8a39c8c
add -c switch
b4ldr Mar 14, 2016
5b023e4
update error
b4ldr Mar 14, 2016
3fdda02
add users
b4ldr Mar 14, 2016
75e8eeb
correct name
b4ldr Mar 14, 2016
c9526ff
correct cn
b4ldr Mar 14, 2016
4e8cca3
update users
b4ldr Mar 14, 2016
2d757d6
update users
b4ldr Mar 14, 2016
cfbe556
correct whitespace
b4ldr Mar 14, 2016
8c53686
correct whitespace
b4ldr Mar 14, 2016
d287b97
correct rc check
b4ldr Mar 14, 2016
593acc1
update mail parameter
b4ldr Mar 15, 2016
79c7b5a
correct email
b4ldr Mar 15, 2016
28776d5
Refine user creation. Fix broken homeDirectory assignment. Add firstn…
gibbsoft Mar 16, 2016
a11c2cd
correct uids
b4ldr Mar 21, 2016
fcb1371
only create users if they exist
b4ldr Apr 4, 2016
6896620
add empty user list
b4ldr Apr 4, 2016
cd8786f
remove empty users
b4ldr Apr 4, 2016
4717c81
check users are defined
b4ldr Apr 4, 2016
7c475e4
delete last when
b4ldr Apr 4, 2016
4fd974a
replace firstname with givenname
gibbsoft Apr 25, 2016
05543b3
Merge branch 'master' of github.com:b4ldr/openldap_server
gibbsoft Apr 25, 2016
3487235
swap firstname for givenname
gibbsoft Apr 25, 2016
3341b1e
Merge pull request #1 from gibbsoft/extend_user_creation
b4ldr Apr 27, 2016
15d7018
Changing variables substitution to Jinja-Way
Aug 21, 2017
64a8301
Merge pull request #2 from iptizer/master
b4ldr Sep 1, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 22 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,27 @@ them are as follows:
openldap_serverlocation: Portland
openldap_serverorganization: IT

# Create users
openldap_enable_user_creation: true
openldap_server_users:
staff:
william:
password: 26April1564
fullname: William Shakespeare
givenname: William
surname: Shakespeare
email: william@example.com
shell: /usr/bin/zsh
phone: "555-5555-555"
john:
password: 31Oct1795
fullname: John Keats
givenname: John
surname: Keats
email: john@example.com
shell: /usr/bin/bash



Examples
--------
Expand All @@ -37,7 +58,7 @@ Examples
openldap_server_domain_name: example.com
openldap_server_rootpw: passme
openldap_server_enable_ssl: false

2) Configure an OpenLDAP server with SSL:

- hosts: all
Expand Down Expand Up @@ -66,5 +87,3 @@ Author Information
------------------

Benno Joy


25 changes: 22 additions & 3 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#The domain prefix for ldap
openldap_server_domain_name: example.com

#This is the password for admin for openldap
#This is the password for admin for openldap
openldap_server_rootpw: passme

#The self signed ssl parameters
Expand All @@ -12,7 +12,26 @@ openldap_server_state: oregon
openldap_server_location: portland
openldap_server_organization: IT

openldap_server_enable_plain: true
openldap_server_enable_ssl: true
openldap_server_enable_ipc: true

#The ldif file
openldap_server_ldif: domain.ldif
# Create group and users
openldap_enable_user_creation: false
openldap_server_users:
staff:
william:
password: 26April1564
fullname: William Shakespeare
givenname: William
surname: Shakespeare
email: william@example.com
shell: /usr/bin/zsh
phone: "555-5555-555"
john:
password: 31Oct1795
fullname: John Keats
givenname: John
surname: Keats
email: john@example.com
shell: /usr/bin/bash
12 changes: 12 additions & 0 deletions tasks/add_users.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---

- name: Create users ldif file
template: src=users.ldif.j2 dest={{ openldap_server_app_path }}/users.ldif
register: users_copy
when: openldap_enable_user_creation

- name: Add Users
when: users_copy.changed
register: command_result
failed_when: "command_result.rc not in [0,68]"
shell: ldapadd -c -x -D "cn=Manager,dc={{ openldap_server_domain_name.split('.')[0] }},dc={{ openldap_server_domain_name.split('.')[1] }}" -w {{ openldap_server_rootpw }} -f {{ openldap_server_app_path }}/users.ldif
10 changes: 7 additions & 3 deletions tasks/configure_ldap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,12 @@
service: name=slapd state=started enabled=yes

- name: Copy the template for creating base dn
template: src={{ openldap_server_ldif }} dest=/tmp/
register: result
template: src=domain.ldif.j2 dest={{ openldap_server_app_path }}/domain.ldif
register: domain_copy

- name: add the base domain
shell: ldapadd -x -D "cn=Manager,dc={{ openldap_server_domain_name.split('.')[0] }},dc={{ openldap_server_domain_name.split('.')[1] }}" -w {{ openldap_server_rootpw }} -f {{ result.dest|default(result.path) }} && touch {{ openldap_server_app_path }}/rootdn_created creates={{ openldap_server_app_path }}/rootdn_created
when: domain_copy.changed
register: command_result
failed_when: "command_result.rc not in [0,68]"
shell: ldapadd -c -x -D "cn=Manager,dc={{ openldap_server_domain_name.split('.')[0] }},dc={{ openldap_server_domain_name.split('.')[1] }}" -w {{ openldap_server_rootpw }} -f {{ openldap_server_app_path }}/domain.ldif

15 changes: 12 additions & 3 deletions tasks/install_ldap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,24 @@

- name: Install the openldap and required Packages for RedHat
yum: name={{ item }} state=installed
with_items: openldap_server_pkgs
with_items:
- "{{ openldap_server_pkgs }}"
when: ansible_os_family == 'RedHat'


- name: Install the openldap and required Packages for Ubuntu
apt: name={{ item }} state=installed update_cache=yes
with_items: openldap_server_pkgs
with_items:
- "{{ openldap_server_pkgs }}"
environment: env
when: ansible_os_family == 'Debian'

- name: Delete the configuration directory
file: path={{ openldap_server_app_path }}/slapd.d state=absent

- name: Generate the root password for ldap
shell: slappasswd -s {{ openldap_server_rootpw }}
shell: slappasswd -h {SHA} -s {{ openldap_server_rootpw }}
changed_when: False
register: root_password

- name: Copy the slapd.conf configuration file for Redhat
Expand All @@ -28,6 +31,12 @@
notify:
- restart slapd

- name: Copy the /etc/sysconfig/slapd configuration file for Redhat
template: src=sysconfig.slapd.j2 dest=/etc/sysconfig/slapd
when: ansible_os_family == "RedHat"
notify:
- restart slapd

- name: Copy the slapd.conf configuration file
template: src=slapd.conf_ubuntu.j2 dest={{ openldap_server_app_path }}/slapd.conf
when: ansible_os_family == "Debian"
Expand Down
1 change: 1 addition & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
- include: install_ldap.yml
- include: configure_ldap.yml
- include: add_users.yml
4 changes: 0 additions & 4 deletions templates/domain.ldif

This file was deleted.

14 changes: 14 additions & 0 deletions templates/domain.ldif.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% set ldap_domain = 'dc={},dc={}'.format(openldap_server_domain_name.split('.')[0],openldap_server_domain_name.split('.')[1]) %}
dn: {{ ldap_domain }}
objectClass: domain
dc: {{ openldap_server_domain_name.split('.')[0] }}

dn: ou=Users,{{ ldap_domain }}
ou: Users
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,{{ ldap_domain }}
ou: Group
objectClass: top
objectClass: organizationalUnit
7 changes: 4 additions & 3 deletions templates/ldap.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
# This file should be world readable but not world writable.

BASE dc={{ openldap_server_domain_name.split('.')[0] }},dc={{ openldap_server_domain_name.split('.')[1] }}
{% if openldap_server_enable_ssl %}
{% if openldap_server_enable_ipc %}
URI ldapi:///
{% elif openldap_server_enable_ssl %}
URI ldaps://localhost
TLS_REQCERT never
{% endif %}
{% if not openldap_server_enable_ssl %}
{% else %}
URI ldap://localhost
{% endif %}

Expand Down
1 change: 1 addition & 0 deletions templates/sysconfig.slapd.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SLAPD_URLS="{% if openldap_server_enable_plain %}ldap:/// {% endif %}{% if openldap_server_enable_ssl %}ldaps:/// {% endif %}{% if openldap_server_enable_ipc %}ldapi:/// {% endif %}"
40 changes: 40 additions & 0 deletions templates/users.ldif.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{% set ldap_domain = 'dc={},dc={}'.format(openldap_server_domain_name.split('.')[0],openldap_server_domain_name.split('.')[1]) %}
{% if openldap_server_users %}
{%- for group, users in openldap_server_users.items() -%}
{% set guid_loop = loop %}
dn: cn={{ group }},ou=Group,{{ ldap_domain }}
objectClass: posixGroup
cn: {{ group }}
gidNumber: {{ 10000 + guid_loop.index }}
{% for user in users.keys() %}
memberUid: {{ user }}
{% endfor %}

{% for user, config in users.items() %}
dn: uid={{ user }},ou=Users,{{ ldap_domain }}
{% if 'fullname' in config %}
cn: {{ config['fullname'] }}
{% endif %}
{% if 'givenname' in config %}
givenName: {{ config['givenname'] }}
{% endif %}
{% if 'surname' in config %}
sn: {{ config['surname'] }}
{% endif %}
userPassword: {{ config['password'] }}
mail: {{ config['email'] }}
loginShell: {{ config.get('shell', '/bin/bash') }}
homeDirectory: {{ config.get('home', '/home/{}'.format(user)) }}
{% if 'phone' in config %}
telephoneNumber: {{ config['phone'] }}
{% endif %}
uidNumber: {{ 10000 + loop.index + guid_loop.index * 100 }}
gidNumber: {{ 10000 + guid_loop.index }}
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount

{% endfor %}

{% endfor %}
{% endif %}
1 change: 0 additions & 1 deletion vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---

env:
RUNLEVEL: 1