{"id":13502380,"url":"https://github.com/fabtools/fabtools","last_synced_at":"2025-12-17T18:45:59.130Z","repository":{"id":1625727,"uuid":"2325793","full_name":"fabtools/fabtools","owner":"fabtools","description":"Tools for writing awesome Fabric files","archived":false,"fork":false,"pushed_at":"2019-12-13T07:52:20.000Z","size":1095,"stargazers_count":1249,"open_issues_count":104,"forks_count":206,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-05-04T00:10:56.292Z","etag":null,"topics":["fabtools","python","python-fabric"],"latest_commit_sha":null,"homepage":"http://fabtools.readthedocs.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabtools.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-09-05T01:44:24.000Z","updated_at":"2025-04-29T10:53:48.000Z","dependencies_parsed_at":"2022-08-28T13:01:20.430Z","dependency_job_id":null,"html_url":"https://github.com/fabtools/fabtools","commit_stats":null,"previous_names":["ronnix/fabtools"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabtools%2Ffabtools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabtools%2Ffabtools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabtools%2Ffabtools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabtools%2Ffabtools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabtools","download_url":"https://codeload.github.com/fabtools/fabtools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252965558,"owners_count":21832912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fabtools","python","python-fabric"],"created_at":"2024-07-31T22:02:12.127Z","updated_at":"2025-12-17T18:45:54.109Z","avatar_url":"https://github.com/fabtools.png","language":"Python","readme":"About\n=====\n\n``fabtools`` includes useful functions to help you write your `Fabric \u003chttp://fabfile.org/\u003e`_ files.\n\n``fabtools`` makes it easier to manage system users, packages, databases, etc.\n\n``fabtools`` includes a number of low-level actions, as well as a higher level interface called ``fabtools.require``.\n\nUsing ``fabtools.require`` allows you to use a more declarative style, similar to Chef or Puppet.\n\nInstalling\n==========\n\nTo install the latest release from `PyPI \u003chttp://pypi.python.org/pypi/fabtools\u003e`_\n\n.. code-block:: console\n\n    $ pip install fabtools\n\nTo install the latest development version from `GitHub \u003chttps://github.com/ronnix/fabtools\u003e`_\n\n.. code-block:: console\n\n    $ pip install git+git://github.com/ronnix/fabtools.git\n\nExample\n=======\n\nHere is an example ``fabfile.py`` using ``fabtools``\n\n.. code-block:: python\n\n    from fabric.api import *\n    from fabtools import require\n    import fabtools\n\n    @task\n    def setup():\n\n        # Require some Debian/Ubuntu packages\n        require.deb.packages([\n            'imagemagick',\n            'libxml2-dev',\n        ])\n\n        # Require a Python package\n        with fabtools.python.virtualenv('/home/myuser/env'):\n            require.python.package('pyramid')\n\n        # Require an email server\n        require.postfix.server('example.com')\n\n        # Require a PostgreSQL server\n        require.postgres.server()\n        require.postgres.user('myuser', 's3cr3tp4ssw0rd')\n        require.postgres.database('myappsdb', 'myuser')\n\n        # Require a supervisor process for our app\n        require.supervisor.process('myapp',\n            command='/home/myuser/env/bin/gunicorn_paster /home/myuser/env/myapp/production.ini',\n            directory='/home/myuser/env/myapp',\n            user='myuser'\n            )\n\n        # Require an nginx server proxying to our app\n        require.nginx.proxied_site('example.com',\n            docroot='/home/myuser/env/myapp/myapp/public',\n            proxy_url='http://127.0.0.1:8888'\n            )\n\n        # Setup a daily cron task\n        fabtools.cron.add_daily('maintenance', 'myuser', 'my_script.py')\n\nSupported targets\n=================\n\n``fabtools`` currently supports the following target operating systems:\n\n- full support:\n\n  - Debian family:\n\n    - Debian 6 (*squeeze*), 7 (*wheezy*), 8 (*jessie*)\n    - Ubuntu 10.04 (*lucid*), 12.04 (*precise*), 14.04 (*trusty*)\n\n- partial support:\n\n  - RedHat family:\n\n    - RHEL 5/6\n    - CentOS 5/6\n    - Scientific Linux 5/6\n    - Fedora\n\n  - Arch Linux, Manjaro Linux\n\n  - Gentoo\n\n  - SmartOS (Joyent)\n\nContributions to help improve existing support and extend it to other\nUnix/Linux distributions are welcome!\n","funding_links":[],"categories":["DevOps Tools","Python","DevOps 工具","DevOps Tools [🔝](#readme)","Awesome Python"],"sub_categories":["DevOps Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabtools%2Ffabtools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabtools%2Ffabtools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabtools%2Ffabtools/lists"}