Pull to refresh

Релиз OnlineConf, системы конфигурирования уровня приложения

VK corporate blog System administration *Product Management *


Состоялся публичный opensource-релиз системы конфигурирования уровня приложения OnlineConf, которая на протяжении последних восьми лет активно используется у нас в Mail.ru Group.


Исходный код сервиса, а также библиотеки для ряда используемых в компании языков программирования, опубликованы под лицензией MIT. Попробовать сервис можно при помощи Docker, в комплекте имеются конфигурационные файлы для быстрого запуска тестовой инсталляции.

Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Views 1.7K
Comments 0

SSH для частого использования

Configuring Linux *
Наверное, многие из читающих «Linux для всех» пользуются SSH. Я, например, администрирую большое количество UNIX-систем, и, чтобы быстро получить доступ к нужной машине, приходится использовать возможности протокола на уровне, отличном от примитивного.
Читать дальше →
Total votes 159: ↑145 and ↓14 +131
Views 67K
Comments 120

Наследование конфигов в Zend_Config

Zend Framework *
Для тех, кому лень читать длинное предисловие: перемотайте до последней части «Простая идея, которая пришла мне в голову».
Я хотел поставить якорь, но хабрапарсер не разрешает :(

Zend_Config и секции


Официальная документация Zend Framework советует разделить конфигурационный файл на несколько секций, каждая из которых будет отвечать за разную среду, в которой должен работать проект.
При этом, одна секция конфига может наследовать другую, переопределяя только те параметры, которые должны быть изменены.

На первый взгляд, такая идея кажется разумной, но я столкнулся с некоторыми ограничениями этого подхода…
Читать дальше →
Total votes 28: ↑23 and ↓5 +18
Views 1.5K
Comments 21

Настройка nginx

Nginx *
Тема правильной настройки nginx очень велика, и, боюсь, в рамки одной статьи на хабре никак не помещается. В этом тексте я постарался рассказать про общую структуру конфига, более интересные мелочи и частности, возможно, будут позже. :)

Неплохой начальной точкой для настройки nginx является конфиг, который идёт в комплекте с дистрибутивом, но очень многие возможности этого сервера в нём даже не упоминаются. Значительно более подробный пример есть на сайте Игоря Сысоева: sysoev.ru/nginx/docs/example.html. Однако, давайте лучше попробуем собрать с нуля свой конфиг, с бриджем и поэтессами. :)
подробности
Total votes 88: ↑78 and ↓10 +68
Views 268K
Comments 53

Управление конфигурациями

Lumber room
Топик породила человеческая лень :)
Неоднократно приходилось сталкиваться с ситуацией, когда нужно изменить какой-либо параметр, фигурирующий сразу в нескольких конфигах, например, ip адрес интерфейса. И, как логично догадаться, вспомнить «сходу» какие это файлы оказывалось непросто.
Идея не нова и построена на использовании шаблонов; язык — ruby.
Читать дальше →
Total votes 4: ↑2 and ↓2 0
Views 308
Comments 9

Access: Order Allow,Deny или Deny,Allow???

Lumber room
Конфигурировал CUPS, в процессе возникла непонятка с директивой Order, которая устанавливает порядок чтения из директив Allow и Deny. На apache.ru есть об этом информация, но не полная и с опечаткой/ошибкой. Я перевёл статью с httpd.apache.org + спроецировал материал на локальные сети. Авось пригодится кому-нить.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 6.6K
Comments 6

Шаблон базовой настройки маршрутизатора Cisco

Cisco *
В последнее время приходится часто настраивать с нуля маршрутизаторы Cisco (в основном 800-1800 серии) для филиалов моей компании и дабы не набирать одни и теже команды третий десяток раз составил для себя небольшой шаблон настроек на разные случаи жизни. Сразу скажу что сертификаты от Cisco не получал, книжек по данным роутерам особо не читал, весь свой опыт приобрел методом научного тыка, курением мануалов на cisco.com и кое каким вдумчивым заимствованием кусков чужих конфигов…
Читать дальше →
Total votes 45: ↑43 and ↓2 +41
Views 414K
Comments 47

Автоматический бекап конфигов с помощью DropBox

Cloud services *
В очередной раз убедившись о том, что автоматический бекап — штука очень полезная и нужная, я решил задуматься о том, как мне упростить этот процесс. Для меня в первую очередь наибольшую ценность представляют различные конфиги вроде базы данных Миранды, базы паролей Keepass, медиатеки iTunes и кучи всякой другой мелкой шняги и мне очень нравится замечательный freemium-сервис DropBox, который позволяет автоматически отслеживать изменения файлов и делать их бекап, однако логика его работы предполагает скопировать все необходимые файлы в одну папку, что для хранения конфигов не очень хорошо подходит. Казалось бы, стоит подумать о другом способе решения, но мне почему-то очень хотелось привязаться именно к DropBox, поэтому я стал копать в этом направлении.
И выкопал достаточно простое решение
Total votes 20: ↑15 and ↓5 +10
Views 2.4K
Comments 39

Cisco Config Cleaner. Бета-тестирование

