2016-01-12 2 views
0

У меня есть маска подсети в анзибле и я хочу, чтобы преобразовать его в маску группового символа (255 - ток) для каждого октета, как так http://wintelguy.com/2009/20090410_subnets.htmlанзибль маски новообращенной подсети маска для

Я знаю, что нужно будет использовать set_fact, но я не уверен, как разбить маску и преобразовать каждый октет.

255.255.255.224

255 - 255 = 0 255 - 224 = 31

Так она равна 0.0.0.31

Благодаря

+0

Не ясно. Приведите пример. Какова ваша версия. – helloV

ответ

2

Делать это с задачами анзибль бы получить довольно сложный , В шаблоне стало бы легче. Но самое лучшее, что вы можете сделать, это создать настраиваемый плагин для поиска.

Что-то вроде этого:

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') }} 

Должно работать с анзибль 1.x - вероятно, нуждается в изменениях для анзибль 2.x

Смежные вопросы