Как заставить ANSIBLE возвращать «ОК», когда Python установлен в этой книге? - PullRequest
1 голос
/ 25 марта 2019

У меня есть пьеса, которая выглядит следующим образом.Предполагается установить 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)

Эта книга воспроизведенияЗадача работает как положено, но всегда возвращает «изменилось», даже если ничего не было установлено.

Есть ли способ заставить этот playbook возвращать "хорошо", когда test -e /usr/bin/python возвращает 0, а затем возвращать "изменено", когда test -e /usr/bin/python возвращает 1?

Примечание: я не могуиспользуйте любой другой модуль, кроме raw, потому что зависимость от python недоступна.

1 Ответ

1 голос
/ 25 марта 2019

Основное решение проблемы такого рода использует ключевое слово 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
...