Cisco *
Друзья!

Мы обкатываем на нашем сайте новую идею, а именно проверку конфигурационных файлов cisco IOS на согласованность и непротиворечивость. На данный момент мы реализовали функционал для выявления «мусорных» списков доступа, а также выявление таких опасных «хвостов», как привязка списка доступа без самого списка.

Вкратце расскажу, зачем это может быть нужно:
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 2.6K
Comments 7

Краткая инструкция по настройке Vlan-ов

Lumber room
Для начала определимся что такое 802.1q vlan, дабы не изобретать велосипед маленькая вырезка из википедии:
VLAN (аббр. от англ. Virtual Local Area Network) — виртуальная локальная компьютерная сеть, представляет собой группу хостов с общим набором требований, которые взаимодействуют так, как если бы они были подключены к широковещательному домену, независимо от их физического местонахождения. VLAN имеет те же свойства, что и физическая локальная сеть, но позволяет конечным станциям группироваться вместе, даже если они не находятся в одной физической сети. Такая реорганизация может быть сделана на основе программного обеспечения вместо физического перемещения устройств.
На устройствах Cisco, протокол VTP (VLAN Trunking Protocol) предусматривает VLAN-домены для упрощения администрирования. VTP также выполняет «чистку» трафика, направляя VLAN трафик только на те коммутаторы, которые имеют целевые VLAN-порты. Коммутаторы Cisco в основном используют протокол ISL (Inter-Switch Link) для обеспечения совместимости информации.
По умолчанию на каждом порту коммутатора имеется сеть VLAN1 или VLAN управления. Сеть управления не может быть удалена, однако могут быть созданы дополнительные сети VLAN и этим альтернативным VLAN могут быть дополнительно назначены порты.
Native VLAN — это параметр каждого порта, который определяет номер VLAN, который получают все непомеченные (untagged) пакеты.


Для чего это надо?
Есть несколько ситуаций:
1. Банально представим ситуацию есть большая сеть, в районе покрытия этой сети у нас расположено два офиса, их необходимо объединить в одну физическую сеть, при этом общегородская сеть не должна видеть/иметь доступ к офисным тачкам. Данную ситуацию конешно можно разрулить VPN-ами, но на шифрованый трафик порядка 100 мегабит нужно не кислое железо, поэтому рулим vlan-aми.
2. Есть масса подсетей, территориально поделенных по городу, необходимо на каждую подсеть настроить интерфейс, по началу можно конечно обойтись сетевыми картами, но сети имеют свойства разростаться, и что прикажете делать, например в такой ситуации?:
serv:~# ifconfig | grep eth | wc -l
152
serv:~#

3. Клиенту необходимо выдать блок из 4,8,16 и т.д. и т.п. адресов.
4. Уменьшение количества широковещательного трафика в сети
Каждый VLAN — это отдельный широковещательный домен. Например, коммутатор — это устройство 2 уровня модели OSI. Все порты на коммутаторе, где нет VLANов, находятся в одном широковещательном домене. Создание VLAN на коммутаторе означает разбиение коммутатора на несколько широковещательных доменов. Если один и тот же VLAN есть на разных коммутаторах, то порты разных коммутаторов будут образовывать один широковещательный домен.
И множество других причин/ситуаций в которых это может понадобиться.
5. Увеличение безопасности и управляемости сети
Когда сеть разбита на VLAN, упрощается задача применения политик и правил безопасности. С VLAN политики можно применять к целым подсетям, а не к отдельному устройству. Кроме того, переход из одного VLAN в другой предполагает прохождение через устройство 3 уровня, на котором, как правило, применяются политики разрешающие или запрещающие доступ из VLAN в VLAN.

Как мне это все сделать?
Легко!
Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Views 47K
Comments 19

Красивые конфиги Django

Django *
Translation
За то время, пока я занимаюсь внедрением проектов, написанных на Django, накопились простые приемы упрощающие деплой. Разберем settings.py, который был использован в одном из последних проектов. Полностью файл доступен на http://gist.github.com/214361
Начнем.

Локальные настройки:

Локальные настройки позволяют иметь разные конфигурации одного проекта на разных машинах. В конце каждого моего файла settings.py есть подключение local_settings.py. Это позволяет переопределить любые значения переменных из settings.py. Например, на продакшн сервере я использую mysql, а на локальной машине — sqllite.
try:
    from local_settings import *
except ImportError:
    pass

Читать дальше →
Total votes 54: ↑47 and ↓7 +40
Views 18K
Comments 38

Geany и пользовательские скрипты

Configuring Linux *
По роду деятельности приходится править куски конфигурационных файлов оборудования Cisco в текстовом редакторе. Я пользуюсь редактором Geany (ОS Linux), поэтому тюнить буду его и скрипт писать под bash

Мой тюнинг прост, я добавил скрипт, который добавляет или убирает в выделенном тексте команду «no»
Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Views 2.7K
Comments 8

Один из методов работы с конфигурационными файлами в С++ (Qt)

