如何在远程主机上执行ansible序列化命令?

时间:2019-04-20 23:33:14

标签: serialization ssh ansible

在目标主机上没有代理的情况下,Ansible能够执行诸如添加用户(-m用户)之类的任务。

要理解这一点,我读了article,内容为:

“ Ansible通过连接到节点并向它们推出小程序来工作。这些小程序被称为“ Ansible模块”。这些程序被编写为系统所需状态的资源模型。” < / p>

要理解这一点,我的解释是,user模块是位于控制服务器中的python模块,并且在使用ansible运行-m user命令之后,此模块已在线串行化到目标主机。选项。


ansible是否通过ssh序列化了这些程序(user源代码)?在远程主机上执行...

此序列化是否涉及ssh代理转发技术?

1 个答案:

答案 0 :(得分:2)

ansible在剧本中执行模块时,它将需要运行的代码与遇到的参数序列化为名为<local user home>/.ansible/tmp/ansible-local-<current-run-hash>/tmp<some-other-hash>的本地python文件。

此文件使用该主机的声明连接(ssh,docker,本地...)上传到<remote_user home dir>/.ansible/tmp/ansible-tmp-<current-run-hashed-id>/AnsiballZ_<module_name>.py中的远程主机。

python文件通过该连接在远程主机上执行,结果被取回本地计算机并被清理。

使用-vvv的{​​{1}}选项(或ansible-playbook,如果要发送临时命令),您可以确切地看到所有这些操作是如何执行的。这是对本地计算机上的docker主机运行stat模块的示例。

任务:

ansible

- name: Check if SystemD service is installed stat: path: /etc/systemd/system/nexus.service register: nexus_systemd_service_file 运行。复制到远程的文件从第7行开始。

-vvv