2019-08-27 17:45:08 -03:00

80 lines
2.1 KiB
YAML

---
# Playbook for setting up a Docker container with openLDAP.
# A port binding to the Docker host is required for setting
# up domains and replication.
- name: instalar dependencias
apt:
name:
- ldap-utils
- build-essential
- libldap2-dev
- libsasl2-dev
state: present
- name: instalar dependencias
pip: name=python-ldap state=present
- name: "Create directory for building image"
file:
path: "/tmp/build.openldap-image"
state: "directory"
- name: "Copy required files"
copy:
src: "{{ item }}"
dest: "/tmp/build.openldap-image/"
loop:
- "Dockerfile"
- "entrypoint.sh"
register: cpfiles
- name: "Build openldap image"
docker_image:
path: "/tmp/build.openldap-image"
name: "{{ openldap_image_name }}"
# force_source on Ansible 2.8
force: "{{ cpfiles is changed }}"
register: imgbuild
- name: "Start openldap container"
docker_container:
image: "{{ openldap_image_name }}"
name: "{{ openldap_container_name }}"
volumes:
- "{{ openldap_volume_config }}:/etc/ldap"
- "{{ openldap_volume_data }}:/var/lib/ldap"
- "{{ openldap_volume_backup }}:/var/backups/ldap"
env:
OPENLDAP_ADMIN_PASSWORD: "{{ openldap_admin_password }}"
OPENLDAP_SCHEMAS: "{{ openldap_schemas | join (' ') }}"
OPENLDAP_ENABLE_MEMBEROF: "{{ 'true' if openldap_enable_memberof else 'false' }}"
networks:
- name: "{{ docker_network_name }}"
ports:
- "{{ openldap_bind_host }}:{{ openldap_bind_port }}:389"
recreate: "{{ imgbuild is changed }}"
- name: Wait for server
ldap:
state: search
dn: cn=config
filter: "(objectclass=*)"
bind_dn: cn=admin,cn=config
bind_pw: "{{ openldap_admin_password }}"
server_uri: ldap://localhost:{{ openldap_bind_port }}
retries: 20
- include_tasks: provider.yml
when: openldap_provider == True
- include_tasks: domain.yml
loop: "{{ openldap_domains }}"
loop_control:
loop_var: domain
- set_fact:
ldap_uri: "{{ lookup( 'vars', 'ldap_uri',
default='ldap://'+openldap_container_name+':389') }}"