Pull to refresh

Comments 5

прошу прощения, не совсем понял, что Вы имели в виду

Картинка для заголовка статьи - "пишЕшь"

Пишешь, а не пишишь... все ок

Прочитал. Протёр глаза, сказал "брррррр!", умылся холодной водой, заглянул в дерево исходников Ansible - но нет, статья всё также осталась откровенной дичью. Объясню по пунктам свою точку зрения.

В нём есть какой-то action plugin, и он отправляет запрос на исполнение модуля на каком-то удаленном хосте.

В дереве исходников Ansible не существует такого action-плагина, который "отправляет запрос на исполнение модуля на каком-то удалённом хосте". Вот это поворот, правда? И можно даже не доставать контраргумент в виде action-плагина template, который внутри себя вызывает модуль copy - это и так общеизвестный факт. Только вот сам "модуль" copy - не модуль, а action-плагин. Только ведь в статье же не об этом action-плагине говорилось? Скиньте, пожалуйста, ссылку на этот волшебный action-плагин в дереве исходников Ansible, я реально с превеликим удовольствием углублю свои познания во внутреннем устройстве инструмента.

Установка зависимостей через "pip install" - это прямо праздник непослушания какой-то. Нормально написанные модули не таскают с собой развесистые клюквы зависимостей, а если всё-таки зависимости нужны, то это делается с уважением ко времени и силам того, кто будет использовать модуль. Достаточно просто сложить зависимости в проект по предопределённым путям (lib + module_utils, просто почитайте материалы об этом в Интернете и на Хабре), и тогда и модуль, и зависимости будут автомагически подгружаться Ansible, без малейших усилий со стороны автора или пользователя модуля .

Хелпер module_utils

Что, простите? Это не "хелпер", а Python-пакет (если в каталоге есть файл __init__.py, то Python расматривает этот каталог как пакет). Правильно ли я понимаю, что "...оптимизация на пустом месте – она никогда ещё лишней не была..." (С), и в данном случае странное нерусское слово - просто ярлычок для того, в чём вам не захотелось разбираться?

По поводу использования contextmanager. Вся экономия на спичках в виде замены вызовов dict() на создание словарей-литералов с помощью фигурных скобок умерла примерно где-то в районе import contextlib.

Импорты пакетов/модулей в кодовой базе Ansible принято делать вполне определённым образом,

а именно:
try:
    import syslog
    HAS_SYSLOG = True
except ImportError:
    HAS_SYSLOG = False

try:
    from systemd import journal, daemon as systemd_daemon
    # Makes sure that systemd.journal has method sendv()
    # Double check that journal has method sendv (some packages don't)
    # check if the system is running under systemd
    has_journal = hasattr(journal, 'sendv') and systemd_daemon.booted()
except (ImportError, AttributeError):
    # AttributeError would be caused from use of .booted() if wrong systemd
    has_journal = False

HAVE_SELINUX = False
try:
    from ansible.module_utils.compat import selinux
    HAVE_SELINUX = True
except ImportError:
    pass

Кстати, если уж очень хочется самовыражаться в коде модуля (все мы это иногда делаем, чего уж там): для сообщения об отсутствующей внешней зависимости с 2018 года есть штатная функция missing_required_lib.

Про инвентори. INI-инвентори в 2022? Серьёзно? Он как формат умер лет шесть назад, с возвращением из забытья YaML-формата, так что оставьте уже, пожалуйста, INI покоиться с миром. Его популярность в русскоязычных видео по Ansible на YouTube говорит только о том, что авторы этих видео не горят желанием осваивать ничего нового, но не более.

Это я уж не говорю, что очень странно в оформлении сниппеты кода кидать картинками там, где у хабраразметки есть специальный тег (тем более, что код можно убирать под спойлеры). Хотя нет, я, кажется, понял: речь о том, чтобы, ничего не меняя, использовать готовые слайды с лекций (facepalm.jpg).

Если подытожить, то вся подача материала очень напоминает карго-культ: в основном всё про ритуалы-ритуалы-ритуалы без знания основ и, как результат, без малейших объяснений, почему конкретный приём нужен и как работает под капотом.

Так что вот вам моя честная и открытая просьба: пожалуйста, хотя бы из уважения к вложенным усилиям авторов инструмента, не беритесь учить других тому, в чём не слишком хорошо и глубоко разбираетесь.

Sign up to leave a comment.