• Отпадает бот телеграм, как полечить?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Насколько мне известно, единственный 100% надёжный способ лечения - использование webhook'ов.
    Ответ написан
    Комментировать
  • Как забанить ip-адреса, как работает netstat -npla?

    Ziptar
    @Ziptar
    Дилетант широкого профиля
    Ну вообще говоря там есть fail2ban, пользуйтесь им для таких целей. Вручную банить всех, кто пытается подобрать пароль к админке - с ума сойдёте.
    Ответ написан
    Комментировать
  • Как поступить с ноутбуком 2011-2012 года выпуска?

    RostOsipov
    @RostOsipov
    Designer
    Замена HDD на SSD, добавление DDR до 8.
    Ответ написан
    Комментировать
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Как администратор - могу дать только такой совет. Или работайте по установленным правилам, или не работайте там совсем. Если вы будете обходить систему - тем самым вы привлечете к себе внимание, и если возникнут какие то вопросы и проблемы - вы будете одним из первых подозреваемых. Если вы все шифруете - аналогично. На работе - работать.
    Ответ написан
    3 комментария
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    @kgbplus
    Если вы смогли принести свой ноутбук из дома, воткнуть его в произвольную розетку и получить доступ к ресурсам сети и выйти в интернет, то можете не бояться такого "админа" - это не админ.
    Ответ написан
    4 комментария
  • Какой софт для домашней библиотеки выбрать?

    edinorog
    @edinorog
    Троллей не кормить!
    Я думал все юзают opds каталоги. Не?) типа www.sopds.ru
    Ответ написан
    6 комментариев
  • Что учить, чтобы расти в сторону DevOps?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    DevOps расшифровывается как Development Operations.
    В повседневные задачи DevOps инженера входит управление инфраструктурой приложений (в основном веб).
    Что должен знать и уметь такой инженер - например по клику кнопкой в нужном датацентре произошел деплой приложения. DevOps должен суметь создать этот интерфейс с кнопкой и автоматизировать процесс приобретения инстанса (например в AWS), установки операционной системы и необходимых пакетов, доставки приложения на этот инстанс, прописывания всех настроек в приложении и приведение приложения в полную боевую готовность, т.е. состояние, в котором к приложению можно пускать пользователей.

    По пунктам, что нужно знать и уметь:
    • неистово учиться и гуглить
    • сетевые технологии, на уровне маршрутизации, TCP/IP, DNS, SMTP и остальных протоколов начиная с 3 уровня модели OSI
    • сетевые операционные системы (преимущественно семейства Linux) на уровне автоматизирования установки, обновления, настройки безопасности и мониторинга
    • системы виртуализации (Xen, OpenVZ) и контейнеризации (Docker, Vagrant)
    • настраивать сервера и мигрировать конфигурации, например перейти с Apache на Nginx, или с PHP на HHVM
    • Chef
    • Puppet
    • Ansible
    • Capistrano
    • VCS
    • AWS/OpWorks/CloudFormation/CodeDeploy, OpenStack
    • Munin/Logstash/Kibana и другие связки для мониторинга
    • Continuous delivery
    • Программировать на Bash, Ruby, Python, Go, Perl, уметь понимать конфиги на самых экзотических языках, например YAML
    • TDD
    • продукты hashicorp
    • автоматизировать создание и восстановление бэкапов баз данных
    • масштабировать приложения по горизонтали (настраивать балансировщики, реверс-проксирование, шардинг и репликацию в базах)
    • рассчитывать и оптимизировать издержки на поддержание инфраструктуры приложений
    • видеть будущее инфраструктуры приложения и компании, двигать инфраструктуру в это будущее


    DevOps - это хипстерный вариант программирующего сисадмина. Нужно уметь очень быстро учиться и непрерывно осваивать новые технологии. Если какая-то технология только в альфе, вы уже должны учиться уметь ею пользоваться. В момент беты вы ее уже должны обкатывать в пилотных проектах, а релиз должен автоматизированно устанавливаться в продакшене.
    Ответ написан
    13 комментариев
  • Как лучше организовать электронную библиотеку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Все существующие онлайн библиотеки хранят архивы по xx книг, и базу, в которой указано имя архива и имя файла.
    Так получается и удобнее и быстрее и меньше файлов, и меньше зависимость от файловой системы.
    Ответ написан
    Комментировать
  • Как лучше организовать электронную библиотеку?

    Jump
    @Jump
    Системный администратор со стажем.
    Вы бы не в файловой системе их хранили, а в архиве.
    А уж архивы вмещающие 500-1000 книг, на файловой системе.
    Так будет проще, быстрее, и экономичнее.
    Ответ написан
    4 комментария
  • Как правильно перевести всю инфраструктуру на виртуализацию?

    athacker
    @athacker
    1) Поддерживаю ораторов, которые говорят о разворачивании машин с нуля в виртуалке, без попыток конвертации P2V. При конвертации могут разные артефакты всплывать, ну нафиг. Грамотно спланированный перенос не потребует даже даунтайма сервисов.

    2) СХД отдать только под виртуализацию, никаких бэкапов там. В вашем случае -- это примерно как из пушки по воробьям. Под бэкапы -- вытащить все винты из ваших пролиантов и сложить их на один какой-то сервак, и на его основе сделать бэкапохранилку. ESX может грузиться и по iSCSI, и с флэшки. У пролиантов есть отсек для SD-карточки, можете туда флэшку с ESX воткнуть. Иными словами -- для хостов виртуализации жёсткие диски не нужны.

    3) Kerio -- фу-фу-фу! :-) Карточки вам не нужны, аппаратный роутер, в принципе, тоже. Каждого провайдера в отдельный VLAN, оба VLAN -- в виртуалку, на виртуальный сервер с FreeBSD, например. И всё, маршрутизируйте как угодно.

    4) QNAP в качестве СХД -- фу-фу-фу! Уж лучше самосбор какой-нибудь (сервак с большой дисковой корзиной, или отдельно пара серверов+корзинка DAS), с FreeBSD и ZFS внутри, да даже с виндой. Оно и дешевле обойдётся, и обслуживать проще. У NAS-ов из дешёвого сегмента артефакты бывают очень разнообразные и зело причудливые. Отваливаются LUNы, слетают права, вообще из сети пропадает. Короче, нахлебались, было дело.

    5) Подумайте в сторону винды. Учтите, что Windows 2012 R2 Standard в качестве хоста виртуализации (Hyper-V) даёт возможность внутри себя виртуализовать 2 виндовых сервера по этой же лицензии. Иными словами, если у вас 3 лицензионных Win2012 R2 стоят на хостах, то с их помощью вы можете виртуализовать 6 серверов с виндой, не покупая никаких доп. лицензий.

    Hyper-V умеет запускать виртуалки прямо на файловых шарах SMB 3.0. То есть, не нужно iSCSI, FC и прочих модных технологий из области NAS/SAN. Достаточно Win2012 R2 и открытой файловой шарой на нём. Винда умеет технологию Storage Spaces. Которая (технология) умеет даже автоматически tiering, причём из коробки. QNAP, который это умеет, будет стоить тысяч под 300 рублей. Это без дисков.

    Исходя из набора сервисов, который у вас есть в сети, вам, в принципе, СХД и не нужна. Не те скорости, не те объёмы. У вас же нет 10-гигабитных линков, правильно я понимаю? Посмотрите вместо СХД на какие-нибудь сервера с большими корзинками. Ну, допустим, от 8 до 24 дисков. 8 есть практически у всех, у Dell есть 10 и 20 дисков, у STSS есть сервера с корзиной на 24 диска (вот так оно выглядит). Либо на DAS (direct attached storage). Нужен сервер (практически любой), в сервер SAS-HBA адаптер с парой внешних портов, и корзинка DAS, которая SAS-кабелями подключается к этому адаптеру.

    Примите во внимание также, что брендовые СХД (даже QNAP) -- это вещь в себе, и диагностику там провести достаточно сложно. Поэтому обычно покупается поддержка у вендора. А она стоит тоже порядком денег. А без поддержки самому лазить в потроха СХД -- чревато граблями вооооооот такого размера. Самосбор же проще диагностировать и проще чинить (менять компоненты), если вдруг что.
    Ответ написан
    19 комментариев
  • Что нужно знать чтобы стать начинающим системным инженером (devops)?

    Singaporian
    @Singaporian
    Статья, которую должен прочитать каждый.

    DevOps - не профессия. Это название культуры доставки кода от разработчика (dev) через тестировщиков и до сисадмина(ops) и обратная связь по этой цепочке.

    Человека, который внедряет DevOps, обычно называют... как хотят. Чаще всего этим занимается какой-нибудь нон-конформист в команде.

    Профессии, которые отрисуются в процессе построения этой методологии следующие:
    • Build Engineer - инженер, который управляет зависимостями, сборками, конфликтами кода.
    • Release Engineer - инженер, который управляет репозиторием кода (кто куда и по каким правилам мерджится и откуда бренчуется). Пожалуй, это самая сложная задача в больших проектах. Особенно с нестрогим Agile или в Waterfall.
    • Automation Engineer - инженер, который занимается автоматизацией рутинных задач. Обычно деплоймент, автотесты, etc. Все эти buzz-слова типа Docker - его инструментарий.
    • Site Reliability Engineer - инженер, который поддерживает ops (апгрейды, расширение железа)
    • Configuration Manager - непонятная мне специальность. Жуткое порождение HR-специалистов, давящих на громкое название позиции. Можно было бы пойти дальше и назвать специальность ZooKeeper Vice President

    В список не вошла самая главная специальность - "психолог". Человек, который должен следить за людьми и вычислять психологически важные аспекты команды, пораждающие боттлнеки производительности.

    Почти всегда все эти роли совмещают один-два человека. Ну это зависит от качества кода.
    Назовем эту компанию BRAE/CM для краткости.
    Задача BRAE/CM состоит в том, чтобы программный код, который выходит из под пера программистов, оставался на контроле программистов и сисадминов одновременно. Программисты, равно как и сисадмины, благодаря DevOps-подходу, имеют возможность и даже обязаны обслуживать код на протяжении всего жизненного цикла от планирования архитектуры до мусорки.
    То есть сисадмины начинают рулить еще до того, как код попадет к ним - на ранних стадиях, а программисты продолжают рулить своими задачами уже после того, как код от них ушел к сисадминам - на поздних стадиях. И все это прозрачно друг для друга и все проблемы и решения ходят туда сюда и не спотыкаются о бюрократия в стиле "ничего не знаю, мы код уже закоммитили, у меня тут свои проблемы, у них сломалось - пусть сами и чинят".

    Так вот эта работа - завершающая стадия системного администратора и начинающая стадия разработчика. Поэтому не бывает Junior BRAE/CM.
    BRAE/CM бывает всегда только Senior в системном администрировании и всегда Junior в программировании.

    Еще один момент. В домашних условиях можно выучить инструменты на базовом уровне. Но не поварившись в одной кастрюле с реальными разработчиками, смысл всей этой кухни не понять. Так что сразу забейте. Но если хотите, могу описать пошаговый длинный путь как стать RE/CM:

    Сразу оговорюсь по языкам.
    У каждого языка свое предназначение. Java чаще используется в корпоративном секторе. Там много серверов и сложные бизнес-приложения. Поэтому Java-мир очень чувствителен к таким понятиям, как "технинческий долг" и "управление процессом разработки". И именно поэтому именно там все основные вакансии DevOps и именно там будет самый интересный опыт.
    Кроме Java, традиционно сильная DevOps-культура у Ruby. Практически все остальные языки не имеют столь развитой и популярной инфраструктуры в в данном контексте и потому вам скорее всего будут неинтересны.
    Другими словами, если в среде разработчиков выбор языка - тема для холивара и эмоций с миллионами сравнительных анализов с противоположными результатами, то для специалистов по DevOps выбор очевиден и прозрачен. Java - это одновременно самые интересные задачи, самый богатый toolset, самый большой выбор вакансий и самые высокие зарплаты.

    Каждый последующий пункт, кроме особо длинного первого, будет выливаться в неделю-две достаточно плотного труда. Если не прокрастенировать и уделять этому по несколько часов вечером.

    Итак, что делать:
    1) Почитать книги Head First по Java. Пройти курсы Java на EDX.
    2) Освоить SVN. Есть прекрасные тьюториалы. (GIT освоим позже)
    3) Поставить VirtualBox (не VMWare!!!)
    4) Написать простенькое приложение. Код коммитить в SVN. Собирать его при помощи maven.
    5) Поднять на отдельной виртуалке Jenkins. Он должен брать код приложения на SVN и запускать свой локальный maven для сборки.
    6) Написать модульные тесты (unit tests) своего кода. Пусть maven и их прогоняет.
    7) Поднять где-нибудь Nexus. Усложнить задачу maven, чтобы он теперь складывал все в Nexus. Если maven'у потребуются внешние библиотеки, он тоже не сам должен ходить в интернет, а через Nexus (Central repo).
    8) Настроить на своем десктопе vagrant так, чтобы он с нуля создавал виртуалки VirtualBox.
    9) Создать виртуалку DEV через vagrant. При этом ansible должен на ней что-нибудь настроить (например установить JDK)
    10) Научиться деплоить jar/war из Nexus на виртуалку DEV чем-нибудь. Чем - не посоветую, так как сам работаю с очень сложным IBM uDeploy, а это точно не для новичка. Посмотрите в сторону Rundeck или чего-то такого. Может самим Jenkins'ом задеплойте.
    11) Напишите интеграционные АВТОтесты. На чем хотите (как вариант: Selenium).

    Усложняем систему.
    12) Донастраиваем Jenkins: собирает maven-проект; выкладывает на Nexus; дергает vagrant/ansible для создания виртуалки SIT (system integration test); деплоит приложение на SIT; прогоняет автотесты на SIT; удаляет виртуалку после успешного завершения автотестов.
    13) Прикручиваем SonarQube в Jenkins для статического анализа кода. Исправляем косяки своего кода, согласно полученным от SQ рекомендациям.
    14) Прикручиваем мониторинг Sensu.
    15) Пишем нагрузочные тесты на чем-нибудь. В идеале потрогать два инструмента: jMeter и Gatling.
    16) Как и в 12-м шаге прикручиваем в Jenkins автоматизацию создания виртуалки SLT (Stress/Load test) и прогона на ней тестов. Только уже лоад-тестов(обязательно) и стресс-тестов(опционально) соответственно.
    17) Дописываем в свое приложение какой-нибудь функционал, чтобы использовалась база.
    18) Придется познакомиться с LiquiBase. Деплой SQL руками делать запрещено.
    19) Перейти на Docker (то есть теперь приложение выкладывать не напрямую в ОС, а внутрь докера)

    20) Денек на то, чтобы почитать про Agile, Scrum, Waterfall и прочие организационные порядки.

    А теперь немного уходим в управление проектом:
    21) Поставить Atlassian Jira. Разобраться, чем отличаются Epic, Story, Task, Sub-Task. Создать себе подобной этой структуре фронт работ (делать его не придется, просто нафантазируйте).
    22) Поставить Atlassian Stash и связать его с Jira.
    23) Переехать со своего SVN на GIT, предоставленный Stash'ем.
    24) Пройти Git-тьюториал какой-нибудь. Инструмент очень нетривиальный.
    25) Взять любую таску в работу. При этом в начале работы сделать новый Git branch из тикета Jira.
    26) По завершению работы запустить всю построенную ранее цепочку, но уже для своего брэнча.
    Дайте попробую угадать: вам пришлось скопировать все джобы и переписывать в них ветки?
    27) Сделать джобы нормально. Чтобы одни и те же можно было использовать для любых веток - по аналогии с принципом программирования "reuse code". У Вас будет reuse job :)
    28) Сделать pull request, самому сделать code review и самому себя же за-approve'ить. После этого сделать merge своей ветки в master.
    29) Сделать сборку брэнча автоматической по git-hook (или SCM pool)

    30) А теперь высший пилотаж: к чертям Docker, Copistrano и прочую buzz-word-hipsters-галиматью. Теперь вы с этим знакомы и сможете применить, но пришло время выгрызать этот детский сад калёным железом. Теперь вы доставляете код только как .deb-пакеты. Это значит, что вы:
    a) разбиваете control-файл на несколько пакетов, возможно с lib*,
    b) оверрайдите все ~20 dh_ в файле rules так, чтобы все это соответствовало вашим наработкам в предыдущих пунктах.
    c) раскидываете файлы по .install
    d) самое тяжелое: готовите .preinst, .postinst, .prerm, .postrm файлы СОГЛАСНО ИХ ПРИМЕРАМ .ex, сгенерированным dh_make - то есть с разбиемнием на update/configure/broken-install и что там еще есть. Это означает, что при переустановке, при апгрейде, при даунгрейде, при удалении и при пурдже, у вас будут разные сценарии, каждый из которых должен быть проработан досканально. На этом этапе вы также познакомитесь с понятием "регрессионные тесты".

    Ну как бы базовый вариант вот. Но это далеко не весь инструментарий и путь. Это так, для начала.
    Кроме этого неплохо бы познакомиться с Puppet (это не очень подходит для DevOps, скорее для рядовых админов с кучей серверов, но это очень популярный инструмент ввиду того, что никто не понимает, что такое DevOps и вас скорее всего заставят управлять сотней серверов, вместо релиз инжиниринга). А так же нужно познакомиться с операционными системами NixOS (обязательно) и CentOS/Debian (опционально, но я бы палкой бил тех, кто не знает эти OS). Кроме того, надо базово ориентирваться в PostgreSQL.

    Внимание, важный момент, который должен быть вшит на уровень подсознания у DevOps-ориентированного инженера: вы все время пробуете новые инструменты. Вы всегда будете находить что-то очень отличное. Знаете Nexus как свои пять пальцев и он решает почти все проблемы? Отлично! Теперь выкидываете Nexus и ставите Artifactory. Знаете хорошо CentOS? Круто! Теперь пробуете все это проделать на Windows или Debian. Потому что только когда вы сможете сравнивать инструменты, ваша работа будет ювелирной. А DevOps бывает либо ювелирным, либо он не DevOps. Вы должны быть языко-независимым, платформо-независимым и инструменто-независимым.

    Что будет дальше? Дальше вы начнете работать с микросервисами (сотни одинаковых контейнеров в облаке, которые должны как-то работать друг с другом без ручной конфигурации). Тогда познакомитесь со всякими Consul, ZooKepper и кучей инструментов AWS/OpenStack.
    Ответ написан
    13 комментариев
  • Какая OS семейства *nix встречается на реальных серверах чаще?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    Настраиваются они одинаково. Если вы умеете хорошо делать это на одном дистрибутиве, то без проблем сможете сделать на любом другом.
    А на реальных серверах встречаются все популярные поддерживаемые дистрибутивы, какие именно зависит от задач.
    Ответ написан
    Комментировать
  • Как перенести Kubuntu с одного жесткого на другой меньшего объема?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Мигрировать через pvmove, в общих чертах так:
    В примере, в качестве диска куда мигрируем у меня RAID раздел md1, не забываем поменять на свой физический диск типа sdb1
    pvcreate /dev/md1 -ff
    Расширяем свой PVE на новый диск
    vgextend pve /dev/md1
    Переносим данные с LVM-раздела первого диска, на LVM-раздел второго диска. Процедура может продолжаться очень долго. Время зависит от объема и скорости жестких дисков.
    pvmove /dev/sda2 /dev/md1
    Убираем из LVM первый диск
    vgreduce pve /dev/sda2
    Правим загрузчик и радуемся жизни.
    Ответ написан
    3 комментария
  • Как сохранить правила iptables после перезагрузки Ubuntu?

    EKrava
    @EKrava
    в debian и ubuntu добавили пакет iptables-persistent
    который использует iptables-save/iptables-restore

    #service iptables-persistent
    Usage: /etc/init.d/iptables-persistent {start|restart|reload|force-reload|save|flush}

    после настройки правил как нужно, сделать service iptables-persistent save и при следующей загрузке они будут применены
    Ответ написан
    4 комментария