Programming *C++ *Qt *
Практически в каждом проекте, встает задача персистентного чтения/записи конфигурации. Не секрет что существует большое количество уже готовых библиотек для решения этой задачи. Некоторые из-них просты, некоторые чуть сложнее в использовании.
Если же проект разрабатывается с использованием Qt, думаю нет смысла линковать дополнительную библиотеку, так как в Qt есть все средства для создания очень простого, гибкого и кроссплатформенного решения.
Как раз о таком решении хочу расказать вам в этом посте.
Читать дальше →
Total votes 22: ↑16 and ↓6 +10
Views 29K
Comments 10

Простенькая страница настроек для Yii-приложения

PHP *Yii *
Привет.

Хочу поделиться небольшим модулем, предназначенным для создания страницы настроек в своём приложении. А заодно узнать у сообщества, что в нём можно было бы улучшить.

Задача по своей идее простая — сделать табличку в БД, хранящую параметры типа «ключ -> значение», а к ней сделать страничку редактирования, позволяющую изменять данные значения. ну и конечно же реализовать программный интерфейс для доступа к параметрам хранимым в БД.

Срок реализации — около получаса. В интернете почему-то готового решения было не найти. Исправим положение, авось кому пригодится.
Читать дальше →
Total votes 34: ↑27 and ↓7 +20
Views 20K
Comments 14

Простой редактор конфигурационных файлов для Yii

PHP *Yii *
Доброго вечера, Хабрахабр.

Сегодня я расскажу о небольшом компоненте формы, который мне довелось написать для замечательного PHP фреймворка Yii. Этот компонент (а точнее, модель формы) позволяет редактировать config-файлы прямо из веба. Статья навеяна недавним постом о подобной функциональности, но та реализация основана на БД. Это не совсем нэйтивно для конфигурационных файлов Yii. К тому же за такое решение придётся заплатить лишними запросами к базе/кэшу, а их в проектах с высокой посещаемостью нужно экономить.

В статье будет много кода, но я постараюсь разделить его на логичные куски.
Читать дальше →
Total votes 16: ↑11 and ↓5 +6
Views 9K
Comments 12

Версионность конфигураций серверов на базе debian/ubuntu

Configuring Linux *System administration **nix *
Sandbox
Доброго времени суток, уважаемое сообщество.
Решил поделиться небольшой идеей, возможно кому-то будет интересно и полезно.

Устав от утерянных и сломанных конфигураций, авторизацию на серверах под рутом, чтоб перенести новые оптимальные конфигурации, я решил создать репозитарии из папок с конфигурациями и дать к ним доступ в более доступном месте.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 8.9K
Comments 17

Чтение конфигурационных файлов в Java: nProperty

Java *
image
Многие разработчики сталкиваются с необходимостью чтения конфигурационных (*.ini, *.prop, *.conf, etc.) файлов в разрабатываемых приложениях. В Java есть стандартный класс Properties, с помощью которого можно очень легко загрузить ini-файл и прочитать его свойства. При большом объеме конфигурационных файлов чтение и запись настроек в объекты превращается в очень нудную и рутинную работу: создать объект Properties, конвертировать каждую настройку в нужный формат и записать его в поле.

Библиотека nProperty (Annotated Property) призвана упростить этот процесс, сократив примерно в два раза требуемый код для написания загрузчиков настроек.

Чтобы показать, каким образом возможно обещанное сокращение кода в два раза, ниже приведены два примера: в первом примере используется стандартный класс Properties, во-втором — nProperty.

Прошу под кат за подробностями
Total votes 28: ↑24 and ↓4 +20
Views 79K
Comments 53

Перенаправление пользователей по правилам в Squid

Configuring Linux *
Sandbox
По работе столкнулся с такой проблемой: есть десяток прокси серверов (squid) в разных странах и не один десяток пользователей. Каждый из них сам решает через какой сервер работать — есть chrome extension в котором они могут сделать выбор.

Но все сервера находятся на разном удалении от пользователя и пользователь из России, пользуясь сервером в Канаде сталкивается с хорошими тормозами. С другой стороны все сервера подключены в дата центрах к магистралям и между ними задержки много меньше.

Было принято решение направлять каждого пользователя к ближайшему к нему серверу, а от туда к выбранному.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 13K
Comments 0

Хранение конфигов под версионным контролем

Git *Version control systems *
Recovery mode
Sandbox
Имеем следующую ситуацию:

В проекте присутствует файл super.config. В нем содержатся много разных настроек проекта. Например, конфигурация взаимодействия со сторонним сервисом и уровень логирования. Система контроля версий — git.

В чем проблема:

  1. Этот файл должен находиться под версионным контролем, так как в нем содержатся «общие» настройки. Ну и сама структура файла ценна.
  2. Каждый разработчик меняет уровень логирования под свои нужды и не хочет, чтобы эти изменения попадали в коммиты, и тем более в интеграционный репозиторий.
  3. В этом файле периодически меняются общие настройки, и разработчик хочет их получать (pull) и публиковать (commit)

Возможные решения:
Total votes 16: ↑9 and ↓7 +2
Views 15K
Comments 10