首页 > 解决方案 > 在 Ansible 的脚本模块中找不到文件

问题描述

我有一个名为 check_version.sh 的文件,它基本上检查包版本(如果已安装)并将其回显。

使用 ansible 如果我运行它,我会收到以下错误:

    "/bin/sh: 1: /home/<username>/.ansible/tmp/ansible-tmp-1530783607.87-161498766237862/check_version.sh: not found"

check_version.sh

testSoftwares="ruby redis mongo elasticsearch kibana openssh openssl nodejs"

for item in $testSoftwares
do
    result=`dpkg -l | grep ^ii | grep $item | awk -F ' ' '{print $2"  "$3}'`
    if [ -n "$result" ] 
    then
        echo $result
    fi
done

虽然我还有其他文件也可以正常工作。无法调试此特定文件上出现此错误的原因。

标签: bashansible

解决方案


您很可能忘记上传脚本或类似的东西。但是出于这个目的,您应该更有可能使用 ansible 模块/ ansible 事实。这就是他们的目的。下面以代码为例:

---

- hosts: all
  vars:
    yourPackage: "GeoIP"
  tasks:
    - package_facts:
        manager: "auto"
      register: packages
    - debug:
        var: "packages.ansible_facts.packages.{{ yourPackage }}"

这样你就可以直接在 Ansible 中操作了。


推荐阅读