Назад | Перейти на главную страницу

Как мне проверить существующее системное значение с помощью Ansible?

У меня есть задача Ansible, в которой я устанавливаю версию Ruby, используемую глобально в моей системе.

- name: Set Ruby global version
  shell: /usr/local/bin/rbenv global 2.2.1

Проблема в том, что эта задача всегда имеет статус changed. Я хочу показать changed только если он действительно изменился, иначе ok. Это лучшее решение, которое я мог придумать:

- name: Get current global version Ruby
  shell: /usr/local/bin/rbenv global"
  register: current_ruby_version
  changed_when: False

- name: Set Ruby global version
  shell: /usr/local/bin/rbenv global 2.2.1
  changed_when: current_ruby_version.stdout != 2.2.1

Это будет шаблон, который я буду часто использовать (проверить существующее значение, установить значение, посмотреть, изменилось ли оно), так что это немного обременительно.

Есть лучший способ сделать это?

Вы можете объединить это в одну задачу:

- name: Set global version Ruby
  shell: /usr/local/bin/rbenv global; /usr/local/bin/rbenv global 2.2.1
  register: old_ruby_version
  changed_when: old_ruby_version.stdout != 2.2.1