Metadata-Version: 2.1
Name: ansible-filters-ldif
Version: 0.0.11
Summary: Ansible filter to read or write LDIF.
Home-page: https://github.com/atterdag/ansible-filters-ldif
Author: Valdemar Lemche
Author-email: valdmar@lemche.net
License: GPLv3+
Project-URL: Bug Tracker, https://github.com/atterdag/ansible-filters-ldif/issues
Project-URL: Documentation, https://github.com/atterdag/ansible-filters-ldif/blob/master/README.rst
Project-URL: Source Code, https://github.com/atterdag/ansible-filters-ldif
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: AUTHORS

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