如何使Ansible在未安装软件包的情况下执行shell脚本

前端之家收集整理的这篇文章主要介绍了如何使Ansible在未安装软件包的情况下执行shell脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果没有安装(rpm)包,我如何让Ansible执行一个shell脚本?是不是有可能利用yum模块?
我不认为yum模块将有助于在这种情况下。它目前有3个州:不在,现在和最新。因为它听起来像你不想实际安装或删除包(至少在这一点上),那么你需要在两个手动步骤。第一个任务将检查包是否存在,然后第二个任务将根据第一个命令的输出调用一个命令。

如果使用“rpm -q”来检查包是否存在,那么对于存在的包,输出将如下所示:

# rpm -q httpd
httpd-2.2.15-15.el6.centos.1.x86_64

并像这样如果包不存在:

# rpm -q httpdfoo
package httpdfoo is not installed

所以你的ansible任务看起来像这样:

- name: Check if foo.rpm is installed
  command: rpm -q foo.rpm
  register: rpm_check

- name: Execute script if foo.rpm is not installed
  command: somescript
  when: rpm_check.stdout.find('is not installed') != -1

rpm命令也将退出,如果程序包存在,则返回0,如果程序包未找到,则返回1,因此另一种可能性是使用:

when: rpm_check.rc == 1

猜你在找的Bash相关文章