Fix `when` expr of conntrack module loading (#12458)
Retrying to load conntrack modules was bound to fail due to the way, the current `when` conditions were utilized. It was based on the assumption, that in case of success, the registered variable would have an `rc` attribute with the value `0`. Unfortunately, the `rc` attribute is only present in case of a failure, where it's value is >1. The result of `community.general.modprobe` in case of success looks like this: ``` { "changed": false, "msg": "All items completed", "results": [ { "ansible_loop_var": "item", "changed": false, "failed": false, "invocation": { "module_args": { "name": "nf_conntrack", "params": "", "persistent": "present", "state": "present" } }, "item": "nf_conntrack", "name": "nf_conntrack", "params": "", "state": "present" } ], "skipped": false } ``` While it looks like this in case of a failure: ``` { "changed": false, "failed": true, "msg": "One or more items failed", "results": [ { "ansible_loop_var": "item", "attempts": 3, "changed": false, "failed": true, "invocation": { "module_args": { "name": "nf_conntrack_doesnotexist", "params": "", "persistent": "present", "state": "present" } }, "item": "nf_conntrack_doesnotexist", "msg": "modprobe: FATAL: Module nf_conntrack_doesnotexist not found in directory /lib/modules/5.14.0-570.32.1.el9_6.x86_64\n", "name": "nf_conntrack_doesnotexist", "params": "", "rc": 1, "state": "present", "stderr": "modprobe: FATAL: Module nf_conntrack_doesnotexist not found in directory /lib/modules/5.14.0-570.32.1.el9_6.x86_64\n", "stderr_lines": [ "modprobe: FATAL: Module nf_conntrack_doesnotexist not found in directory /lib/modules/5.14.0-570.32.1.el9_6.x86_64" ], "stdout": "", "stdout_lines": [] } ], "skipped": false } ``` By evaluating `failed` instead, this issue can be prevented. See also: - https://github.com/kubernetes-sigs/kubespray/issues/11340 Co-authored-by:Max Gautier <mg@max.gautier.name>
Loading
Please sign in to comment