如何在Ansible中比较内核(或其他)版本号

Tob*_*byG 15 version-numbering ansible ansible-2.x

对于我正在开发的角色,我需要验证内核版本是否大于特定版本.

我找到了ansible_kernel值,但是有一种简单的方法可以将它与其他版本进行比较吗?我以为我可能手动爆炸'.'上的版本字符串并比较数字,但我甚至找不到友好的过滤器来爆炸版本字符串,所以我不知所措.

提前致谢.

Ť

Kon*_*rov 19

有一个测试:

{{ ansible_distribution_version | version_compare('12.04', '>=') }}

{{ sample_version_var | version_compare('1.0', operator='lt', strict=True) }}
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,在 Ansible 2.5 中,version_compare 已重命名为 version。 (3认同)
  • 请参阅[此](http://stackoverflow.com/a/11887885/2795592)有关 StrictVersion 与 LooseVersion 的答案。 (2认同)

Fuj*_*lan 7

内核版本低于3时打印主机IP地址

Ansible Version : 2.0.0.2

---
- hosts: all
  vars:
   kernel_version: "{{ ansible_kernel }}"
  tasks:
   - name: 'kernel version from facts'
     debug:
      msg: '{{ansible_all_ipv4_addresses}} {{ansible_kernel}}'
     when: ansible_kernel |  version_compare('3','<')
Run Code Online (Sandbox Code Playgroud)

**

在 2.5 version_compare 被重命名为 version

**


Pro*_*e85 5

因为ansible>=2.9这行不通,因为测试语法现在与过滤器严格分开。

https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html

工作解决方案是:

{{ sample_version_var is version('1.0', operator='lt', strict=True) }}
...
Run Code Online (Sandbox Code Playgroud)