2015-01-14 2 views
0

Я работаю над загружаемой игрой для запуска процесса подготовки, и я принимаю ввод пользователя для ряда переменных, включая имя хоста и ip. После того, как у меня есть ip, я могу вычислить шлюз, который мне нужно дать Cobbler, но я не могу понять, как превратить ip в шлюз в пределах сужения незанятой пьесы. Кажется, что это должно быть возможно, но я просто не вижу этого.Обработка текста в playbook

На самом деле единственным решением, с которым я столкнулся до сих пор, является создание локального файла с использованием шаблона (который, кажется, позволяет создавать более сложные шаблоны, чем просто фильтры), а затем использовать local_action для выполнения этого файла. Но есть ли лучший способ?

ответ

2

Если все, что вам нужно сделать, это изменить что-то вроде 192.168.123.234 на 192.168.1.1, то что-то по следующему будет работать:

vars: 
    ip: '192.168.123.234' 

tasks: 
- local_action: shell echo {{ ip }} | sed -e 's/\.[0-9]*.[0-9]*.$/.1.1/' 
    register: result 

- local_action: debug msg={{ result.stdout }} 

Это немного некрасиво, но он получает работу.

+0

Мне было интересно, нужно ли мне вникать в создание настраиваемого модуля для этого. Будет ли это чище, или это значит, что это слишком сложно? – Bret

+0

Хотя модули Ansible могут быть написаны практически на любом языке, все учебные пособия, включенные модули и т. Д. Написаны на Python. Есть быстрый учебник по написанию их (в Python) [здесь] (http://docs.ansible.com/developing_modules.html). В двух словах параметры передаются в командной строке, а результаты передаются как JSON через stdout. Таким образом, создание настраиваемого модуля может оказаться немного более чистым, особенно если вам нужно сделать значительно больше, чем описано выше. –

+0

Я работаю над этим, потому что понял, что есть несколько шагов, которые можно объединить в один логический. Спасибо за помощь, однако, я уверен, что я буду использовать этот трюк для использования в будущем! – Bret

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