amarao_san

Category:

ansible: ip_link_set

Я всерьёз его пишу. Предыдущая попытка была несколько поверхностной и покрывала одновременно слишком много кейсов и каждый не до конца.

После срача о том, что ip link , который и up, и down, и present и absent, я согласился с аргументацией и начал писать только ip link set (разумное подмножество того, что умеет ip link set — разумное — это то, что я могу воспроизвести и понять).

В принципе, с третьей итерации я уже сделал его почти отлично. Он больше не ломается на разном числе параметров в выводе ip, я переделал его в ip -o (я бы рад, ip -j (т.е. json), но Centos6 must be supported, а там всё такое свежее, что в спеках CSV ещё чернила не высохли, что уж про json).

Ещё у меня огромная сага с netns. В отличие от большинства параметров, он эквивалентен операции 'move', а когда вы делаете 'move' для группы интерфейсов, там безумная логика (часть уже подвинута, часть уже не подвинута, плюс в разных namespace'ах могут быть интерфейсы с одинаковыми именами).

Но я постепенно всё это разгребаю и оно мне начинает нравиться всё больше. Если на code review меня сильно не завернут (... 47 юнит-тестов, 5 интеграционных...), то я потом так же ещё хочу ip route и ip address сделать. Ну и изначальный ip link add (как туда delete семантически вфигачить — это вопрос открытый).

Зачем оно мне сдалось? Когда лабы делаешь, персистентность не нужна, а вот интерфейсы, namespace'ы и бриджи плодятся тоннами. Модуль туда просто адски must have.

Оно находится тут: 

https://github.com/amarao/ansible/blob/ip_link_set/lib/ansible/modules/net_tools/ip_link_set.py

Юнит тесты тут: https://github.com/amarao/ansible/blob/ip_link_set/test/units/modules/net_tools/test_ip_link_set.py

Интеграционные тесты: https://github.com/amarao/ansible/blob/ip_link_set/test/integration/targets/ip_link_set/tasks/main.yaml

Замечания приветствуются. Цель — Анисбл 2.10 или 2.11. Запускать ещё рано, т.к. часть интеграционных тестов осмысленно фейлится (работаю).

Текущий роадмэп: пофиксить работу при netns, привести документацию в вид, который doctest примет, пройти sane тесты (он придирается к докстрингам).

Error

default userpic

Your IP address will be recorded 

When you submit the form an invisible reCAPTCHA check will be performed.
You must follow the Privacy Policy and Google Terms of use.