Ansible Shell/Command模块 - "msg": "[Errno 2] 没有这个文件或目录"

3

我希望运行命令 "ll /dev/disk/by-id/scsi-* " 以获取scsi ID。 我已经尝试了使用become: yes的命令和Shell,但都没有成功。

- name: Get ISCSI Id
  command: ll /dev/disk/by-id/scsi-*
  register: iscsiid
  become: yes

错误:

    "changed": false,
    "cmd": "ll '/dev/disk/by-id/scsi-*'",
    "invocation": {
        "module_args": {
            "_raw_params": "ll /dev/disk/by-id/scsi-*",
            "_uses_shell": false,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "warn": true
        }
    },
    "msg": "[Errno 2] No such file or directory",
    "rc": 2
}

有什么办法可以运行这个命令吗?当我以root用户身份手动运行时,它可以工作。

谢谢。


这不是Ansible或其模块的问题,问题在于命令本身“ll /dev/disk/by-id/scsi-*”...尝试只使用“ll /dev/disk/*”运行它。 - Tomislav Mikulin
我敢打赌1美元,这是因为ll/bin/ls -l的bash别名,而且你不能像那样使用command与shell通配符,正如精细手册非常明确地说明的那样。 - mdaniel
1个回答

7

尝试使用shell模块代替command,并将ll别名替换为类似于“ls”的shell命令-我尝试过了,它可以运行:

- name: test
  hosts: localhost
  tasks:
  - shell: ls -lstr /dev/disk/by-id/scsi-*
    register: iscsiid
    become: yes
  - debug:
      msg: "{{ iscsiid }}"

谢谢,将命令从ll改为ls -ltr后,它正在工作。非常感谢您的帮助。 - Rao
如果您满意,请接受答案。谢谢 - chenchuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接