当我只有只读访问权限时,如何使用Ansible?

时间:2017-07-17 22:44:57

标签: configuration ansible privileges

我正在使用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的经验,因此我无法找到任何内容。

1 个答案:

答案 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_whenignore_errorschanged_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