在目标主机上没有代理的情况下,Ansible能够执行诸如添加用户(-m用户)之类的任务。
要理解这一点,我读了article,内容为:
“ Ansible通过连接到节点并向它们推出小程序来工作。这些小程序被称为“ Ansible模块”。这些程序被编写为系统所需状态的资源模型。” < / p>
要理解这一点,我的解释是,user
模块是位于控制服务器中的python模块,并且在使用ansible
运行-m user
命令之后,此模块已在线串行化到目标主机。选项。
ansible
是否通过ssh序列化了这些程序(user
源代码)?在远程主机上执行...
此序列化是否涉及ssh代理转发技术?
答案 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