Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/AnalogJ/lexicon

Manipulate DNS records on various DNS providers in a standardized way.
https://github.com/AnalogJ/lexicon

cli clouddns cloudflare cloudxns constellix digitalocean dns dns-provider dns-service dnsimple dnspod gandi godaddy letsencrypt lexicon pypi ssl-certificate transip vultr yandex

Last synced: about 2 months ago
JSON representation

Manipulate DNS records on various DNS providers in a standardized way.

Awesome Lists containing this project

README

        

============
|logo_named|
============

Manipulate DNS records on various DNS providers in a standardized/agnostic way.

|build_status| |coverage_status| |docker_pulls| |pypy_version| |pypy_python_support| |github_license|

.. |logo_named| image:: https://raw.githubusercontent.com/AnalogJ/lexicon/master/docs/images/logo_named.svg
:alt: Lexicon
.. |build_status| image:: https://img.shields.io/azure-devops/build/AnalogJ/8425f0f5-0178-4d8c-b1fd-11db7e11b6a7/1/master
:target: https://dev.azure.com/AnalogJ/lexicon/_build/latest?definitionId=1&branchName=master
.. |coverage_status| image:: https://img.shields.io/coverallsCoverage/github/AnalogJ/lexicon
:target: https://coveralls.io/github/AnalogJ/lexicon?branch=master
.. |docker_pulls| image:: https://img.shields.io/docker/pulls/analogj/lexicon
:target: https://hub.docker.com/r/analogj/lexicon
.. |pypy_version| image:: https://img.shields.io/pypi/v/dns-lexicon
:target: https://pypi.python.org/pypi/dns-lexicon
.. |pypy_python_support| image:: https://img.shields.io/pypi/pyversions/dns-lexicon
:target: https://pypi.python.org/pypi/dns-lexicon
.. |github_license| image:: https://img.shields.io/github/license/AnalogJ/lexicon
:target: https://github.com/AnalogJ/lexicon/blob/master/LICENSE

.. contents:: Table of Contents
:local:

.. tag: intro-begin

Why using Lexicon?
==================

Lexicon provides a way to manipulate DNS records on multiple DNS providers in a standardized way.

Lexicon can be used as:

- a CLI tool:

.. code-block:: bash

# Create a TXT entry in domain.net zone hosted by CloudFlare
lexicon cloudflare create domain.net TXT --name foo --content bar

- or a Python library:

.. code-block:: python

# Create a TXT entry in domain.net zone hosted by CloudFlare
from lexicon.client import Client
from lexicon.config import ConfigResolver

config = ConfigResolver().with_env().with_dict({
"provider_name" : "cloudflare",
"domain": "domain.net",
})

with Client(config) as operations:
operations.create_record("TXT", "foo", "bar")

Lexicon was designed to be used in automation, specifically letsencrypt.

* `Generating Intranet & Private Network SSL Certificates using Lets Encrypt & Lexicon `_

Supported providers
===================

Only DNS providers who have an API can be supported by `lexicon`.

The current supported providers are:

..
This section is autogenerated and should not been modified directly.
However you should add a reference to the provider API in the list below,
using the following syntax: .. _provider: URL_API

.. tag: providers-table-begin

+-----------------+-----------------+-----------------+-----------------+-----------------+
| aliyun_ | aurora_ | azure_ | cloudflare_ | cloudns_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| cloudxns_ | conoha_ | constellix_ | ddns_ | digitalocean_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| dinahosting_ | directadmin_ | dnsimple_ | dnsmadeeasy_ | dnspark_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| dnspod_ | dnsservices_ | dreamhost_ | duckdns_ | dynu_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| easydns_ | easyname_ | euserv_ | exoscale_ | flexibleengine_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| gandi_ | gehirn_ | glesys_ | godaddy_ | googleclouddns_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| gransy_ | gratisdns_ | henet_ | hetzner_ | hostingde_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| hover_ | infoblox_ | infomaniak_ | internetbs_ | inwx_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| joker_ | linode_ | linode4_ | localzone_ | luadns_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| memset_ | misaka_ | mythicbeasts_ | namecheap_ | namecom_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| namesilo_ | netcup_ | nfsn_ | njalla_ | nsone_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| oci_ | onapp_ | online_ | ovh_ | plesk_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| pointhq_ | porkbun_ | powerdns_ | rackspace_ | rage4_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| rcodezero_ | route53_ | safedns_ | sakuracloud_ | softlayer_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| timeweb_ | transip_ | ultradns_ | valuedomain_ | vercel_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| vultr_ | webgo_ | wedos_ | yandex_ | yandexcloud_ |
+-----------------+-----------------+-----------------+-----------------+-----------------+
| zeit_ | zilore_ | zonomi_ | | |
+-----------------+-----------------+-----------------+-----------------+-----------------+

.. tag: providers-table-end

