Данила Несин @GrimAnEye
Системный администратор, Go-разработчик
Information
- Rating
- 3,693-rd
- Location
- Новосибирск, Новосибирская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
System Administration, DevOps
From 2,000 $
Linux administration
Windows administration
Golang
Bash
PowerShell
System administration
Technical support
Active Directory
Этот пример плейбука только для того, чтобы вставить в конце рекламу сервиса?
Используется vault, а в чем, например, его преимущество при автоматическом использовании - например какой смысл где-то сохранять пароль, чтобы расшифровать пароль, чтобы с ним запрашивать пароль из облака.
А почему бы не разбить портянку playbook на роль - да, можно и так и так, но в виде роли можно выделить независимые друг от друга части и отлаживать каждую из частей станет проще. Так же использование роли позволит подробно описать, как работает их механизм, раз статья не высокого уровня сложности и поможет разобраться новичкам.
А вообще по ansible очень хорошая и подробная официальная документация с примерами https://docs.ansible.com/
Есть открытый и бесплатный аналог, встроенный даже во многие сетевые карты- уже была статья про него с подробным описанием https://habr.com/ru/articles/681142/
От статьи ожидал увидеть несколько иного, а не только предложения "структурируйте вывод журнала":
Необычных ситуации возникновения и последующей обработки ошибок
Чем руководствоваться при подготовке статических значений ошибок - писать заранее константы с текстом или хардкодом в месте создания ошибки? Как выделить атомарно-полезный текст вывода ошибки?
Насколько объемным должен быть журнал - вывод ошибки от библиотеки и трассировка должны быть по умолчанию, но что можно, и нужно ли, указывать дополнительно?
Распределение по уровням журнала - допустим библиотека журнала предоставляет несколько уровней (о ней ниже) записи, для удовлетворения всех нужд - Debug, Error, Warning, Info, Panic, а приложение - много-модульный web-сервис, в котором может происходить много операций одновременно с разными частями. Падения и грубые ошибки попадают в категории Err и Panic. А как распределить информационные ошибки - нужно ли регистрировать каждый чих, для отслеживания движения пользователя по системе? Ошибка авторизации в аккаунте - это Warning или Info?
Для журнала использую библиотеку https://github.com/uber-go/zap - она базируется на создании структурированного вывода ошибки, заранее объявляя поле пользовательского сообщения, поля для ошибки, при необходимости - автоматически добавляет поле с трассировкой. Немаловажным является, что и расширений куча, за счет того, что можно добавить hook-и при возникновении некого события и выполнить некое дополнительное действие. Таким образом у меня выполняется управление файлами журнала (аля logrotate) и уведомление на почту при падениях приложения.
Благодарю за ответ! Раз уж зашла душещипательная для меня тема - а как использовать пароль из хранилища в самом playbook?
Например для модуля shell мне нужно подставить в команду логин/пароль. При использовании просто переменной я воспользуюсь {{ login }} / {{ pass }}. А как подставить пароль из ранее подключенного хранилища?
Можно у вас попросить написать микро-пример playbook, использующего пароль из хранилища в явном виде, например для shell модуля? Очень не хватает немногословных примеров по конкретным задачам
В плане написания playbook и использования ansible, можно сказать, что я совсем зеленый и могу не понимать некоторых концепций. Но поставленные задачи выполняются. Так же для понижения порога использования коллегами, была развернута Web-GUI обертка над ansible (awx).
И вот, я как то столкнулся с проблемой хранения и передачи пароля в playbook, например в виде аргумента какой-нибудь команды или в виде аргумента к модулю.
Путь 1 - записать пароль напрямую в playbook. В нашем случае доступ до ansible ограниченный и доступ имеет только наша группа. Не хорошо, но допустимо. Но пароль может поменяться.
Путь 2 - внести его в виде переменной и передавать в виде чем-то вроде --extra-vars. Думаю лучше, данная концепция отрабатывает сейчас.
Путь 3 - подумал попробовать освоить встроенные средства хранения паролей. В документации описано что-то вроде того, что и в данной статье. Но возник вопрос, который буквально лежит на поверхности -
Eсли использовать vault только для хранения пароля, то нужно вводить пароль для его расшифровки. Зачем мне его вообще выводить в хранилище, если требуется интерактивное вмешательство.
Но если хранить пароль в хранилище и расшифровывать его файлом с ключом в файле (без дополнительных телодвижений "по открытию/закрытию сейфа") - то какая принципиальная разница от того, что я бы хранил его в открытом виде в виде переменной?
Жду результатов)
Установил на виртуалке bitwarden на rust, ограничив доступ по ssh, с длинным паролем и внешним генерируемым ключом https://github.com/mprasil/bitwarden_rs?ysclid=ld9kyljgah12967974
От ботов спасаюсь fail2ban
Оффтоп, но цель разговора та же- встречали ли вы, что Яндекс браузер блокирует верхнюю панель с кнопками в jira? Она просто не отображается, там где закладки, проекты и создание задачи.
При этом на других браузерах всё ок.
У нескольких пользователях появлялось данное поведение, как на linux, так и Windows
Очень подробно раскрыта тема загрузчиков и подход к его использованию, если начать писать загрузчик с нуля.
Вы не сталкивались с проектом IPXE? Открытая прошивка для возможности загрузки практически откуда угодно и чего угодно. Как раз готовый загрузчик для практических нужд. Использование и сборку ранее описывали на Habr
Самое прикольное с макросами:
В Google Chrome, в режиме редактирования, страница с объемными макросами и текстами, число которых далеко переваливает за 2 десятка начинает страшно тормозить. Больше всего отжирает время ядра как раз скрипт редактора этих макросов (сжатый и объединенный с иными функциями в один .js)
При использовании Firefox, нагрузка разномерно распределяется по нескольким ядрам и страница более отзывчивая, но так же могут быть фризы.
Пришлось как то диагностировать проблему от наших разработчиков, на тему "страницы в нашем пространстве при редактировании страшно виснут и тормозят" - а на странице- десяток макросов кода с объемными json, куча тикет-ссылок на jira, ворох спойлеров и т.д.
Уточните пожалуйста, а чем такое решение сомнительно? Не хватит производительности в виду потока трафика или могут возникнуть некие ограничения?
Полагаю подсказка больше ориентирована при заливке серверов:
Сохраню на будущее.
В данном случае сервис используется офисной техподдержкой для заливки офисных (пользовательских) машин, а для серверов используются виртуальные машины создаваемые из шаблонов. Рассказать об этом не смогу, смежный отдел :)
0) При компиляции не только картинки включаются. Можно встроить скрипт для цепной загрузки, включение дополнительных команд для диагностики и настройки сети.
1,2) У меня проблем с Debian 9, 10, 11 не было проблем при выборе preseed файла. Может быть он был просто недоступен или к нему неверно указывался путь?
3) Разборов и анализов preseed файлов великое множество, мои не выбиваются из этого ряда. Их различия - лишь в способе разбивки диска для Legacy и UEFI режимов соответственно.
А так же - все пакеты для установки из репозитория перенесены в post-install скрипт с повторной загрузкой при ошибке, в виду проблем с загрузкой множества пакетов одновременно - в последние пару месяцев удаленные репозитории случайным образом обрывают подключения при загрузки пакетов, чем ломают установку. В офисной сети это решено заливкой через proxy apt-ng-cache.
Legacy
UEFI
Честно посмотрел различные статьи по настройке cobbler и думаю, что настройка его или настройка "нативного" окружения равны по трудозатратам, но в случае cobbler, при возникновении проблем, придется обслуживать "обертку" над схожими сервисами, что может усложнить диагностику.
Ставилась задача минимализировать настройки, скрипты и конфигурации, а так же иметь низкий порог для понимания, для будущих поколений.
Привет@xTuMoHx
В отпуске появилось время и потому исполнил запрос. Ожидаю мнения)
https://marketplace.visualstudio.com/items?itemName=intellsmi.comment-translate
У меня в vscode стоит плагин переводящий комментарии (хотя на самом деле переводит любой выделенный текст) при наведении мышки. Так что мне без разницы на каком языке исходный код и комментари к нему
Зачем использовать тонну разных программ по вырезанию всего и вся, если есть встроенная утилита конфигурирования dism? При желании, есть графическая оболочка над ней dism++ https://github.com/Chuyu-Team/Dism-Multi-language
И удаляет и отключает, всё что может понадобиться. Остальное должно настраиваться политиками и ключами в реестре вручную, для понимания происходящих процессов. Да, в linux это было бы проще и быстрее, а в windows кучи всякого говнища, но лучше разбирать всё в ручном режиме, а для массовой настройки -писать свои скрипты
https://ipxe.org/howto/sccm
счет sccm и ipxe не подскажу, у нас работает ipxe в котором подготовлены образы для linux и windows. Т.е. разливаем всё что угодно.
Могу написать подробный пост по подготовке сервера, образов Linux и windows , и тому, как оно работает.
Возможно оно будет немного дублировать другие статьи с хабра, но связка работает успешно с минимумом файлов настроек
@xTuMoHx