{ "info": { "author": "Fr\u00e9d\u00e9ric de ZORZI", "author_email": "f@idez.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "cfg : git based config files manager and installer\n==================================================\n\nThis command line tool helps you to keep your customized system configuration files in a\ngit repository.\n\nInstallation\n------------\n\nIn addition of python3 and related modules, cfg depends of these binaries:\n\n- git\n- colordiff\n\nLatest release could be installed via::\n\n pip3 install cfg-manager\n\nOr frome these sources::\n\n sudo setup.py install\n\nQuickstart\n----------\n\nA *cfg* based project is basically composed of:\n\n- a *git* repository with a ``src`` directory where your customized configuration files\n are located, for example::\n\n src/etc/aliases\n src/etc/apache2/ports.conf\n ...\n\n- a ``cfg_params.py`` file with at least the *TARGET* parameter set, for example::\n\n TARGET = \"/\"\n\nOnce *TARGET* parameter is configured, you can add existing config file with::\n\n cfg add /etc/postfix/main.cf\n\nThe previous command will create ``src/etc/postfix/main.cf`` file and commit it to the\nrepository. Don't forget to ``git push`` your work.\n\nTo see if your ``src`` and target directory differs, do a::\n\n cfg check\n\nIt will compare the two directories and eventually output differences::\n\n checking content...\n /etc/aliases :\n 2a3\n > root: f@idez.net\n\nAnd then::\n\n cfg install\n\nWill install the modified files, producing the same output. Original dest files are\nbacked up with ``.old`` extension.\n\nTemplate files\n--------------\n\nFor multiple environments usage (duplicated servers, sub-configurations), a pattern\nsubstitution system is provided:\n\nFor example let's say you have in your ``cfg_params.py``:\n\n.. code-block:: python\n\n import socket\n import sys\n HOSTNAME = socket.gethostname()\n if HOSTNAME == \"master-kf\":\n TARGET = \"/\"\n HOST_IP = \"5.223.34.110\"\n PEER_IP = \"5.68.252.23\"\n elif HOSTNAME == \"backup-kf\":\n TARGET = \"/\"\n HOST_IP = \"5.68.252.23\"\n PEER_IP = \"5.223.34.110\"\n elif HOSTNAME == \"bic\":\n TARGET = \"/home/fredz/tmp/dst_cfg\"\n HOST_IP = \"127.0.0.1\"\n PEER_IP = \"666.666.666.666\"\n else:\n print(\"cfg_params.py : uknown host :\", HOSTNAME)\n sys.exit(0)\n\nIf you want to use these parameters in one of your config files, let's say ``/etc/keepalived/keepalived.conf``:\n\n1. add it to your repo with ``cfg add``,\n2. rename it to ``/etc/keepalived/cfg.keepalived.conf``\n3. use ``cfg[PATTERN]`` in your file:\n\n .. code-block:: squid\n\n vrrp_instance VI_1 {\n state BACKUP\n interface ens3\n unicast_src_ip =cfg[HOST_IP]\n unicast_peer {\n =cfg[PEER_IP]\n }\n\n virtual_router_id 101\n priority 101\n advert_int 4\n nopreempt\n virtual_ipaddress {\n 666.999.999.666\n }\n notify /usr/local/bin/ovh_ip_up.py\n }\n\nNotes:\n\n- As shown in previous example, you can use python code to face various environment\n configurations.\n- **Only uppercase parameters names are exported**.\n\nPer-host files\n--------------\n\nWhen configuration files are too different, you can provide host-dedicated versions of\nconfig files : simply prefix desired filenames with \"cfg-[HOSTNAME].\" where [HOSTNAME] is\nthe target *hostname*. For example:\n\n src/etc/cfg-bic.aliases\n\n\nPermissions\n-----------\n\nBecause git repositories only handle executable flag permissions,target files\npermissions are preserved. It is the more simple and safe approach because most of the\ntimes, target files already exists.\n\nIn a future release, I could had *in repository* permission management, but I have no\nsimple approach yet.\n\n\nInternals\n---------\n\nFor safety and fast processing, src and target directories files contents are compared\nusing git hashes:\n - pre-computed src git sha1 hashes for src\n - ``git hash-object --stdin-paths`` for src, in one system call.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/freddez/cfg", "keywords": "system configuration files git deploy", "license": "", "maintainer": "", "maintainer_email": "", "name": "cfg-manager", "package_url": "https://pypi.org/project/cfg-manager/", "platform": "", "project_url": "https://pypi.org/project/cfg-manager/", "project_urls": { "Bug Reports": "https://github.com/freddez/cfg/issues", "Funding": "https://donate.pypi.org", "Homepage": "https://github.com/freddez/cfg", "Say Thanks!": "https://saythanks.io/to/freddez", "Source": "https://github.com/freddez/cfg" }, "release_url": "https://pypi.org/project/cfg-manager/1.1.6/", "requires_dist": [ "gitpython", "colorama", "termcolor" ], "requires_python": ">=3.5.*, <4", "summary": "git based config files manager and installer", "version": "1.1.6" }, "last_serial": 4820400, "releases": { "1.1.4": [ { "comment_text": "", "digests": { "md5": "9aa44ed7118f31dc248237c113d2efac", "sha256": "696c83cdaf3bab00081d6ad56c46e8e7d02d06a0e1a592eaf650e086e000fdff" }, "downloads": -1, "filename": "cfg_manager-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9aa44ed7118f31dc248237c113d2efac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.*, <4", "size": 9436, "upload_time": "2019-02-11T10:28:55", "url": "https://files.pythonhosted.org/packages/ea/3e/2c8ac91476afdd1f174a9bb51b5fe460500c52a0e21b99232388dfc9d3e6/cfg_manager-1.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0ea68e21164274572b34414063e0025", "sha256": "289ac448de9d6d5f5c943559bf52d7313f0f34146cb896c890563fb9044b9b61" }, "downloads": -1, "filename": "cfg-manager-1.1.4.tar.gz", "has_sig": false, "md5_digest": "d0ea68e21164274572b34414063e0025", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.*, <4", "size": 6413, "upload_time": "2019-02-11T10:28:58", "url": "https://files.pythonhosted.org/packages/6f/84/6737622e21536dd95b61d6dbe1fd3bdd7c88981e0ba7702a8b96039645b1/cfg-manager-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "e257c0975e543a70b15f3d356fa51f3f", "sha256": "88ea31010bf3e3ae255aeeaf15a85f982ffec494b4494ecdb7b3bb526ea945fe" }, "downloads": -1, "filename": "cfg_manager-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e257c0975e543a70b15f3d356fa51f3f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 9426, "upload_time": "2019-02-11T10:56:22", "url": "https://files.pythonhosted.org/packages/12/45/c83a7b4e246e4b06c95c6d61aca752a8e1403b9faf52b7e9c3fb9f80589e/cfg_manager-1.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f31c1ee6584f0c90cb6ba09fb38e9f9f", "sha256": "3537ea8e08bf9f329ecb3f7ef19cf52b2f1f71299bde8e20f0a8ba33ef057197" }, "downloads": -1, "filename": "cfg-manager-1.1.5.tar.gz", "has_sig": false, "md5_digest": "f31c1ee6584f0c90cb6ba09fb38e9f9f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6411, "upload_time": "2019-02-11T10:56:24", "url": "https://files.pythonhosted.org/packages/8b/2a/ad3ce52bf90a51f2d3e1df6ba064a90b7d4365d8a4f7eddd434b51a21644/cfg-manager-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "84e4dd45d0b3602cc9f041326daa8c04", "sha256": "5a0d4b5a48769dc8cf98a2a968a51e996ec6de2c374aa7ea8428b5af6b24dae5" }, "downloads": -1, "filename": "cfg_manager-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "84e4dd45d0b3602cc9f041326daa8c04", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 9439, "upload_time": "2019-02-14T13:42:14", "url": "https://files.pythonhosted.org/packages/6d/49/264b2fd18ac3d8fdd5daeb138c7def24b4c0515aab37bdb98555b4b60e60/cfg_manager-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b02ef540d000f864cc0d013b11f38f6", "sha256": "1343fd36be586d629801e2e03b95395a2274e4264f720ba74f9684b72c2e0afe" }, "downloads": -1, "filename": "cfg-manager-1.1.6.tar.gz", "has_sig": false, "md5_digest": "2b02ef540d000f864cc0d013b11f38f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6422, "upload_time": "2019-02-14T13:42:16", "url": "https://files.pythonhosted.org/packages/d6/05/4e5d725eca60e90cb441111bf0ba8c427b65153036c8df6092f2ec082550/cfg-manager-1.1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "84e4dd45d0b3602cc9f041326daa8c04", "sha256": "5a0d4b5a48769dc8cf98a2a968a51e996ec6de2c374aa7ea8428b5af6b24dae5" }, "downloads": -1, "filename": "cfg_manager-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "84e4dd45d0b3602cc9f041326daa8c04", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.*, <4", "size": 9439, "upload_time": "2019-02-14T13:42:14", "url": "https://files.pythonhosted.org/packages/6d/49/264b2fd18ac3d8fdd5daeb138c7def24b4c0515aab37bdb98555b4b60e60/cfg_manager-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b02ef540d000f864cc0d013b11f38f6", "sha256": "1343fd36be586d629801e2e03b95395a2274e4264f720ba74f9684b72c2e0afe" }, "downloads": -1, "filename": "cfg-manager-1.1.6.tar.gz", "has_sig": false, "md5_digest": "2b02ef540d000f864cc0d013b11f38f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 6422, "upload_time": "2019-02-14T13:42:16", "url": "https://files.pythonhosted.org/packages/d6/05/4e5d725eca60e90cb441111bf0ba8c427b65153036c8df6092f2ec082550/cfg-manager-1.1.6.tar.gz" } ] }