2016-09-29 4 views
6

私が開発している役割のために、カーネルのバージョンが特定のバージョンよりも大きいことを確認する必要があります。Ansibleのカーネル(または他の)バージョン番号を比較する方法

私はansible_kernelの値を見つけましたが、これを他のバージョンと簡単に比較する方法はありますか?私は手動でバージョン文字列を展開すると思った。 'の&は数字を比較するが、私はバージョン文字列を爆発させるフレンドリーなフィルタを見つけることさえできないので、私は迷っている。

ありがとうございます。

t

+0

、2.0 ansibleので、あなたができ '{{variable.split( '')}}'。 'with_together'を使ってループを使って、メジャー、マイナー、パッチのバージョンを比較することができます –

+0

プレイブックを投稿できますか? (あなたが何を持っていても) – helloV

答えて

1

代わりにシェルモジュールを使用することを考えましたか?例えば:

- name: Get Kernel version 
    shell: uname -r | egrep '^[0-9]*\.[0-9]*' -o 
    register: kernel_shell_output 

    - debug: msg="{{ kernel_shell_output.stdout}}" 

    - name: Add cstate and reboot bios if kernel is 4.8 
    shell: echo "do what yo need to do" 
    when: kernel_shell_output.stdout == "4.8" 
+2

モジュールの代わりにシェルを使用するのは、嫌なパターンです。 –

+0

また、文字列を比較しても、正しい順序でバージョンを配置する必要はありませんか? (私はこれをテストしていません) – TobyG

7

そのためtestがある:分割のため

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

{{ sample_version_var | version_compare('1.0', operator='lt', strict=True) }} 
+0

ありがとう@ konstantin-suvorov。私はこれでドキュメントを見つけましたが、「厳密」なものの説明を見つけることはできません。私はこの情報をどこに見つけることができるか知っていますか? – TobyG

+0

StrictVersion vs LooseVersionについての[this(http://stackoverflow.com/a/11887885/2795592)の回答を参照してください。 –

関連する問題