如果软件包没有安装则执行命令

根据条件执行

通过ansible检查主机上是否安装了某个rpm包,如果没有安装则执行特定脚本:

由于rpm -q可以检查一个包是否存在,并且如果包不存在就会返回package XXXX is not installed,所以思路先执行rpm -q XXX,将执行返回的结果存放到值rpm_check中,然后根据rpm_check打印输出中find是否存在字符串is not installed,检查字符串的结果为1表示没有就表明匹配上了is no installed,也就是确实没有安装软件包,就可以执行脚本:

- 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

参考

Last updated