LINUX.ORG.RU

Сообщения selivan

 

ansible - итерация через list of lists

Есть некоторый набор пар [src, dest]. Я хочу пройтись по структуре вида:

- [ src1, dest1 ]
- [ src2, dest2 ]
- [ src3, dest3 ]
и сделать для каждой пары copy: src="{{ item.0 }}" dest="{{ item.1 }}". Но при использовании with_items оно просто выдаёт их как единый массив, и из каждой строки выделяет первую и вторую буквы. Сейчас я вышел из положения так:
with_together:
- [ src1, src2, src3 ]
- [ dest1, dest2, dest3 ]
Можно ли как-то сделать как в первом варианте?

 ,

selivan
()

Нытьё про cтандартный конфигуратор

Почему для *nix не прижился какой-нибудь стандартный конфигуратор софта:

$ conf get sshd.tcpkeepalive
no
$ conf get-default sshd.tcpkeepalive
yes
$ conf show sshd.tcpkeepalive
# Specifies whether the system should send TCP keepalive
# messages to the other side.  If they are sent, death of
# the connection or crash of one of the machines will be
# properly noticed.
sshd.tcpkeepalive=no
$ conf set sshd.tcpkeepalive=yes
$ conf get sshd.tcpkeepalive
yes

$ conf add ssh custom_var --type dir --comment "blalala"
$ conf add ssh custom_var.subwar1 --type string --comment "blalala path"
$ conf add ssh custom_var.subwar2 --type int --comment "blalala magic number"

Все известные мне конфиги в такую схему укладываются. Права на изменение раздавать стандартным способом на каталоги, которые и будут лежать где-нибудь в /conf.

За количество человеко-лет, потраченных на автоматический разбор/написание всяческих конфигов, можно было:

  • допилить Hurd
  • решить в иксах проблемы с тирингом
  • запилить в ванильное ядро MPLS
  • основать колонию на Марсе

Update:

Почему это не реестр:

  • Коменты
  • Это не единый файл БД, а набор файлов, просто со стандартным API и command-line tools для работы. Поддаётся синхронизации с удалённым источником, ручной правке с помощью regexp и какой-то там матери, вобщем всё как с обычными файлами, но единообразно для всех программ.
  • Один каталог верхнего уровня для каждой программы, в менеджере пакетов по ним информация. Каталоги, не относящиеся ни к какому пакету, можно легко выявить и удалить.

 ,

selivan
()

Английский IT-сленг

Как сказать «велосипед» или «костыль», но по-английски? Сохранив эмоциональную нагрзку

 

selivan
()

Puppet: подставить параметр в имя факта

Вот custom fact:

require 'etc'

Etc.passwd do |user|
    Facter.add("homedir_#{user.name}".intern) do
        setcode { user.dir }
    end
end

Взят с ask.puppetlabs.com. Теперь делаем defined type:

