diff --git a/library/system/sysctl b/library/system/sysctl index 59b92eb6f4..0039928809 100644 --- a/library/system/sysctl +++ b/library/system/sysctl @@ -148,7 +148,7 @@ class SysctlModule(object): if self.args['sysctl_set']: if self.proc_value is None: self.changed = True - elif self.proc_value != self.args['value']: + elif self._compare_values(self.proc_value, self.args['value']): self.changed = True self.set_proc = True @@ -161,6 +161,21 @@ class SysctlModule(object): if self.set_proc: self.set_token_value(self.args['name'], self.args['value']) + def _compare_values(self, a, b): + """Expects two string values. It will split the string by whitespace + and compare each value. It will return True if both lists are the same, + contain the same elements and the same order.""" + if a is None or b is None: + return False + + a = a.split() + b = b.split() + + if len(a) != len(b): + return False + + return len([i for i, j in zip(a, b) if i == j]) != len(a) + # ============================================================== # SYSCTL COMMAND MANAGEMENT # ==============================================================