Ansible如何检查现有的系统价值?

我有一个Ansible任务,我设置了我的系统上全局使用的Ruby版本。

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

问题是这个任务总是有变化的状态。 我希望它只在实际changed时才显示更改,否则就显示正确。 这是我能想到的最好的解决scheme:

 - 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