solo configurar container

This commit is contained in:
Mauro Torrez 2019-09-26 00:07:09 -03:00
parent 5dec42e98a
commit 7e85c30cc2
2 changed files with 41 additions and 105 deletions

View File

@ -1,83 +1,71 @@
---
# Indica si el host es provider en un esquema de replicación
openldap_provider: no
# # Indica si el host es provider en un esquema de replicación
# openldap_provider: no
# Nombre del provider para un host consumer
openldap_provider_host: null
# # Nombre del provider para un host consumer
# openldap_provider_host: null
# Indica si el host es esclavo en un esquema de replicación
openldap_consumer: no
# # Indica si el host es esclavo en un esquema de replicación
# openldap_consumer: no
# Clave del usuario cn=admin,cn=config
openldap_config_password: password
# CN y clave del usuario administrador del dominio
openldap_admin_cn: admin
openldap_admin_password: password
# DN del administrador de la base cn=accesslog (provider)
openldap_backup_dir: "/srv/backups/ldap"
openldap_backup_keep: 200
# # DN del administrador de la base cn=accesslog (provider)
# openldap_backup_dir: "/srv/backups/ldap"
# openldap_backup_keep: 200
# DN del administrador de la base cn=accesslog (provider)
openldap_accesslog_admin_dn: cn=admin,dc=example,dc=com
# # DN del administrador de la base cn=accesslog (provider)
# openldap_accesslog_admin_dn: cn=admin,dc=example,dc=com
# DN, clave y search base del replicador
openldap_replicator_dn: cn=replicator,dc=example,dc=com
openldap_replicator_password: password
openldap_replicator_base: dc=example,dc=com
# # DN, clave y search base del replicador
# openldap_replicator_dn: cn=replicator,dc=example,dc=com
# openldap_replicator_password: password
# openldap_replicator_base: dc=example,dc=com
# port in docker HOST to bind ldap service
openldap_bind_port: 389
openldap_bind_host: 127.0.0.1
# docker image name
openldap_image_name: "i-openldap"
openldap_image_name: eumau/openldap
# docker container name
openldap_container_name: "c-openldap"
openldap_container_name: openldap
# docker volume names
openldap_volume_config: "ldap_config"
openldap_volume_data: "ldap_data"
openldap_volume_backup: "ldap_backup"
# permisos de acceso por defecto
openldap_default_db_access:
# permisos de acceso
openldap_domain_access:
- "{0}to attrs=userPassword by self write by anonymous auth by * none"
- "{1}to attrs=shadowLastChange by self write by * read"
- "{2}to * by * read"
# indices por defecto
openldap_default_db_index:
# indices del dominio
openldap_domain_index:
- "cn,uid eq"
- "member,memberUid eq"
- "objectClass eq"
- "uidNumber,gidNumber eq"
# limites por defecto: ninguno
openldap_default_db_limits: []
# limites del dominio
openldap_domain_limits: []
# OUs creadas por defecto dentro de cada dominio
openldap_default_domain_ous:
openldap_domain_ous:
- Alias
- Group
- People
# Dominios a configurar:
# Cada dominio se especifica en un diccionario con las siguientes claves:
# - name: nombre del dominio (ejemplo.com) (obligatorio)
# a partir de este nombre se crea la organizacion dc=ejemplo,dc=com
# - admincn: nombre cn del administrador (defecto=admin)
# este cn deriva en un DN cn=admin,dc=ejemplo,dc=com
# - adminpw: clave del administrador de este dominio (defecto=password)
# SE RECOMIENDA CAMBIAR ESTE VALOR, O SETEAR ID RATTIC
# - access: lista con permisos de acceso. por defecto es la lista definida
# en la variable openldap_default_db_access
# - ou: unidades organizacionales del dominio, defecto openldap_default_domain_ous
openldap_domains: []
# - name: unl.edu.ar
# - name: rectorado.unl.edu.ar
# - name: servicios.unl.edu.ar
# Directorio donde crear la base cn=accesslog
openldap_accesslog_dir: "/var/lib/ldap/accesslog"
# Dominio
openldap_domain: example.com
# esquemas a cargar
openldap_schemas:

View File

@ -1,43 +1,5 @@
---
# 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"
- name: Start openldap container
docker_container:
image: "{{ openldap_image_name }}"
name: "{{ openldap_container_name }}"
@ -46,9 +8,16 @@
- "{{ 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' }}"
LDAP_CONFIG_PASSWORD: "{{ openldap_config_password }}"
LDAP_ADMIN_CN: "{{ openldap_admin_cn }}"
LDAP_ADMIN_PASSWORD: "{{ openldap_admin_password }}"
LDAP_MEMBEROF: "{{ 'true' if openldap_enable_memberof else 'false' }}"
LDAP_DOMAIN: "{{ openldap_domain }}"
LDAP_DOMAIN_ACCESS: "{{ openldap_domain_access | join('\\n') }}"
LDAP_DOMAIN_INDEX: "{{ openldap_domain_index | join('\\n') }}"
LDAP_DOMAIN_LIMITS: "{{ openldap_domain_limits | join('\\n') }}"
LDAP_DOMAIN_OUS: "{{ openldap_domain_ous | join(' ') }}"
LDAP_SCHEMAS: "{{ openldap_schemas | join (' ') }}"
networks:
- name: "{{ docker_network_name }}"
@ -56,27 +25,6 @@
- "{{ 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 }}
register: res
until: res is not failed
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_container: "{{ lookup( 'vars', 'openldap_container_name') }}"
ldap_port: "389"