Skip to content

Commit ffae035

Browse files
committed
docs: drastically simplify install/changelog.
1 parent 7dacb68 commit ffae035

2 files changed

Lines changed: 75 additions & 142 deletions

File tree

‎docs/ansible.rst‎

Lines changed: 75 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ write files.
5757
Installation
5858
------------
5959

60-
1. Thoroughly review :ref:`noteworthy_differences` and :ref:`known_issues`.
60+
1. Review :ref:`noteworthy_differences`.
6161
2. Download and extract |mitogen_url|.
6262
3. Modify ``ansible.cfg``:
6363

@@ -143,13 +143,29 @@ Testimonials
143143
Noteworthy Differences
144144
----------------------
145145

146-
* Ansible 2.3-2.7 are supported along with Python 2.6, 2.7 or 3.6. Verify your
147-
installation is running one of these versions by checking ``ansible
146+
* Ansible 2.3-2.7 are supported along with Python 2.6, 2.7, 3.6 and 3.7. Verify
147+
your installation is running one of these versions by checking ``ansible
148148
--version`` output.
149149

150-
* The Ansible ``raw`` action executes as a regular Mitogen connection,
151-
precluding its use for installing Python on a target. This will be addressed
152-
soon.
150+
* The ``raw`` action executes as a regular Mitogen connection, which requires
151+
Python on the target, precluding its use for installing Python. This will be
152+
addressed in a future release. For now, simply mix Mitogen and vanilla
153+
Ansible strategies:
154+
155+
.. code-block:: yaml
156+
157+
- hosts: web-servers
158+
strategy: linear
159+
tasks:
160+
- name: Install Python if necessary.
161+
raw: test -e /usr/bin/python || apt install -y python-minimal
162+
163+
- hosts: web-servers
164+
strategy: mitogen_linear
165+
roles:
166+
- nginx
167+
- initech_app
168+
- y2k_fix
153169
154170
* The ``doas``, ``su`` and ``sudo`` become methods are available. File bugs to
155171
register interest in more.
@@ -166,43 +182,70 @@ Noteworthy Differences
166182
:ref:`mitogen_su <su>`, :ref:`mitogen_sudo <sudo>`, and :ref:`setns <setns>`
167183
types. File bugs to register interest in others.
168184

169-
* Local commands execute in a reuseable interpreter created identically to
170-
interpreters on targets. Presently one interpreter per ``become_user``
171-
exists, and so only one local action may execute simultaneously.
185+
* Actions are single-threaded for each `(host, user account)` combination,
186+
including actions that execute on the local machine. Playbooks may experience
187+
slowdown compared to vanilla Ansible if they employ long-running
188+
``local_action`` or ``delegate_to`` tasks delegating many target hosts to a
189+
single machine and user account.
172190

173191
Ansible usually permits up to ``forks`` simultaneous local actions. Any
174192
long-running local actions that execute for every target will experience
175193
artificial serialization, causing slowdown equivalent to `task_duration *
176-
num_targets`. This will be fixed soon.
194+
num_targets`. This will be addressed soon.
177195

178-
* "Module Replacer" style modules are not supported. These rarely appear in
179-
practice, and light web searches failed to reveal many examples of them.
196+
* The Ansible 2.7 `reboot
197+
<https://docs.ansible.com/ansible/latest/modules/reboot_module.html>`_ module
198+
may require a ``pre_reboot_delay`` on systemd hosts, as insufficient time
199+
exists for the reboot command's exit status to be reported before necessary
200+
processes are torn down.
201+
202+
* On OS X when a SSH password is specified and the default connection type of
203+
``smart`` is used, Ansible may select the Paramiko plug-in rather than
204+
Mitogen. If you specify a password on OS X, ensure ``connection: ssh``
205+
appears in your playbook, ``ansible.cfg``, or as ``-c ssh`` on the
206+
command-line.
180207

181208
* Ansible permits up to ``forks`` connections to be setup in parallel, whereas
182209
in Mitogen this is handled by a fixed-size thread pool. Up to 32 connections
183210
may be established in parallel by default, this can be modified by setting
184211
the ``MITOGEN_POOL_SIZE`` environment variable.
185212

