在此剧本中安装python后,如何使ansible返回“ ok”?

时间:2019-03-24 21:45:24

标签: ansible yaml

我有一本如下的剧本。应该将python安装到远程机器上,以便它可以开始使用模块,因此为什么要使用raw呢,因为它是唯一无需python解释器即可运行的东西。

---
- name: Checking Ansible Python Dependency
  hosts: Debian_Buster
  gather_facts: False

  tasks:
  - name: install python 2
    become: yes
    raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)

此剧本任务按预期工作,但即使未安装任何内容,也始终返回“已更改”。

有没有一种方法可以使该剧本在test -e /usr/bin/python返回0时返回“ ok”,然后在test -e /usr/bin/python返回1时返回“ changed”?

注意:由于无法使用python依赖项,因此我无法使用除raw以外的任何其他模块。

1 个答案:

答案 0 :(得分:1)

此类问题的基本解决方案是使用register关键字保存任务的结果,然后以changed_when表达式检查结果。

在您的情况下,我们不能仅使用返回码来决定这一点,但是我们只能检查标准输出,如果我错了,请纠正我,只有在test命令成功的情况下,该输出才为空。

示例:

- name: install python 2
  become: yes
  raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
  register: command_result
  changed_when: command_result.stdout | length > 0