bash - 在 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
虽然我还有其他文件也可以正常工作。无法调试此特定文件上出现此错误的原因。
解决方案
您很可能忘记上传脚本或类似的东西。但是出于这个目的,您应该更有可能使用 ansible 模块/ ansible 事实。这就是他们的目的。下面以代码为例:
---
- hosts: all
vars:
yourPackage: "GeoIP"
tasks:
- package_facts:
manager: "auto"
register: packages
- debug:
var: "packages.ansible_facts.packages.{{ yourPackage }}"
这样你就可以直接在 Ansible 中操作了。
推荐阅读
- scala - 将包含链式函数调用的枚举传递给 Scala 中的 for...yield 理解
- python - 寻找以下代码的解释,了解如何找到长方体的坐标?
- arrays - 通过键在关联数组中搜索
- reactjs - 反应 js 中的 AWS polly(文本到语音)。无法获取 AWS 上下文以提供凭据
- firebase - 如何从 Firebase 身份验证更改电子邮件的电子邮件发件人姓名?
- angular - 回调按钮时角度删除查询参数
- javascript - 反应本机(博览会)网络视图错误 net::ERR_CACHE_MISS
- php - DiscriminatorMap 注解中的环境变量或函数
- laravel - Api Endpoint 中不存在 Authorizarion 标头 - Laravel
- javascript - 如何使最小填充图表js折线图