{ "info": { "author": "Paul Greenberg", "author_email": "greenpau@outlook.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Topic :: System :: Networking", "Topic :: System :: Networking :: Monitoring", "Topic :: System :: Systems Administration", "Topic :: Utilities" ], "description": "Network Discovery and Management Toolkit\n========================================\n\n|GitHub version| |CircleCI| |PyPI version| |Documentation Status|\n\nNetwork Discovery and Management Toolkit (``ndmtk``) makes Ansible\n\"work\" for both Traditional and Software-Defined Network (SDN) network\nmanagement.\n\nTable of Contents\n-----------------\n\n1. `Overview `__\n2. `Workflow\n Diagram `__\n3. `Getting\n Started `__\n4. `Documentation `__\n5. `Questions `__\n6. `Contribution `__\n\nOverview\n--------\n\nThe future of network management lies in the area of Artificial\nIntelligence. Any network-enabled device will be able to build\nconnectivity to a remote peer on-demand, without human intervention. The\nrestraint on that ability are the AI-enabled systems acting as\ngatekeepers. AI is impossible without ongoing data collection, data\nanalysis, probing, and modeling. As such, networks of the future need\ntools to perform the above tasks.\n\nThis toolkit is designed to accomplish the data collection piece of the\nAI puzzle. Specifically, the toolkit is designed to:\n\n- discover data on network devices and capture the entirety of\n available data\n- configure network devices via SSH, telnet, console, or terminal\n server\n- collect, analyze, and store the data via command-line interactions;\n it performs data analysisn and, if necessary, it performs additional\n data collection and/or device configuration tasks.\n\nThe intended audience of this toolkit are system and network engineers\nand designers, as well as the researchers dealing with AI.\n\nThe toolkit is delivered in a form of an Ansible plugin. However, it\ncould work well with Chef, or any other orchestration tool. The reason\nAnsible became a framework of choice is its modularity. The toolkit\nitself is modular. It allows extended existing functionality. For\nexample, the plugin does not blindly run pre-defined commands. Rather,\nit first collects all of the commands forming the understanding of the\nfunction of a particular device in a network. Once the plugin receives\nthe data, it runs it through its algorithms and determines whether there\nare any additional command required to further gather data. That process\ncontinues until the algorithms determine that the collection is\ncomplete.\n\nImportantly, once the plugin completes its tasks it produces a number of\nreports in JSON, YAML, and JUnit formats. These reports provide a map of\nwhat was done, where the collected data reside, and what that data is.\n\nThe plugin has no required arguments and parameters, because there are a\nnumber of default commands available for various operating systems, e.g.\nCisco Nexus OS, Arista EOS, Linux, etc.\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\nWorkflow Diagram\n----------------\n\n|Plugin Workflow|\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\nGetting Started\n---------------\n\nFirst, a user installs ``ndmtk`` with ``pip``:\n\n::\n\n pip install ndmtk\n\nSecond, the user creates Ansible playbook, e.g.\n``playbooks/collect_all.yml``:\n\n::\n\n ---\n - name: generic data collection\n hosts:\n - ny-fw01\n - ny-sw01\n - ny-sw02\n gather_facts: no\n tasks:\n - name: data collection from three network devices\n action: ndmtk output=\"/tmp/ndmtk-%Y%m%d%H%M%S\" debug=no no_host_key_check=yes on_error=continue\n\nThe above playbook collect the data from three devices: ``ny-fw01``,\n``ny-sw01``, and ``ny-sw02``.\n\nThird, the user must create a hosts file:\n\n::\n\n controller ansible_connection=local\n\n [test:children]\n cisco-asa-firewalls\n arista-eos-switches\n\n [arista-eos-switches]\n ny-sw01 os=arista_eos host_overwrite=localhost host_port=8224\n ny-sw02 os=arista_eos host_overwrite=localhost host_port=8225\n\n [cisco-asa-firewalls]\n ny-fw01 os=cisco_asa host_overwrite=192.168.1.1\n\n [all:vars]\n ansible_connection=local\n\nThe switches are Arista vEOS switches running on top of Virtual Box. The\nfirewall is a physical Cisco ASA 5505.\n\nAdditionally, the user must create Ansible configuration file in either:\n\n- ``.ansible.cfg`` in the user's home directory, or\n- ``ansible.cfg`` in the user's current directory\n\nThe configuration file contains the following directives:\n\n::\n\n [defaults]\n inventory = ./hosts\n forks = 100\n local_tmp = $HOME/.ansible/tmp\n retry_files_enabled = True\n retry_files_save_path = $HOME/.ansible/retries/\n log_path = $HOME/.ansible/log/ansible.log\n transport = local\n\nFourth, the user must create Ansible Vault ``~/.ansible.vault.yml`` and\nstructure it according to ``ndmtk``'s documentation. Then, for\nconvinience, the user may store the password to the vault in\n``~/.ansible.vault.key`` plain-text file.\n\nFor example ``.ansible.vault.key`` has a single line for the password:\n\n::\n\n NX23nKz!\n\nWhile the vault itself has the following content:\n\n::\n\n --\n credentials:\n - regex: ny-fw0[1-9]\n username: admin\n password: 'NX23nKz!'\n password_enable: '3nKz!NX2'\n priority: 1\n description: NY-FW01 password\n - default: yes\n username: greenpau\n password: 'My#DefaultPass'\n password_enable: 'Enabled#By$Default'\n priority: 1\n description: my default password\n\nThe toolkit accesses ``ny-fw01`` with the first set of credentials\nbecause its name matches the regular expression in that set. For the\nwitches, the later, default password is used.\n\nAt any point of time, the user could edit or view the vault using the\nfollowing commands:\n\n::\n\n ansible-vault edit ~/.ansible.vault.yml --vault-password ~/.ansible.vault.key\n ansible-vault view ~/.ansible.vault.yml --vault-password ~/.ansible.vault.key\n\nFinally, the user runs the playbook:\n\n::\n\n ansible-playbook playbooks/collect_all.yml\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\nDocumentation\n-------------\n\nPlease read the toolkit's documentation at `Read the\nDocs `__ and review the\n`demo `__\ndirectory containing sample configuration files.\n\n- `User\n Guide `__\n- `Rules\n Engine `__\n- `Reports and Structured\n Data `__\n- `Access Credentials\n Management `__\n- `Frequently Asked\n Questions `__\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\nQuestions\n---------\n\nPlease open issues and ask questions in `Github\nIssues `__.\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\nContribution\n------------\n\nPlease contribute using the following\n`Guidelines `__.\n\n`Back to Top <#table-of-contents>`__\n\n--------------\n\n.. |GitHub version| image:: https://badge.fury.io/gh/greenpau%2Fndmtk.svg\n :target: https://badge.fury.io/gh/greenpau%2Fndmtk\n.. |CircleCI| image:: https://circleci.com/gh/greenpau/ndmtk.svg?style=svg\n :target: https://circleci.com/gh/greenpau/ndmtk\n.. |PyPI version| image:: https://badge.fury.io/py/ndmtk.png\n :target: https://badge.fury.io/py/ndmtk\n.. |Documentation Status| image:: https://readthedocs.org/projects/ndmtk/badge/?version=latest\n :target: http://ndmtk.readthedocs.io/\n.. |Plugin Workflow| image:: https://raw.githubusercontent.com/greenpau/ndmtk/master/docs/_static/images/ndmtk_pypi.png\n :target: https://raw.githubusercontent.com/greenpau/ndmtk/master/docs/_static/images/ndmtk_pypi.png", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/greenpau/ndmtk/archive/master.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/greenpau/ndmtk", "keywords": "ansible,ansible plugin,network,ssh,telnet,console,automation,network automation,network discovery", "license": "OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "maintainer": "", "maintainer_email": "", "name": "ndmtk", "package_url": "https://pypi.org/project/ndmtk/", "platform": "any", "project_url": "https://pypi.org/project/ndmtk/", "project_urls": { "Download": "https://github.com/greenpau/ndmtk/archive/master.zip", "Homepage": "https://github.com/greenpau/ndmtk" }, "release_url": "https://pypi.org/project/ndmtk/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Network Discovery and Management Toolkit packaged as Ansible Plugin", "version": "0.2.0" }, "last_serial": 4021618, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "be55642bd241516e5547a8ef13aad46e", "sha256": "467f42590ecc4049e5511825e04108e91d138e84f441ac411eab9f2a6af9ffb7" }, "downloads": -1, "filename": "ndmtk-0.2.0.tar.gz", "has_sig": false, "md5_digest": "be55642bd241516e5547a8ef13aad46e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71042, "upload_time": "2018-07-02T04:35:36", "url": "https://files.pythonhosted.org/packages/5d/12/649225c25b943b495e4b4c890542699fd68cbdc678ae5abbc1d4d883e35f/ndmtk-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "be55642bd241516e5547a8ef13aad46e", "sha256": "467f42590ecc4049e5511825e04108e91d138e84f441ac411eab9f2a6af9ffb7" }, "downloads": -1, "filename": "ndmtk-0.2.0.tar.gz", "has_sig": false, "md5_digest": "be55642bd241516e5547a8ef13aad46e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71042, "upload_time": "2018-07-02T04:35:36", "url": "https://files.pythonhosted.org/packages/5d/12/649225c25b943b495e4b4c890542699fd68cbdc678ae5abbc1d4d883e35f/ndmtk-0.2.0.tar.gz" } ] }