我有一个 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
这将是我经常使用的模式(检查现有值、设置值、查看它是否改变)所以这有点繁重。
有一个更好的方法吗?
答案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