diff --git a/docs/compared.rst b/docs/compared.rst index e1969844..44941a34 100644 --- a/docs/compared.rst +++ b/docs/compared.rst @@ -10,23 +10,30 @@ maturity/age, quality of tests, function matrix) Ansible ####### -Ansible is a complete provisioning system, Mitogen is a small component of such a system. +Ansible_ is a complete provisioning system, Mitogen is a small component of such a system. You should use Ansible if ... You should not use Ansible if ... +.. _Ansible: https://docs.ansible.com/ansible/latest/index.html +.. _ansible.src: https://github.com/ansible/ansible/ + Baker ##### -http://bitbucket.org/mchaput/baker + Baker_ lets you easily add a command line interface to your Python + functions using a simple decorator, to create scripts with "sub-commands", + similar to Django's ``manage.py``, ``svn``, ``hg``, etc. + +.. _Baker: https://bitbucket.org/mchaput/baker Chopsticks ########## -also supports recursion! but the recursively executed instance has no special knowledge of its identity in a tree structure, and little support for functions running in the master to directly invoke functions in a recursive context.. effectively each recursion produces a new master, from which function calls must be made. +Chopsticks_ also supports recursion! but the recursively executed instance has no special knowledge of its identity in a tree structure, and little support for functions running in the master to directly invoke functions in a recursive context.. effectively each recursion produces a new master, from which function calls must be made. executing functions from __main__ entails picking just that function and deps out of the main module, not transferring the module intact. that approach works @@ -56,10 +63,14 @@ too harshly!) You should use Chopsticks if you need Python 3 support. +.. _Chopsticks: https://chopsticks.readthedocs.io/en/stable/ +.. _Chopsticks.src: https://github.com/lordmauve/chopsticks/ Execnet ####### +Execnet_ + - Parent and children may use threads, gevent, or eventlet, Mitogen only supports threads. - No recursion - Similar Channel abstraction but better developed.. includes waiting for remote to close its end @@ -71,11 +82,12 @@ Execnet You should use Execnet if you value code maturity more than featureset. +.. _Execnet: https://codespeak.net/execnet/ Fabric ###### -allows execution of shell snippets on remote machines, Python functions run +Fabric_ allows execution of shell snippets on remote machines, Python functions run locally, any remote interaction is fundamentally done via shell, with all the limitations that entails. prefers to depend on SSH features (e.g. tunnelling) than reinvent them @@ -83,60 +95,72 @@ than reinvent them You should use Fabric if you enjoy being woken at 4am to pages about broken shell snippets. +.. _fabric: http://www.fabfile.org/ Invoke ###### -http://www.pyinvoke.org/ +Invoke_ Python 2.6+, 3.3+ Basically a Fabric-alike +.. _invoke: http://www.pyinvoke.org/ Paver ##### -https://github.com/paver/paver/ +Paver_ More or less another task execution framework / make-alike, doesn't really deal with remote execution at all. +.. _Paver: https://github.com/paver/paver/ Plumbum ####### -https://pypi.python.org/pypi/plumbum +Plumbum_ Shell-only Basically syntax sugar for running shell commands. Nicer than raw shell (depending on your opinions of operating overloading), but it's still shell. +.. _Plumbum: https://pypi.python.org/pypi/plumbum Pyro4 ##### +Pyro4_ ... +.. _Pyro4: https://pythonhosted.org/Pyro4/ RPyC #### +RPyC_ + - supports transparent object proxies similar to Pyro (with all the pain and suffering hidden network IO entails) - significantly more 'frameworkey' feel - runs multiplexer in a thread too? - bootstrap over SSH only, no recursion and no sudo - requires a writable filesystem +.. _RPyC: https://rpyc.readthedocs.io/en/latest/ +Salt +#### -To Salt -####### +Salt_ - no crappy deps You should use Salt if you enjoy firefighting endless implementation bugs, otherwise you should prefer Ansible. +.. _Salt: https://docs.saltstack.com/en/latest/topics/ +.. _Salt.src: https://github.com/saltstack/salt diff --git a/docs/index.rst b/docs/index.rst index 6de7e409..aed4b7ae 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,7 +38,7 @@ and efficient low-level API on which tools like `Salt`_, `Ansible`_, or .. _Salt: https://docs.saltstack.com/en/latest/ .. _Ansible: http://docs.ansible.com/ -.. _Fabric: http://docs.fabfile.org/en/ +.. _Fabric: http://www.fabfile.org/ The focus is to centralize and perfect the intricate dance required to run Python code safely and efficiently on a remote machine, while **avoiding