我正在尝试编写一个 ansible 剧本来检查是否为当前运行的内核加载了特定模块。
如果我执行 lsmod | grep my_module_$kernelVer
我会看到类似的东西
my_module_2_6_32_754_3_5_el6_x86_64
如果我使用的是 2.6.32-754.3.5.el6.x86_64 内核
如果我仍在该内核上并且所述模块是
my_module_2_6_32_431_el6_x86_64
我需要为服务器上的当前内核重建模块。我知道如何在 bash 中执行此操作,但我不确定如何使用 ansible 和注册命令存储特定值,我刚刚学习 ansible。
感谢您提供的任何帮助。
答案1
如果我执行 lsmod | grep my_module_$kernelVer
好的,这是一个调用外壳模块。它需要是一个 shell,因为您正在使用|
,这是一个 shell 构造。
我知道如何在 bash 中执行此操作,但我不确定如何使用 ansible 和注册命令存储特定值,我刚刚学习 ansible。
您可以使用register
捕获命令的结果并稍后参考。 http://www.mydailytutorials.com/ansible-register-variables/看起来值得一读。
说了这么多,您真的确定您如此关心它的匹配吗?好吧,当然,模块未加载对您来说可能是一个大问题。但无论如何你都在测试你的内核升级,对吧?毕竟,您在这里定义的方法删除加载的模块建造一个新的。我过去加载过第三方模块,它们的名称中甚至没有内核版本,坦白说我更喜欢它。我不是内核模块方面的专家,但保持内核版本控制和模块版本分离是值得考虑的。