如何在Ansible中执行按位运算?

时间:2018-01-31 20:19:26

标签: ansible jinja2

假设我有这个MAC地址:

04:f0:21:38:f5:a3

我正在寻找Ansible的方法来修改它。在这种情况下,我需要执行以下操作:

将最少4位有效位设置为0。 翻转第7位。

结果是:

06:f0:21:38:f5:a0

在Ansible中有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

我不确定“将最少4位有效位设置为0.翻转第7位。”是指,但这是您自定义的方法:

从2.10开始,我没有看到在Jinja2中执行按位操作的方法,所以编写一个自定义过滤器(将它放在playbook目录下的filter_plugins/bitwise_filters.py中):

#!/usr/bin/python
class FilterModule(object):
    def filters(self):
        return {
            'bitwise_and': self.bitwise_and
        }

    def bitwise_and(self, a, b):
        c = a & b
        return c

使用自定义过滤器和hwaddr过滤器:

debug:
  msg: "{{'04:f0:21:38:f5:a3'|hwaddr('int') | bitwise_and('00:ff:ff:ff:ff:ff'|hwaddr('int')) | hwaddr('linux')}}"