加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 09:07:17 所属栏目:安全 来源:网络整理
导读:如果没有安装(rpm)包,我如何让Ansible执行一个shell脚本?是不是有可能利用yum模块? 我不认为yum模块将有助于在这种情况下。它目前有3个州:不在,现在和最新。因为它听起来像你不想实际安装或删除包(至少在这一点上),那么你需要在两个手动步骤。第一个任
如果没有安装(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读