Назад | Перейти на главную страницу

Что Ansible отправляет на удаленный хост?

Интересно, как работает Ansible на кирпичном уровне. Большинство сайтов говорят, что модуль загружен, и Ansible не нуждается в агенте на удаленном хосте - только SSH и Python.

Похоже, что Ansible нужно было бы создать скрипт python локально и скопировать его на удаленный хост. Что отправлено? Это буквально .py файл или .pyc файл - или другое?

Как это возможно, что удаленному хосту не потребуются дополнительные пакеты Python?

Большинство сайтов говорят, что модуль загружен, и Ansible не нуждается в агенте на удаленном хосте - только SSH и Python.

Это правильно.

scp или WinRM, а также несколько других типы подключения.


Похоже, что Ansible нужно было бы создать скрипт python локально и скопировать его на удаленный хост. Что отправлено? Это буквально файл .py или .pyc - или что-то еще?

Он создает сценарий локально и копирует его на удаленный хост. .py или упакованный набор тех.

Вы можете убедиться сами - запустите Ansible с ANSIBLE_KEEP_REMOTE_FILES установлен в 1:

ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook playbook.yml

и проверьте временный каталог на целевой машине (по умолчанию в $HOME/.ansible/tmp/ для подключающегося пользователя).

Если файлы были упакованы, в комментариях внутри файла есть инструкции, как расширить набор.


Как это возможно, что удаленному хосту не потребуются дополнительные пакеты Python?

Это утверждение неверно.

Есть много модулей, требующих дополнительных пакетов Python, например expect модуль:

Приведенные ниже требования необходимы для хоста, на котором выполняется этот модуль.

  • Python> = 2.6
  • pexpect> = 3.3

или даже исполняемые файлы, например unarchive модуль:

Требуется gtar/unzip команда на целевом хосте.