[英]Ansible convert subnet mask to wildcard mask
我在ansible中有一个子网掩码,我想将其转换为每个八位位组的通配符掩码(当前为255),因此http://wintelguy.com/2009/20090410_subnets.html
我知道我将需要对此使用set_fact,但是我不确定如何分割掩码并转换每个八位位组。
255.255.255.224
255-255 = 0255-224 = 31
所以等于0.0.0.31
谢谢
使用Ansible任务执行此操作将变得非常复杂。 在模板中,它将变得更加容易。 但是,您可以做的最好的事情就是创建一个自定义查找插件。
像这样:
import ansible.errors as errors
class LookupModule(object):
def __init__(self, basedir=None, **kwargs):
self.basedir = basedir
def run(self, terms, inject=None, **kwargs):
if not isinstance(terms, basestring):
raise errors.AnsibleError("lookup expects a string (IP address)")
parts = terms.split(".")
l = map(lambda x: str(255-int(x)), parts)
return [".".join(l)]
将其保存为您的项目中的plugins/lookup/wildcard_mask.py
,然后将其称为
{{ lookup('wildcard_mask', '255.255.255.224') }}
应该与Ansible 1.x一起使用-可能需要对Ansible 2.x进行更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.