我正在使用Ansible自动执行一些网络故障排除任务,但是当我尝试将所有设备ping为完整性检查时,我收到以下错误:
“msg”:“身份验证或权限失败。在某些情况下,您可能已经能够对远程目录进行身份验证并且没有权限。请考虑将ansible.cfg中的远程临时路径更改为以\为根的路径“/ TMP \”。
当我在Ansible verbose模式下运行命令时,在此错误之前,我得到以下输出:
< 10.25.100.1> EXEC / bin / sh -c'(umask 77&& mkdir -p“
echo Cmd exec error./.ansible/tmp/ansible-tmp-1500330345.12-194265391907358
”&& echo ansible-tmp-1500330345.12-194265391907358 =“echo Cmd exec error./.ansible/tmp/ansible-tmp-1500330345.12-194265391907358
”)&&睡0'
我是实习生,因此只能对所有设备进行只读访问;因此,我认为由于mkdir命令而发生错误。因此我的两个问题是:
1)无论如何将Ansible配置为不在设备上创建任何临时文件?
2)是否还有其他因素导致我可能错过了这个错误?
我已尝试在Ansible文档中搜索任何相关配置,但我没有太多使用Ansible的经验,因此我无法找到任何内容。
答案 0 :(得分:2)
这个问题在更广泛的背景下没有意义。 Ansible是服务器配置自动化的工具。没有写访问权限,您无法在目标计算机上配置任何内容,因此Ansible没有用例。
在较窄的上下文中,虽然您没有发布任何代码,但您似乎正在尝试ping目标服务器。 Ansible ping
module不是ICMP ping
。相反,它是一个连接到目标服务器,传输Python脚本并运行它们的组件。脚本产生响应,这意味着目标系统满足运行Ansible模块的最低要求。
但是,您似乎想在控制计算机上使用Ansible command
module运行常规ping
命令并检查状态:
- hosts: localhost
vars:
target_host: 192.168.1.1
tasks:
- command: ping {{ target_host }}
您可能希望使用failed_when
,ignore_errors
或changed_when
参数。请参阅Error handling in playbook。
请注意,我建议在localhost
上运行整个游戏,因为在您的配置中,配置您在广告资源中拥有有限访问权限的目标计算机是没有意义的。
此外:
无论如何将Ansible配置为不在设备上创建任何临时文件?
是。通过raw
module运行命令不会创建临时文件。
由于您似乎具有SSH访问权限,因此可以使用它来运行命令并检查其结果:
- hosts: 192.168.1.1
tasks:
- raw: echo Hello World
register: echo
- debug:
var: echo.stdout