簡體   English   中英

Ansible將子網掩碼轉換為通配符掩碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM