Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/atterdag/ansible-filters-ldif

Ansible filter to read or write LDIF
https://github.com/atterdag/ansible-filters-ldif

ansible ansible-modules ldif pypi pypi-package python

Last synced: about 1 month ago
JSON representation

Ansible filter to read or write LDIF

Awesome Lists containing this project

README

        

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:
- [email protected]
objectClass:
- inetOrgPerson
sn:
- Doe
- - cn=John Doe,ou=people,dc=example,dc=com
- cn:
- John Doe
mail:
- [email protected]
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: [email protected]

dn: cn=John Doe,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn: John Doe
sn: Doe
mail: [email protected]

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 `_.