У меня есть задача 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