186-
* The ``ansible_python_interpreter`` variable is parsed using a restrictive
187-
:mod:`shell-like <shlex>` syntax, permitting values such as ``/usr/bin/env
188-
FOO=bar python``, which occur in practice. Ansible `documents this
189-
<https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#ansible-python-interpreter>`_
190-
as an absolute path, however the implementation passes it unquoted through
191-
the shell, permitting arbitrary code to be injected.
192-
193-
* Performance does not scale linearly with target count. This will improve over
213+
* Performance does not scale cleanly with target count. This will improve over
194214
time.
195215

196-
* SSH and ``become`` are treated distinctly when applying timeouts, and
197-
timeouts apply up to the point when the new interpreter is ready to accept
198-
messages. Ansible has two timeouts: ``ConnectTimeout`` for SSH, applying up
199-
to when authentication completes, and a separate parallel timeout up to when
200-
``become`` authentication completes.
201-
202-
For busy targets, Ansible may successfully execute a module where Mitogen
203-
would fail without increasing the timeout. For sick targets, Ansible may hang
204-
indefinitely after authentication without executing a command, for example
205-
due to a stuck filesystem IO appearing in ``$HOME/.profile``.
216+
* Performance on Python 3 is significantly worse than on Python 2. While this
217+
has not yet been investigated, at least some of the regression appears to be
218+
part of the core library, and should therefore be straightforward to fix as
219+
part of 0.2.x.
220+
221+
..
222+
* SSH and ``become`` are treated distinctly when applying timeouts, and
223+
timeouts apply up to the point when the new interpreter is ready to accept
224+
messages. Ansible has two timeouts: ``ConnectTimeout`` for SSH, applying up
225+
to when authentication completes, and a separate parallel timeout up to
226+
when ``become`` authentication completes.
227+
For busy targets, Ansible may successfully execute a module where Mitogen
228+
would fail without increasing the timeout. For sick targets, Ansible may
229+
hang indefinitely after authentication without executing a command, for
230+
example due to a stuck filesystem IO appearing in ``$HOME/.profile``.
231+
232+
..
233+
* "Module Replacer" style modules are not supported. These rarely appear in
234+
practice, and light web searches failed to reveal many examples of them.
235+
236+
..
237+
* The ``ansible_python_interpreter`` variable is parsed using a restrictive
238+
:mod:`shell-like <shlex>` syntax, permitting values such as ``/usr/bin/env
239+
FOO=bar python``, which occur in practice. Ansible `documents this
240+
<https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#ansible-python-interpreter>`_
241+
as an absolute path, however the implementation passes it unquoted through
242+
the shell, permitting arbitrary code to be injected.
243+
244+
..
245+
* Configurations will break that rely on the `hashbang argument splitting
246+
behaviour <https://github.com/ansible/ansible/issues/15635>`_ of the
247+
``ansible_python_interpreter`` setting, contrary to the Ansible
248+
documentation. This will be addressed in a future 0.2 release.
206249
207250

208251
New Features & Notes
@@ -253,8 +296,8 @@ container.
253296
``ansible_password``, or ``ansible_become_pass`` inventory variables.
254297

255298
* Automatic tunnelling of SSH-dependent actions, such as the
256-
``synchronize`` module, is not yet supported. This will be added in the
257-
0.3 series.
299+
``synchronize`` module, is not yet supported. This will be addressed in a
300+
future release.
258301

259302
To enable connection delegation, set ``mitogen_via=<inventory name>`` on the
260303
command line, or as host and group variables.

‎docs/changelog.rst‎

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -15,116 +15,6 @@ Release Notes
1515
</style>
1616

1717

