想知道 Ansible 在实体层面是如何工作的。大多数网站都说模块被推送了,Ansible 不需要远程主机上的代理 - 只需要 SSH 和 Python。
看起来 Ansible 需要在本地创建一个 python 脚本并将其复制到远程主机。发送的是什么?它实际上是一个.py
文件还是一个.pyc
文件 - 或者其他?
远程主机怎么可能不需要任何额外的 Python 包呢?
答案1
大多数网站都说模块已被推送,而 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