--- # 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 objectClass: olcDatabaseConfig filter: "(olcSuffix=*)" 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') }}"