18-
.. _known_issues:
19-
20-
Known Issues
21-
------------
22-
23-
Mitogen For Ansible
24-
~~~~~~~~~~~~~~~~~~~
25-
26-
* The Ansible 2.7 `reboot
27-
<https://docs.ansible.com/ansible/latest/modules/reboot_module.html>`_ module
28-
may require a ``pre_reboot_delay`` on systemd hosts, as insufficient time
29-
exists for the reboot command's exit status to be reported before necessary
30-
processes are torn down.
31-
32-
* On OS X when a SSH password is specified and the default connection type of
33-
``smart`` is used, Ansible may select the Paramiko plug-in rather than
34-
Mitogen. If you specify a password on OS X, ensure ``connection: ssh``
35-
appears in your playbook, ``ansible.cfg``, or as ``-c ssh`` on the
36-
command-line.
37-
38-
* The ``raw`` action executes as a regular Mitogen connection, which requires
39-
Python on the target, precluding its use for installing Python. This will be
40-
addressed in a future 0.2 release. For now, simply mix Mitogen and vanilla
41-
Ansible strategies in your playbook:
42-
43-
.. code-block:: yaml
44-
45-
- hosts: web-servers
46-
strategy: linear
47-
tasks:
48-
- name: Install Python if necessary.
49-
raw: test -e /usr/bin/python || apt install -y python-minimal
50-
51-
- hosts: web-servers
52-
strategy: mitogen_linear
53-
roles:
54-
- nginx
55-
- initech_app
56-
- y2k_fix
57-
58-
.. * When running with ``-vvv``, log messages will be printed to the console
59-
*after* the Ansible run completes, as connection multiplexer shutdown only
60-
begins after Ansible exits. This is due to a lack of suitable shutdown hook
61-
in Ansible, and is fairly harmless, albeit cosmetically annoying. A future
62-
release may include a solution.
63-
64-
.. * Configurations will break that rely on the `hashbang argument splitting
65-
behaviour <https://github.com/ansible/ansible/issues/15635>`_ of the
66-
``ansible_python_interpreter`` setting, contrary to the Ansible
67-
documentation. This will be addressed in a future 0.2 release.
68-
69-
* Performance does not scale linearly with target count. This requires
70-
significant additional work, as major bottlenecks exist in the surrounding
71-
Ansible code. Performance-related bug reports for any scenario remain
72-
welcome with open arms.
73-
74-
* Performance on Python 3 is significantly worse than on Python 2. While this
75-
has not yet been investigated, at least some of the regression appears to be
76-
part of the core library, and should therefore be straightforward to fix as
77-
part of 0.2.x.
78-
79-
* *Module Replacer* style Ansible modules are not supported.
80-
81-
* Actions are single-threaded for each `(host, user account)` combination,
82-
including actions that execute on the local machine. Playbooks may experience
83-
slowdown compared to vanilla Ansible if they employ long-running
84-
``local_action`` or ``delegate_to`` tasks delegating many target hosts to a
85-
single machine and user account.
86-
87-
* Connection Delegation remains in preview and has bugs around how it infers
88-
connections. Connection establishment will remain single-threaded for the 0.2
89-
series, however connection inference bugs will be addressed in a future 0.2
90-
release.
91-
92-
* Connection Delegation does not support automatic tunnelling of SSH-dependent
93-
actions, such as the ``synchronize`` module. This will be addressed in the
94-
0.3 series.
95-
96-
97-
Core Library
98-
~~~~~~~~~~~~
99-
100-
* Serialization is still based on :mod:`pickle`. While there is high confidence
101-
remote code execution is impossible in Mitogen's configuration, an untrusted
102-
context may at least trigger disproportionately high memory usage injecting
103-
small messages (*"billion laughs attack"*). Replacement is an important
104-
future priority, but not critical for an initial release.
105-
106-
* Child processes are not reliably reaped, leading to a pileup of zombie
107-
processes when a program makes many short-lived connections in a single
108-
invocation. This does not impact Mitogen for Ansible, however it limits the
109-
usefulness of the core library. A future 0.2 release will address it.
110-
111-
* Some races remain around :class:`mitogen.core.Broker <Broker>` destruction,
112-
disconnection and corresponding file descriptor closure. These are only
113-
problematic in situations where child process reaping is also problematic.
114-
115-
* The `fakessh` component does not shut down correctly and requires flow
116-
control added to the design. While minimal fixes are possible, due to the
117-
absence of flow control the original design is functionally incomplete.
118-
119-
* The multi-threaded :ref:`service` remains in a state of design flux and
120-
should be considered obsolete, despite heavy use in Mitogen for Ansible. A
121-
future replacement may be integrated more tightly with, or entirely replace
122-
the RPC dispatcher on the main thread.
123-
124-
* Documentation is in a state of disrepair. This will be improved over the 0.2
125-
series.
126-
127-
12818
v0.2.6 (unreleased)
12919
-------------------
13020

0 commit comments

Comments
 (0)