|
|
@ -175,16 +175,10 @@ Noteworthy Differences
|
|
|
|
|
|
|
|
|
|
|
|
your_ssh_username = (ALL) NOPASSWD:/usr/bin/python -c*
|
|
|
|
your_ssh_username = (ALL) NOPASSWD:/usr/bin/python -c*
|
|
|
|
|
|
|
|
|
|
|
|
* The `buildah <https://docs.ansible.com/ansible/latest/plugins/connection/buildah.html>`_,
|
|
|
|
* The :ans:conn:`~buildah`, :ans:conn:`~docker`, :ans:conn:`~jail`,
|
|
|
|
`docker <https://docs.ansible.com/ansible/2.6/plugins/connection/docker.html>`_,
|
|
|
|
:ans:conn:`~kubectl`, :ans:conn:`~local`, :ans:conn:`~lxd`, and
|
|
|
|
`jail <https://docs.ansible.com/ansible/2.6/plugins/connection/jail.html>`_,
|
|
|
|
:ans:conn:`~ssh` built-in connection types are supported, along with
|
|
|
|
`kubectl <https://docs.ansible.com/ansible/2.6/plugins/connection/kubectl.html>`_,
|
|
|
|
Mitogen-specific :ref:`machinectl <machinectl>`, :ref:`mitogen_doas <doas>`,
|
|
|
|
`local <https://docs.ansible.com/ansible/2.6/plugins/connection/local.html>`_,
|
|
|
|
|
|
|
|
`lxc <https://docs.ansible.com/ansible/2.6/plugins/connection/lxc.html>`_,
|
|
|
|
|
|
|
|
`lxd <https://docs.ansible.com/ansible/2.6/plugins/connection/lxd.html>`_,
|
|
|
|
|
|
|
|
and `ssh <https://docs.ansible.com/ansible/2.6/plugins/connection/ssh.html>`_
|
|
|
|
|
|
|
|
built-in connection types are supported, along with Mitogen-specific
|
|
|
|
|
|
|
|
:ref:`machinectl <machinectl>`, :ref:`mitogen_doas <doas>`,
|
|
|
|
|
|
|
|
:ref:`mitogen_su <su>`, :ref:`mitogen_sudo <sudo>`, and :ref:`setns <setns>`
|
|
|
|
:ref:`mitogen_su <su>`, :ref:`mitogen_sudo <sudo>`, and :ref:`setns <setns>`
|
|
|
|
types. File bugs to register interest in others.
|
|
|
|
types. File bugs to register interest in others.
|
|
|
|
|
|
|
|
|
|
|
@ -199,16 +193,14 @@ Noteworthy Differences
|
|
|
|
artificial serialization, causing slowdown equivalent to `task_duration *
|
|
|
|
artificial serialization, causing slowdown equivalent to `task_duration *
|
|
|
|
num_targets`. This will be addressed soon.
|
|
|
|
num_targets`. This will be addressed soon.
|
|
|
|
|
|
|
|
|
|
|
|
* The Ansible 2.7 `reboot
|
|
|
|
* The Ansible 2.7 :ans:mod:`reboot` may require a ``pre_reboot_delay`` on
|
|
|
|
<https://docs.ansible.com/ansible/latest/modules/reboot_module.html>`_ module
|
|
|
|
systemd hosts, as insufficient time exists for the reboot command's exit
|
|
|
|
may require a ``pre_reboot_delay`` on systemd hosts, as insufficient time
|
|
|
|
status to be reported before necessary processes are torn down.
|
|
|
|
exists for the reboot command's exit status to be reported before necessary
|
|
|
|
|
|
|
|
processes are torn down.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* On OS X when a SSH password is specified and the default connection type of
|
|
|
|
* On OS X when a SSH password is specified and the default connection type of
|
|
|
|
``smart`` is used, Ansible may select the Paramiko plug-in rather than
|
|
|
|
:ans:conn:`~smart` is used, Ansible may select the :ans:conn:`paramiko_ssh`
|
|
|
|
Mitogen. If you specify a password on OS X, ensure ``connection: ssh``
|
|
|
|
rather than Mitogen. If you specify a password on OS X, ensure ``connection:
|
|
|
|
appears in your playbook, ``ansible.cfg``, or as ``-c ssh`` on the
|
|
|
|
ssh`` appears in your playbook, ``ansible.cfg``, or as ``-c ssh`` on the
|
|
|
|
command-line.
|
|
|
|
command-line.
|
|
|
|
|
|
|
|
|
|
|
|
* Ansible permits up to ``forks`` connections to be setup in parallel, whereas
|
|
|
|
* Ansible permits up to ``forks`` connections to be setup in parallel, whereas
|
|
|
@ -345,19 +337,12 @@ command line, or as host and group variables.
|
|
|
|
File Transfer
|
|
|
|
File Transfer
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Normally `sftp(1)`_ or `scp(1)`_ are used to copy files by the
|
|
|
|
Normally :linux:man1:`sftp` or :linux:man1:`scp` are used to copy files by the
|
|
|
|
`assemble <http://docs.ansible.com/ansible/latest/modules/assemble_module.html>`_,
|
|
|
|
:ans:mod:`~assemble`, :ans:mod:`~aws_s3`, :ans:mod:`~copy`, :ans:mod:`~patch`,
|
|
|
|
`copy <http://docs.ansible.com/ansible/latest/modules/copy_module.html>`_,
|
|
|
|
:ans:mod:`~script`, :ans:mod:`~template`, :ans:mod:`~unarchive`, and
|
|
|
|
`patch <http://docs.ansible.com/ansible/latest/modules/patch_module.html>`_,
|
|
|
|
:ans:mod:`~uri` actions, or when uploading modules with pipelining disabled.
|
|
|
|
`script <http://docs.ansible.com/ansible/latest/modules/script_module.html>`_,
|
|
|
|
With Mitogen copies are implemented natively using the same interpreters,
|
|
|
|
`template <http://docs.ansible.com/ansible/latest/modules/template_module.html>`_, and
|
|
|
|
connection tree, and routed message bus that carries RPCs.
|
|
|
|
`unarchive <http://docs.ansible.com/ansible/latest/modules/unarchive_module.html>`_
|
|
|
|
|
|
|
|
actions, or when uploading modules with pipelining disabled. With Mitogen
|
|
|
|
|
|
|
|
copies are implemented natively using the same interpreters, connection tree,
|
|
|
|
|
|
|
|
and routed message bus that carries RPCs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. _scp(1): https://linux.die.net/man/1/scp
|
|
|
|
|
|
|
|
.. _sftp(1): https://linux.die.net/man/1/sftp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This permits direct streaming between endpoints regardless of execution
|
|
|
|
This permits direct streaming between endpoints regardless of execution
|
|
|
|
environment, without necessitating temporary copies in intermediary accounts or
|
|
|
|
environment, without necessitating temporary copies in intermediary accounts or
|
|
|
@ -373,15 +358,15 @@ Safety
|
|
|
|
^^^^^^
|
|
|
|
^^^^^^
|
|
|
|
|
|
|
|
|
|
|
|
Transfers proceed to a hidden file in the destination directory, with content
|
|
|
|
Transfers proceed to a hidden file in the destination directory, with content
|
|
|
|
and metadata synced using `fsync(2) <https://linux.die.net/man/2/fsync>`_ prior
|
|
|
|
and metadata synced using :linux:man2:`fsync` prior to rename over any existing
|
|
|
|
to rename over any existing file. This ensures the file remains consistent at
|
|
|
|
file. This ensures the file remains consistent at all times, in the event of a
|
|
|
|
all times, in the event of a crash, or when overlapping `ansible-playbook` runs
|
|
|
|
crash, or when overlapping `ansible-playbook` runs deploy differing file
|
|
|
|
deploy differing file contents.
|
|
|
|
contents.
|
|
|
|
|
|
|
|
|
|
|
|
The `sftp(1)`_ and `scp(1)`_ tools may cause undetected data corruption
|
|
|
|
The :linux:man1:`sftp` and :linux:man1:`scp` tools may cause undetected data
|
|
|
|
in the form of truncated files, or files containing intermingled data segments
|
|
|
|
corruption in the form of truncated files, or files containing intermingled
|
|
|
|
from overlapping runs. As part of normal operation, both tools expose a window
|
|
|
|
data segments from overlapping runs. As part of normal operation, both tools
|
|
|
|
where readers may observe inconsistent file contents.
|
|
|
|
expose a window where readers may observe inconsistent file contents.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Performance
|
|
|
|
Performance
|
|
|
@ -499,11 +484,11 @@ Ansible may:
|
|
|
|
* Create a directory owned by the SSH user either under ``remote_tmp``, or a
|
|
|
|
* Create a directory owned by the SSH user either under ``remote_tmp``, or a
|
|
|
|
system-default directory,
|
|
|
|
system-default directory,
|
|
|
|
* Upload action dependencies such as non-new style modules or rendered
|
|
|
|
* Upload action dependencies such as non-new style modules or rendered
|
|
|
|
templates to that directory via `sftp(1)`_ or `scp(1)`_.
|
|
|
|
templates to that directory via :linux:man1:`sftp` or :linux:man1:`scp`.
|
|
|
|
* Attempt to modify the directory's access control list to grant access to the
|
|
|
|
* Attempt to modify the directory's access control list to grant access to the
|
|
|
|
target user using `setfacl(1) <https://linux.die.net/man/1/setfacl>`_,
|
|
|
|
target user using :linux:man1:`setfacl`, requiring that tool to be installed
|
|
|
|
requiring that tool to be installed and a supported filesystem to be in use,
|
|
|
|
and a supported filesystem to be in use, or for the
|
|
|
|
or for the ``allow_world_readable_tmpfiles`` setting to be :data:`True`.
|
|
|
|
``allow_world_readable_tmpfiles`` setting to be :data:`True`.
|
|
|
|
* Create a directory owned by the target user either under ``remote_tmp``, or
|
|
|
|
* Create a directory owned by the target user either under ``remote_tmp``, or
|
|
|
|
a system-default directory, if a new-style module needs a temporary directory
|
|
|
|
a system-default directory, if a new-style module needs a temporary directory
|
|
|
|
and one was not previously created for a supporting file earlier in the
|
|
|
|
and one was not previously created for a supporting file earlier in the
|
|
|
@ -569,9 +554,9 @@ in regular Ansible:
|
|
|
|
operations relating to modifying the directory to support cross-account
|
|
|
|
operations relating to modifying the directory to support cross-account
|
|
|
|
access are avoided.
|
|
|
|
access are avoided.
|
|
|
|
|
|
|
|
|
|
|
|
* An explicit work-around is included to avoid the `copy` and `template`
|
|
|
|
* An explicit work-around is included to avoid the :ans:mod:`~copy` and
|
|
|
|
actions needlessly triggering a round-trip to set their temporary file as
|
|
|
|
:ans:mod:`~template` actions needlessly triggering a round-trip to set their
|
|
|
|
executable.
|
|
|
|
temporary file as executable.
|
|
|
|
|
|
|
|
|
|
|
|
* During task shutdown, it is not necessary to wait to learn if the target has
|
|
|
|
* During task shutdown, it is not necessary to wait to learn if the target has
|
|
|
|
succeeded in deleting a temporary directory, since any error that may occur
|
|
|
|
succeeded in deleting a temporary directory, since any error that may occur
|
|
|
@ -601,10 +586,10 @@ DNS Resolution
|
|
|
|
^^^^^^^^^^^^^^
|
|
|
|
^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
|
|
Modifications to ``/etc/resolv.conf`` cause the glibc resolver configuration to
|
|
|
|
Modifications to ``/etc/resolv.conf`` cause the glibc resolver configuration to
|
|
|
|
be reloaded via `res_init(3) <https://linux.die.net/man/3/res_init>`_. This
|
|
|
|
be reloaded via :linux:man3:`res_init`. This isn't necessary on some Linux
|
|
|
|
isn't necessary on some Linux distributions carrying glibc patches to
|
|
|
|
distributions carrying glibc patches to automatically check
|
|
|
|
automatically check ``/etc/resolv.conf`` periodically, however it is necessary
|
|
|
|
``/etc/resolv.conf`` periodically, however it is necessary on at least Debian
|
|
|
|
on at least Debian and BSD derivatives.
|
|
|
|
and BSD derivatives.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``/etc/environment``
|
|
|
|
``/etc/environment``
|
|
|
@ -728,9 +713,7 @@ configuration of each task.
|
|
|
|
Buildah
|
|
|
|
Buildah
|
|
|
|
~~~~~~~
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `buildah
|
|
|
|
Like the :ans:conn:`buildah` except connection delegation is supported.
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/buildah.html>`_ except
|
|
|
|
|
|
|
|
connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_host``: Name of Buildah container (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of Buildah container (default: inventory hostname).
|
|
|
|
* ``ansible_user``: Name of user within the container to execute as.
|
|
|
|
* ``ansible_user``: Name of user within the container to execute as.
|
|
|
@ -771,9 +754,7 @@ When used as the ``mitogen_doas`` connection method:
|
|
|
|
Docker
|
|
|
|
Docker
|
|
|
|
~~~~~~
|
|
|
|
~~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `docker
|
|
|
|
Like the :ans:conn:`docker` except connection delegation is supported.
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/docker.html>`_ except
|
|
|
|
|
|
|
|
connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_host``: Name of Docker container (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of Docker container (default: inventory hostname).
|
|
|
|
* ``ansible_user``: Name of user within the container to execute as.
|
|
|
|
* ``ansible_user``: Name of user within the container to execute as.
|
|
|
@ -789,9 +770,7 @@ connection delegation is supported.
|
|
|
|
FreeBSD Jail
|
|
|
|
FreeBSD Jail
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `jail
|
|
|
|
Like the :ans:conn:`jail` except connection delegation is supported.
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/jail.html>`_ except
|
|
|
|
|
|
|
|
connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_host``: Name of jail (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of jail (default: inventory hostname).
|
|
|
|
* ``ansible_user``: Name of user within the jail to execute as.
|
|
|
|
* ``ansible_user``: Name of user within the jail to execute as.
|
|
|
@ -807,9 +786,7 @@ connection delegation is supported.
|
|
|
|
Kubernetes Pod
|
|
|
|
Kubernetes Pod
|
|
|
|
~~~~~~~~~~~~~~
|
|
|
|
~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `kubectl
|
|
|
|
Like the :ans:conn:`kubectl` except connection delegation is supported.
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/kubectl.html>`_ except
|
|
|
|
|
|
|
|
connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_host``: Name of pod (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of pod (default: inventory hostname).
|
|
|
|
* ``ansible_user``: Name of user to authenticate to API as.
|
|
|
|
* ``ansible_user``: Name of user to authenticate to API as.
|
|
|
@ -823,9 +800,7 @@ connection delegation is supported.
|
|
|
|
Local
|
|
|
|
Local
|
|
|
|
~~~~~
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `local
|
|
|
|
Like the :ans:conn:`local` except connection delegation is supported.
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/local.html>`_ except
|
|
|
|
|
|
|
|
connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
|
|
|
|
|
|
|
@ -852,10 +827,9 @@ additional differences exist that may break existing playbooks.
|
|
|
|
LXC
|
|
|
|
LXC
|
|
|
|
~~~
|
|
|
|
~~~
|
|
|
|
|
|
|
|
|
|
|
|
Connect to classic LXC containers, like `lxc
|
|
|
|
Connect to classic LXC containers, like the :ans:conn:`lxc` except connection
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/lxc.html>`_ except
|
|
|
|
delegation is supported, and ``lxc-attach`` is always used rather than the LXC
|
|
|
|
connection delegation is supported, and ``lxc-attach`` is always used rather
|
|
|
|
Python bindings, as is usual with ``lxc``.
|
|
|
|
than the LXC Python bindings, as is usual with ``lxc``.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
* ``ansible_host``: Name of LXC container (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of LXC container (default: inventory hostname).
|
|
|
@ -873,10 +847,9 @@ than the LXC Python bindings, as is usual with ``lxc``.
|
|
|
|
LXD
|
|
|
|
LXD
|
|
|
|
~~~
|
|
|
|
~~~
|
|
|
|
|
|
|
|
|
|
|
|
Connect to modern LXD containers, like `lxd
|
|
|
|
Connect to modern LXD containers, like the :ans:conn:`lxd` except connection
|
|
|
|
<https://docs.ansible.com/ansible/2.6/plugins/connection/lxd.html>`_ except
|
|
|
|
delegation is supported. The ``lxc`` command must be available on the host
|
|
|
|
connection delegation is supported. The ``lxc`` command must be available on
|
|
|
|
machine.
|
|
|
|
the host machine.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
* ``ansible_python_interpreter``
|
|
|
|
* ``ansible_host``: Name of LXC container (default: inventory hostname).
|
|
|
|
* ``ansible_host``: Name of LXC container (default: inventory hostname).
|
|
|
@ -1001,8 +974,7 @@ When used as the ``mitogen_sudo`` connection method:
|
|
|
|
SSH
|
|
|
|
SSH
|
|
|
|
~~~
|
|
|
|
~~~
|
|
|
|
|
|
|
|
|
|
|
|
Like `ssh <https://docs.ansible.com/ansible/2.6/plugins/connection/ssh.html>`_
|
|
|
|
Like the :ans:conn:`ssh` except connection delegation is supported.
|
|
|
|
except connection delegation is supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ``ansible_ssh_timeout``
|
|
|
|
* ``ansible_ssh_timeout``
|
|
|
|
* ``ansible_host``, ``ansible_ssh_host``
|
|
|
|
* ``ansible_host``, ``ansible_ssh_host``
|
|
|
|