.. _aliyun: https://help.aliyun.com/document_detail/29739.html
.. _aurora: https://www.pcextreme.com/aurora/dns
.. _azure: https://docs.microsoft.com/en-us/rest/api/dns/
.. _cloudflare: https://api.cloudflare.com/#endpoints
.. _cloudns: https://www.cloudns.net/wiki/article/56/
.. _cloudxns: https://www.cloudxns.net/support/lists/cid/17.html
.. _conoha: https://www.conoha.jp/docs/
.. _constellix: https://api-docs.constellix.com/?version=latest
.. _ddns: https://www.rfc-editor.org/rfc/rfc2136
.. _digitalocean: https://developers.digitalocean.com/documentation/v2/#create-a-new-domain
.. _dinahosting: https://en.dinahosting.com/api
.. _directadmin: https://www.directadmin.com/features.php?id=504
.. _dnsimple: https://developer.dnsimple.com/v2/
.. _dnsmadeeasy: https://api-docs.dnsmadeeasy.com/?version=latest
.. _dnspark: https://dnspark.zendesk.com/entries/31210577-rest-api-dns-documentation
.. _dnspod: https://support.dnspod.cn/support/api
.. _dnsservices: https://dns.services/userapi
.. _dreamhost: https://help.dreamhost.com/hc/en-us/articles/217560167-api_overview
.. _duckdns: https://www.duckdns.org/spec.jsp
.. _dynu: https://www.dynu.com/support/api
.. _easydns: http://docs.sandbox.rest.easydns.net/
.. _easyname: https://www.easyname.com/en
.. _euserv: https://support.euserv.com/api-doc/
.. _exoscale: https://community.exoscale.com/documentation/dns/api/
.. _flexibleengine: https://registry.terraform.io/providers/FlexibleEngineCloud/flexibleengine/latest/docs/data-sources/dns_zone_v2
.. _gandi: http://doc.livedns.gandi.net/
.. _gehirn: https://support.gehirn.jp/apidocs/gis/dns/index.html
.. _glesys: https://github.com/glesys/api/wiki/
.. _godaddy: https://developer.godaddy.com/getstarted#access
.. _googleclouddns: https://cloud.google.com/dns/api/v1/
.. _gransy: https://subreg.cz/manual/
.. _gratisdns:
.. _henet: https://dns.he.net/
.. _hetzner: https://dns.hetzner.com/api-docs/
.. _hostingde:
.. _hover: https://www.hover.com/
.. _infoblox: https://docs.infoblox.com/display/ilp/infoblox+documentation+portal
.. _infomaniak: https://www.infomaniak.com
.. _internetbs: https://internetbs.net/resellerregistrardomainnameapi
.. _inwx: https://www.inwx.de/en/offer/api
.. _joker: https://joker.com/faq/index.php?action=show&cat=39
.. _linode: https://www.linode.com/api/dns
.. _linode4: https://developers.linode.com/api/docs/v4#tag/domains
.. _localzone:
.. _luadns: http://www.luadns.com/api.html
.. _memset: https://www.memset.com/apidocs/methods_dns.html
.. _misaka: https://misaka.io/dns/
.. _mythicbeasts: https://www.mythic-beasts.com/support/api/dnsv2
.. _namecheap: https://www.namecheap.com/support/api/methods.aspx
.. _namecom: https://www.name.com/api-docs
.. _namesilo: https://www.namesilo.com/api_reference.php
.. _netcup: https://ccp.netcup.net/run/webservice/servers/endpoint.php
.. _nfsn:
.. _njalla: https://njal.la/api/
.. _nsone: https://ns1.com/api/
.. _oci: https://docs.oracle.com/en-us/iaas/Content/DNS/home.htm
.. _onapp: https://docs.onapp.com/display/55api/onapp+5.5+api+guide
.. _online:
.. _ovh: https://api.ovh.com/
.. _plesk: https://docs.plesk.com/en-us/onyx/api-rpc/about-xml-api.28709/
.. _pointhq: https://pointhq.com/api/docs
.. _porkbun: https://kb.porkbun.com/article/190-getting-started-with-the-porkbun-dns-api
.. _powerdns: https://doc.powerdns.com/md/httpapi/api_spec/
.. _rackspace: https://developer.rackspace.com/docs/cloud-dns/v1/developer-guide/
.. _rage4: https://gbshouse.uservoice.com/knowledgebase/articles/109834-rage4-dns-developers-api
.. _rcodezero: https://my.rcodezero.at/api-doc
.. _route53: https://docs.aws.amazon.com/route53/latest/apireference/welcome.html
.. _safedns: https://developers.ukfast.io/documentation/safedns
.. _sakuracloud: https://developer.sakura.ad.jp/cloud/api/1.1/
.. _softlayer: https://sldn.softlayer.com/article/rest#http_request_types
.. _transip: https://api.transip.nl/rest/docs.html
.. _ultradns: https://ultra-portalstatic.ultradns.com/static/docs/rest-api_user_guide.pdf
.. _valuedomain: https://www.value-domain.com/service/api/
.. _vercel: https://vercel.com/docs/api#endpoints/dns
.. _vultr: https://www.vultr.com/api/#tag/dns
.. _webgo: https://www.webgo.de/
.. _wedos: https://www.wedos.com/cs/
.. _yandex: https://yandex.com/dev/domain/doc/reference/dns-add.html
.. _yandexcloud: https://cloud.yandex.com/en/docs/dns/api-ref/DnsZone/
.. _zeit:
.. _zilore: https://zilore.com/en/help/api
.. _zonomi: http://zonomi.com/app/dns/dyndns.jsp

.. tag: intro-end

Documentation
=============

Online documentation (user guide, configuration reference) is available in the `Lexicon documentation`_.

For a quick start, please have a look in particular at the `User guide`_.

.. _Lexicon documentation: https://dns-lexicon.readthedocs.io
.. _User guide: https://dns-lexicon.readthedocs.io/en/latest/user_guide.html

Contributing
============

If you want to help in the Lexicon development, you are welcome!

Please have a look at the `Developer guide`_ page to know how to start.

.. _Developer guide: https://dns-lexicon.readthedocs.io/en/latest/developer_guide.html

Licensing
=========

- MIT
- Logo_: transform by Mike Rowe from the Noun Project

.. _Logo: https://thenounproject.com/term/transform/397964