Ansible LDIF filter
===================
Ansible filter to read or write LDIF.
.. image:: https://img.shields.io/pypi/v/ansible-filters-ldif.svg
:alt: Latest version
:target: https://pypi.python.org/pypi/ansible-filters-ldif/
.. image:: https://sonarcloud.io/api/project_badges/measure?project=atterdag_ansible-filters-ldif&metric=alert_status
:alt: SonarCloud
:target: https://sonarcloud.io/summary/new_code?id=atterdag_ansible-filters-ldif
.. image:: https://app.travis-ci.com/atterdag/ansible-filters-ldif.svg?branch=master
:alt: Travis CI
:target: https://app.travis-ci.com/atterdag/ansible-filters-ldif
.. image:: https://img.shields.io/badge/License-GPLv3-yellow.svg
:alt: License: GPLv3
:target: https://opensource.org/licenses/GPL-3.0
Install this Ansible Filter:
* via ``pip``:
::
pip install ansible-filters-ldif
* via ``ansible-galaxy``:
::
ansible-galaxy install 'git+https://github.com/atterdag/ansible-filters-ldif.git'
..
Ansible filters always runs on localhost.
Examples
--------
Convert dictionary to LDIF
.. code:: yaml
---
- name: Create dictionary with entries
set_fact:
dictionary:
- - dc=example,dc=com
- dc:
- example
description:
- This is a line longer than 79 characters, so LDIF breaks it up over multiple lines
o:
- example.com
objectClass:
- dcObject
- organization
- - ou=people,dc=example,dc=com
- objectClass:
- organizationalUnit
ou:
- people
- - cn=Jane Doe,ou=people,dc=example,dc=com
- cn:
- Jane Doe
mail:
- jane.doe@example.com
objectClass:
- inetOrgPerson
sn:
- Doe
- - cn=John Doe,ou=people,dc=example,dc=com
- cn:
- John Doe
mail:
- john.doe@example.com
objectClass:
- inetOrgPerson
sn:
- Doe
- - ou=groups,dc=example,dc=com
- objectClass:
- organizationalUnit
ou:
- groups
- - cn=users,ou=groups,dc=example,dc=com
- cn:
- users
member:
- cn=Jane Doe,ou=people,dc=example,dc=com
- cn=John Doe,ou=people,dc=example,dc=com
objectClass:
- groupOfNames
- name: "Convert dictionary to LDIF while writing it to /tmp/test.ldif using 'to_ldif' filter"
copy:
content: "{{ dictionary | to_ldif }}"
dest: "/tmp/test.ldif"
Convert LDIF to JSON
.. code:: yaml
---
- name: "Create multi-line string variable with LDIF data"
set_fact:
ldif: |
dn: dc=example,dc=com
dc: example
description: This is one line which is longer than
79 characters, so LDIF breaks it up over multiple lines
objectClass: dcObject
objectClass: organization
o: example.com
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people
dn: cn=Jane Doe,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn: Jane Doe
sn: Doe
mail: jane.doe@example.com
dn: cn=John Doe,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn: John Doe
sn: Doe
mail: john.doe@example.com
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
dn: cn=users,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: users
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=John Doe,ou=people,dc=example,dc=com
- name: "Convert string to JSON while writing it to /tmp/test.json using 'from_ldif' filter"
copy:
content: "{{ (ldif | from_ldif) | to_nice_json }}"
dest: "/tmp/test.json"
Build dependencies
------------------
Install the following OS development packages first.
::
sudo apt-get install libssl-dev libldap2-dev libsasl2-dev python2-dev python3-dev
mkvirtualenv --python=/usr/bin/python3 python3-development
pip install --requirement requirements.txt
gem install travis fry
License
-------
`GPLv3 <https://opensource.org/licenses/GPL-3.0>`_.