nic*_*coX 4 centos conditional ansible
我正在使用 Ansible 检查主机,如果/vmlinuz
内核没有解析为uname -r
.
该if
条件是,虽然总是identifing即使试验机已经重新启动,重新启动和内核解析为相同的内核:
if [ $(readlink -f /vmlinuz) != /boot/vmlinuz-$(uname -r) ]; 然后回声'重启'; 否则回声'不'; 菲
- name: Check for reboot hint.
shell: if [ $(readlink -f /vmlinuz) != /boot/vmlinuz-$(uname -r) ]; then echo 'reboot'; else echo 'no'; fi
ignore_errors: true
register: reboot_hint
- name: Rebooting ...
command: shutdown -r now "Ansible kernel update applied"
async: 0
poll: 0
ignore_errors: true
when: kernelup|changed or reboot_hint.stdout.find("reboot") != -1
register: rebooting
- name: Wait for thing to reboot...
pause: seconds=45
when: rebooting|changed
Run Code Online (Sandbox Code Playgroud)
您可以通过以下 rpm 查询可靠地确定最新安装的内核版本:
rpm -q kernel --queryformat '%{installtime} %{version}-%{release}.%{arch}\n' | sort -n -k1 | tail -1 | cut -d ' ' -f 2
Run Code Online (Sandbox Code Playgroud)
RHEL 7 上的示例输出:
3.10.0-229.11.1.el7.x86_64
Run Code Online (Sandbox Code Playgroud)
现在只需检查输出是否uname -r
匹配:
3.10.0-229.1.2.el7.x86_64
Run Code Online (Sandbox Code Playgroud)
在本例中,它不匹配,需要重新启动。
您可以使用 test 来比较字符串:
if [ "`rpm -q kernel --queryformat '%{installtime} %{version}-%{release}.%{arch}\n' | sort -n -k1 | tail -1 | cut -d ' ' -f 2`" = "`uname -r`" ]; then echo "latest kernel already booted."; else echo "new kernel. reboot required."; fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3717 次 |
最近记录: |