define ssh_keys::key ($user) {

$home = $::homedir_#{user}
#$home = $::homedir_root

if $home != undef {

file { "$home/.ssh/":
    ensure => directory,
}

file { "$home/.ssh/authorized_keys":
    ensure => file,
    source => "puppet:///modules/ssh_keys/$user",
    }
}

В виде $::homedir_#{user} не работает. Если задать в явном виде $::homedir_root, то всё ОК. Где я не прав? Куда копать?

 ,

selivan
()

PostgreSQL не хватает студентов на Google Summer of Code

http://habrahabr.ru/post/216137/

Оставлю здесь, вдруг кому пригодится

 ,

selivan
()

SSD, fstrim и mount -o discard

Используется SSD. Ядро 3.5.0-36.

/home: ФС ext4, смонтирована с опциями relatime,discard,commit=30.

sudo fstrim -v /home
/home: 44191338496 bytes were trimmed

То есть около 40Гб. В прошлый раз, когда я запускал fstrim, оно тоже показало ненулевое значение, но тогда я это списал на то, что при создании и первоначальном использовании /home оно монтировалось без discard. Сейчас такая отмазка уже не катит.

discard не работает или я чего-то не понимаю?

 

selivan
()

Перезапуск Openvpn при появлении интерфейса

Есть openvpn-клиент, в нём стоит local X.X.X.X, потому что работать он должен только через одного провайдера из двух. При опускании этого интерейса биндинг к адресу отваливается и openvpn умирает, соответственно при поднятии обратно не запускается.

Можно ли как-то сделать, чтобы он не умирал, а продолжал пытаться прибиндиться до победного конца?

Обходные способы знаю - post-up в interfaces или перезапуск в cron, но хочется чтобы работало именно так.

 ,

selivan
()

Отношение к спортсменам

Выделил в отдельный топик из этого, тема ИМХО заслуживает отдельного обсуждения и холивара.

Одна из причин поражений наших спортсменов - злость и нетерпимость болельшиков. Если спортсмен(или команда) не выиграли нам медалей - всё: мудаки, уроды, п*дорасы, все их ненавидят. Это при том, что конкуренция в спорте высоких достижений высочайшая, и гарантированно выдавать высший результат практически невозможно. Плющенко пропустил катание из-за травмы - и его усиленно поливают г*вном те самые люди, которые столько раз восхищались его золотыми выступлениями.

Для сравнения посмотрите, как относятся к своим спортсменам в других странах - их знают и любят, если не удалось получить медаль - им сочувствуют и подбадривают, а не обс*рают. Психологический момент в спорте важен. Например, на этой олимпиаде много сильных австралийцев(особенно девочек) было в горных лыжах и фристайле, но медалей им в этот раз не обломилось. Болельщики пишут им о том, что они поддерживают их и любят, а не о том, что они подвели всю Австралию и их убить мало. Думаю, в следующий раз они привезут больше медалей.

На месте нашей сборной по футболу я бы вообще вышел на поле, демонстративно забил гол в свои ворота, вернул деньги и уехал. Зачем играть за людей, которые так тебя ненавидят? Хоккеистов, биатлонистов мы стараемся поставить в такое же положение.

Неужели нельзя просто хорошо относится к людям, которые бьются за честь страны, независимо от того, получилось у них взять награду или нет?

 , ,

selivan
()

Apache mod_authnz_ldap Error 500

Ubuntu 12.04 LTS
Apache/2.2.22

Для http://server/lightsquid/ выдаёт окно запроса пользователя/пароля, после чего «500 Internal Server Error». Ошибка появляется независимо от того, правильный пароль введён или нет. Если убрать Require valid-user, то работает нормально, то есть проблема именно в mod_authnz_ldap.

Модуль mod_authnz_ldap включен. Конфиг апача:

        Alias           /lightsquid /usr/lib/cgi-bin/lightsquid
        <Directory "/usr/lib/cgi-bin/lightsquid">
                AddHandler cgi-script .cgi
                Options +ExecCGI
                Order allow,deny
                Allow from all

                AuthType Basic
                AuthName "USE YOUR WINDOWS ACCOUNT"
                AuthBasicProvider ldap
                AuthzLDAPAuthoritative on
                #AuthzLDAPAuthoritative off
                #AuthUserFile /dev/null

                AuthLDAPBindDN "CN=squid_auth,DC=domain,DC=ru"
                AuthLDAPBindPassword "*****************"
                AuthLDAPURL "ldap://dc2.domain.ru/dc=domain,dc=ru?sAMAccountName?sub?(objectClass=*)"
                Require valid-user

        </Directory>

Менять

AuthzLDAPAuthoritative off
на
AuthzLDAPAuthoritative 
AuthUserFile /dev/null
не помогает.

LogLevel стоит debug.

В error.log по поводу ошибки нет вообще ничего, в access.log появляется

192.168.0.1 - selivanov [15/Feb/2014:11:51:00 +0400] "GET /lightsquid/index.cgi HTTP/1.1" 500 814 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0"

Куда копать? Как его заставить хотя бы показать внятную диагностику проблемы?

 ,

selivan
()

Bacula RIP. Long live Bareos

https://www.bareos.org/en/faq/items/why_fork.html

Для Ъ:

- бакула игнорирует сторонние патчи
- с 2012 года платная версия стала закрытой, AGPL код перемешан с проприетарным
- новые фичи включаются только в платную закрытую версию
- Одна фича даже была убрана из открытой версии и перенесена в закрытую. А именно - ограничение используемой ширины канала
- активность сообщества начала падать

Marco van Wieringen, активно контрибутивший в бакулу с 2008 года, сделал форк под названием Bareos. Новые возможности:

- passive clients - для клиентов в ограниченной сети, например DMZ, все соединения с клиентами инициируются со стороны director и sd
- Fastzlib для ускорения сжатия
- поддержка NDMP
- ограничение используемой ширины канала
- ещё куча всего https://www.bareos.org/en/whats_new.html, лень переводить дальше

Миграция с бакулы возможна, bareos-fd обратно совместим с bacula-fd.

З.Ы. Модераторм: очень хотелось бы сделать новость, потому что важно и полезно. Но событие произошло давно, так что пока положил в Admin. Это никак не подойдёт по формату для новости?

 , ,

selivan
()

Автоответ на неграмотные вопросы в технических форумах

www.linux.org.ru/forum/general/10143021 и прочие... тысячи их. ИМХО очень засоряют форум, потому что помочь человеку, из которого по чайной ложке в час приходится выковыривать диагностику его проблемы - очень трудно и геморройно.

Предлагаю: дать звездатым пользователям(например, начиная с ★★★) специальную кнопку «Некорректно сформулированный вопрос». По её нажатию вопрос перемещается в специальный форум «Работа над ошибками». В качестве ответа постится стандартная плашка - ссылка на статью «Как правильно задавать вопросы в технических форумах» (http://www.opennet.ru/docs/RUS/smart_question/) и краткая выжимка из неё, потому что большинство новопришедших - Ъ и по ссылке не пойдут. И обязательно ссылка на pastebin.com, чтобы напугавщийся новичок не запостил в простыню весь find /etc -type f -exec cat \{\} \;

После исправления поста автор может нажать кнопку «Исправлено», и вопрос опять попадёт в технический форум. С пятой итерации автор переводится в read-only на пару недель, ибо безнадёжен.

Со второго раза должна появляться кнопка «Пожаловаться на необоснованный перенос вопроса», потому что фича даёт звездатым большой простор для троллинга.

ИМХО это и поможет новичкам быстрее получить нормальные ответы, и почистит форум от такой нездоровой ерунды.

З.Ы. Я имею в виду именно вопросы с заголовком «Помагите сламался астериск» и содержанием «ОС - убунту, вчера работало, а сегодня не пашет». При обсуждении нормально сформулированного вопроса, к которому потребовалась дополнительная информация, кнопку наживать не надо

З.З.Ы. Talks и Job предложение не касается

selivan
()

Раздача велосипедов - 2: тонкий клиент

https://github.com/selivan/thinclient

Набор для построения Ubuntu/Debian-based тонкого клиента, который не монтирует корневую ФС по NFS/iSCSI/SMB/..., а работает целиком из памяти.

Плюсы по сравнению с традиционным( https://help.ubuntu.com/community/DisklessUbuntuHowto ) подходм:

* не нагружает сервер
* спокойно переживает даунтайм сервера

Плюсы по ставнению с thinstation и прочими wtware:

* это честная Ubuntu/Debian, куда можно поставить всё что угодно: софт для работы с камерой, браузер, яву, хоть ioquake и tuxrace

Полезности

* умеет overlays, то есть сверху корневой ФС можно примонтировать сколько угодно архивов. Таким образом можно распространять дополнительный софт/конфги для определённых рабочих станций, не переделывая основной образ
* умеет монтировать домашний каталог по NFS, пользователь может вносить постоянные изменения. Небезопасно, но в некоторых случаях приемлимо.

Изначально делался efim-ом( https://github.com/efim-a-efim, на ЛОРе присутствует мало и только в анонимном виде ), потом сильно допиливался мной.

Надеюсь, кому-нибудь пригодится

 ,

selivan
()

Заставить Openvpn убрать роуты, если соединения не установлено

Можно ли с помощью какой-либо магии сделать, чтобы OpenVPN поднимал роуты из конфига, только когда соединение установлено(в логе «Initialization Sequence Completed»), и убирал их если соединения порвалось по keepalive timeout? Служба при этом, разумеется, всё время запущена

 ,

selivan
()

Кому велосипед

Очередной раз столкнувшись с задачей «2 провайдера, надо периодически тестировать канал и переключаться на живого», решил вместо по-быстрому втыкаемых костылей запилить немного более обобщённое решение. Для Debian/Ubuntu, если кто добавит подержку redhat-овских networking-scripts - скажу спасибо. Тыц: https://github.com/selivan/inet-failover

Умеет:
- переключаться на второго провайдера при падении первого
- сервер доступен снаружи с обоих адресов
- минимальная конфигурация: все сетевые параметры берутся из interfaces, ни один параметр не надо описывать несколько раз в нескольких скриптах, поэтому меньше вероятность ошибки
- Если использовать ifup/ifdown вперемешку с ручным ifconfig/ip addr, скрипты всё равно стараются выдать правильные таблицы и правила роутинга
- Файл состояния, показывающий используемый в данный момент основной интерфейс. Мониторинг рулит
- Аккуратный лог-файл. Мониторятся оба соединения, даже если используется только одно

Не умеет:
- Двух провайдеров, настроенных на алиасах одного интерфейса: eth0:0 eth0:1
- Балансировку нагрузки вида «nexthop via $IP1 dev $IFACE1 weight 1 nexthop via $IP2 dev $IFACE2 weight 1»

 , ,

selivan
()

dhclient применяет параметры, которые он не запрашивал в request

Система: виртуалка Debian Wheezy на Virtualbox

dhclient --version
isc-dhclient-4.2.2

К сетевому адаптеру присобачен NAT и настроен Port Forwarding для ssh - очень удобно, можно раздавать виртуалке инет и одновременно работать с ней по ssh. В отличие от вариантов с bridge, неважно, каким образом интернет приходит на хост - виртуалка его всё равно получит.

Эта виртуалка не должна получать default route по DHCP. Я исключил в dhclient.conf из request параметр routers. Но встроенная реализация DHCP в VirtualBox очень простая, она отдаёт фиксированный набор параметров независимо от того, что клиент запрашивал. И dhclient применяет полученные routeres, хотя он их не запрашивал! Проверил процесс получения пакетов Wireshark-ом - действительно, routers не запрашиваются, но прилетают.

Это баг или фича? Может я чего-то не понимаю?

З.Ы. Кому интересно - есть такое обходное решение:

auto eth0
iface eth0 inet dhcp
metric 255
post-up ip route del default dev eth0

metric нужен, чтобы оно не заменило имеющийся default route. Но меня волнует не решение, а странное поведение dhclient

 ,

selivan
()

Эллиптического тренажёра выбора тред

Из-за проблем с голеностопом лыжи/вел и прочие радости жизни мне некоторое время будут недоступны :( Решил купить сабж, ибо здоровье, да и пузо убрать стоит, не хочу быть слишком солидным :)

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

Два вопроса обладателям сабжей:

- длина шага критична? 36см для 174см роста пойдёт?
- http://www.sportmaster.ru/catalog/trenazhery_i_fitnes/kardiotrenazhery/ellipt... - что скажете?

 ,

selivan
()

Изменить метрику существующего маршрута

Можно ли сделать это с помощью какой-нибудь особой, уличной магии? Удалить и тут же добавить не считается

 

selivan
()

Где бы завести технобложег?

Решил, что всякие полезные мелочи надо всё-таки складывать в одно место, чтобы не забывалось, а может кому и полезно будет. Попробовал blogger: http://another-it-blog.blogspot.ru/ - возможности для оформления техно-постов огорчают, нельзя нормально оформить вставку кода, с выделением/прокруткой/подсветкой. Что сейчас модно использовать как блог-платформу?

З.Ы. Поднимать standalone не предлагать, лениво и бессмысленно.

selivan
()

Воронеж. Дежурный системный администратор.

Банк «Западный».

Нужно знать:
- Linux
- iptables/ipset
- OpenVPN
- VLAN
- DHCP/TFTP/PXE
- Squid
- активное сетевое оборудование, в основном свитчи HP
- немного представлять, как работать с AD

Могу взять бойца с недостаточными знаниями, при условии что за месяц-два он всё освоит.

График 2 рабочих через 2 выходных, по 12 часов, с 14 до 15 перерыв на обед.

Зарплата белая, 37k. Если с обучением - то за испытательный срок будет 20-25к. Отпуск вроде по закону, но сам пока не проверял. ДМС, каких-то ещё бонусов нет. Теоретически возможны премии за реализованные проекты, практически губу раскатывать не стоит.

Работа достаточно неприятная, чёткого workflow нету, задачи валятся в рандомном порядке и реализуются на коленке, лишь бы побыстрей. Но график покрывает все минусы. Прекрасно подойдёт человеку, которому нужно много сводобного времени на реализацию каких-то своих проектов - закончить учёбу, сдать сертификацию, вылечить здоровье, запилить стартап - но при этом надо продолжать зарабатывать деньги.

Связь - selivan5[аt]yandex.ru

selivan
()

Выбор системы управления конфигурациями

Опрос или не подтвердят, или подтвердят через очень много времени. Сделаю тему здесь

Выбираю систему управления конфигурациями для разворачивания у нас (если ещё удастся пробить её использование). Кроме определённых фич, хотелось бы получить знания/опыт работы с более популярным софтом, чтобы пригодилось в дальнейшем. Что стоить осваивать?

Выбираю между cfengine, puppet, chef. Про первый ругаются, что сложный и плохо документированный. Вторые оба тяжёлые, и требуют учить руби, а мну лениво, си с питоном немного знаю и пока большего не требуется.

 , ,

selivan
()

RSS подписка на новые темы