Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mitogen
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
mitogen
Commits
04bb5881
Commit
04bb5881
authored
Mar 06, 2018
by
David Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ansible: doc updates
parent
95ea7590
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
40 deletions
+53
-40
docs/ansible.rst
docs/ansible.rst
+46
-30
docs/index.rst
docs/index.rst
+7
-10
No files found.
docs/ansible.rst
View file @
04bb5881
...
@@ -29,6 +29,12 @@ time spent by the target host already doing useful work. Mitogen cannot speed
...
@@ -29,6 +29,12 @@ time spent by the target host already doing useful work. Mitogen cannot speed
up a module once it is executing, it can only ensure the module executes as
up a module once it is executing, it can only ensure the module executes as
quickly as possible.
quickly as possible.
.. raw:: html
<div style="float:right; border:1px solid silver;margin-left: 16px;">
<iframe src="https://www.kickstarter.com/projects/548438714/mitogen-extension-for-ansible/widget/card.html?v=2" width="220" height="420" frameborder="0" scrolling="no" target="_blank"></iframe>
</div>
* **A single SSH connection is used for each target host**, in addition to one
* **A single SSH connection is used for each target host**, in addition to one
sudo invocation per distinct user account. Subsequent playbook steps always
sudo invocation per distinct user account. Subsequent playbook steps always
reuse the same connection. This is much better than SSH multiplexing combined
reuse the same connection. This is much better than SSH multiplexing combined
...
@@ -54,6 +60,31 @@ quickly as possible.
...
@@ -54,6 +60,31 @@ quickly as possible.
relating to those files in cross-account scenarios are entirely avoided.
relating to those files in cross-account scenarios are entirely avoided.
Installation
------------
.. caution::
Thoroughly review the list of limitations before use, and **do not test the
prototype in a live environment until this notice is removed**.
1. Verify Ansible 2.4 and Python 2.7 are listed in the output of ``ansible
--version``
2. Download and extract http://github.com/dw/mitogen/archive/master.zip
3. Modify ``ansible.cfg``:
.. code-block:: dosini
[defaults]
strategy_plugins = /path/to/mitogen-master/ansible_mitogen/plugins/strategy
strategy = mitogen
The ``strategy`` key is optional. If omitted, you can set the
``ANSIBLE_STRATEGY=mitogen`` environment variable on a per-run basis.
4. Cross your fingers and try it.
Limitations
Limitations
-----------
-----------
...
@@ -70,6 +101,9 @@ High Risk
...
@@ -70,6 +101,9 @@ High Risk
<http://docs.ansible.com/ansible/latest/playbooks_async.html>`_ has received
<http://docs.ansible.com/ansible/latest/playbooks_async.html>`_ has received
minimal testing.
minimal testing.
* For now only **built-in Python command modules work**, however almost all
modules shipped with Ansible are Python-based.
* Transfer of large (i.e. GB-sized) files using certain Ansible-internal APIs,
* Transfer of large (i.e. GB-sized) files using certain Ansible-internal APIs,
such as triggered via the ``copy`` module, will cause corresponding temporary
such as triggered via the ``copy`` module, will cause corresponding temporary
memory and CPU spikes on both host and target machine, due to delivering the
memory and CPU spikes on both host and target machine, due to delivering the
...
@@ -81,6 +115,10 @@ High Risk
...
@@ -81,6 +115,10 @@ High Risk
respected, however ``delegate_to``, ``connection: local``, ``become``,
respected, however ``delegate_to``, ``connection: local``, ``become``,
``become_user``, and ``local_action`` have all been tested.
``become_user``, and ``local_action`` have all been tested.
* Only Ansible 2.4 is being used for development, with occasional tests under
2.3 and 2.2. It should be more than possible to fully support at least 2.3,
if not also 2.2.
Low Risk
Low Risk
~~~~~~~~
~~~~~~~~
...
@@ -97,9 +135,6 @@ Low Risk
...
@@ -97,9 +135,6 @@ Low Risk
* Interaction with modules employing special action plugins is minimally
* Interaction with modules employing special action plugins is minimally
tested, except for the ``synchronize``, ``template`` and ``copy`` modules.
tested, except for the ``synchronize``, ``template`` and ``copy`` modules.
* For now only Python command modules work, however almost all modules shipped
with Ansible are Python-based.
* Uncaptured standard output of remotely executing modules and shell commands
* Uncaptured standard output of remotely executing modules and shell commands
are logged to the console. This will be fixed in a later version.
are logged to the console. This will be fixed in a later version.
...
@@ -129,29 +164,8 @@ Behavioural Differences
...
@@ -129,29 +164,8 @@ Behavioural Differences
connection to host closed`` to appear in ``stderr`` output of every executed
connection to host closed`` to appear in ``stderr`` output of every executed
command. This never manifests with the Mitogen extension.
command. This never manifests with the Mitogen extension.
* Asynchronous jobs execute in a thread of the single target Python
* Asynchronous support is very primitive, and jobs execute in a thread of the
interpreter. In future this will be replaced with subprocesses, as it's
target Python interpreter. This will fixed shortly.
likely some use cases spawn many asynchronous jobs.
Configuration
-------------
.. warning::
Don't test the prototype in a live environment until this notice is removed.
1. Ensure the host machine is using Python 2.x for Ansible by verifying the
output of ``ansible --version``. Ensure the ``python`` command starts a
Python 2.x interpreter. If not, substitute ``python`` for the correct
command in steps 2 and 3.
2. ``python -m pip install -U git+https://github.com/dw/mitogen.git`` **on the
host machine only**.
3. ``python -c 'import ansible_mitogen as a; print a.__path__'``
4. Add ``strategy_plugins = /path/to/../ansible_mitogen/plugins/strategy`` using the
path from above to the ``[defaults]`` section of ``ansible.cfg``.
5. Add ``strategy = mitogen`` to the ``[defaults]`` section of ``ansible.cfg``.
6. Cross your fingers and try it out.
Demo
Demo
...
@@ -232,8 +246,8 @@ The extension aggressively reuses the single target Python interpreter to
...
@@ -232,8 +246,8 @@ The extension aggressively reuses the single target Python interpreter to
execute every module. While this works well, it violates an unwritten
execute every module. While this works well, it violates an unwritten
assumption regarding Ansible modules, and so it is possible a buggy module
assumption regarding Ansible modules, and so it is possible a buggy module
could cause a run to fail, or for unrelated modules to interact with each other
could cause a run to fail, or for unrelated modules to interact with each other
due to bad hygiene. Mitigations
will be added as necessary if problems of this
due to bad hygiene. Mitigations
(such as forking) will be added as necessary if
sort ever actually manfest.
problems of this
sort ever actually manfest.
Patches
Patches
~~~~~~~
~~~~~~~
...
@@ -244,8 +258,8 @@ mechanism for selecting a connection plug-in. While it is hoped the patches can
...
@@ -244,8 +258,8 @@ mechanism for selecting a connection plug-in. While it is hoped the patches can
be avoided in future, for interesting versions of Ansible deployed today this
be avoided in future, for interesting versions of Ansible deployed today this
simply is not possible, and so they continue to be required.
simply is not possible, and so they continue to be required.
The patches are
well defined, act conservatively
including by disabling
The patches are
concise and behave conservatively,
including by disabling
themselves when non-Mitogen connections are in use
, and a
dditional third party
themselves when non-Mitogen connections are in use
. A
dditional third party
plug-ins are unlikely to attempt similar patches, so the risk to an established
plug-ins are unlikely to attempt similar patches, so the risk to an established
configuration should be minimal.
configuration should be minimal.
...
@@ -260,6 +274,8 @@ equivalent semantics. This allows:
...
@@ -260,6 +274,8 @@ equivalent semantics. This allows:
such as forwarding SSH agents across ``sudo`` invocations,
such as forwarding SSH agents across ``sudo`` invocations,
* reporting on conflicting flag combinations,
* reporting on conflicting flag combinations,
* reporting on unsupported flag combinations,
* reporting on unsupported flag combinations,
* internally special-casing certain behaviour (like recursive agent forwarding)
without boring the user with the details,
* avoiding opening the extension up to untestable scenarios where users can
* avoiding opening the extension up to untestable scenarios where users can
insert arbitrary garbage between Mitogen and the components it integrates
insert arbitrary garbage between Mitogen and the components it integrates
with,
with,
...
...
docs/index.rst
View file @
04bb5881
...
@@ -12,18 +12,15 @@ Mitogen is a Python library for writing distributed self-replicating programs.
...
@@ -12,18 +12,15 @@ Mitogen is a Python library for writing distributed self-replicating programs.
}
}
</style>
</style>
..
warning
::
..
caution
::
This is alpha-quality code. If you intend to use it, be aware of how little
Be aware this is prerelease code, and that comprehensive automated tests
real world testing it has received, the total absence of any systematic
are presently absent.
tests, and the nightmare-level difficulty of debugging hangs in a tree of
:py:meth:`Router.enable_debug() <mitogen.master.Router.enable_debug>` is
processes running identical code straddling multiple thread and machine
your friend. If have a use for this software, please `drop an e-mail`_ so
boundaries! ``router.enable_debug()`` is your friend
.
expectations and bug fixes can be managed sensibly
.
If you think you have a use for this software, please `drop me an e-mail`_
.. _drop an e-mail: dw@botanicus.net
so that expectations and bug fixes can be managed sensibly.
.. _drop me an e-mail: dw@botanicus.net
.. image:: images/cell_division.png
.. image:: images/cell_division.png
:align: right
:align: right
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment