我应该如何使用 Ansible 检查现有系统值?

我应该如何使用 Ansible 检查现有系统值?

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

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

问题是这个任务的状态始终是。我希望它只在实际发生更改时changed显示,否则显示。这是我能想到的最佳解决方案:changedok

- 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

相关内容