воскресенье, 9 декабря 2018 г.

Чтение smart в vmware (esxi)

Основной линк
https://www.virten.net/2016/05/determine-tbw-from-ssds-with-s-m-a-r-t-values-in-esxi-smartctl/

Теперь по получению данных
Логинимся на esxi хост под рутом и смотрим список дисков
esxcli storage core device list

хотя можно просто заглянуть в /dev/disks/

И смотрим основные показатели
esxcli storage core device smart get -d naa.[drive]

Может быть ошибка
esxcli storage core device smart get naa.5000c5007a4df6b6
Error: Unknown command or namespace storage core device smart get naa.5000c5007a4df6b6

Скорее всего, это невозможность получить данные с PERC H730

Переводим “naa.” (ESXi) в “Sas Address” (iDRAC) (например чтобы найти проблемный диск в сервере)


суббота, 24 ноября 2018 г.

CentOS7: монтируем ufs разделы

После переезда с фряхи на центос бывает необходимость получить доступ к старым данным, варианты там - zfs и ufs. Рассмотрим случай под ufs
Под центос 6 в elrepo была сборка dkms-ufs, но под 7 версию её уже нет. Увы, SRPM от 6 тоже недоступно, нужно собрать самим.

воскресенье, 18 ноября 2018 г.

Работа с контроллерами на базе LSi

https://serverfault.com/questions/589070/how-to-monitor-the-hard-disk-status-behind-dell-perc-h710-raid-controller-with-c

Во фре есть очень удобная утилита mfiutil, увы но тут её нет.

Вариант первый, для мазохистов (или у кого уже были скрипты): MegaCLI. Аццкая хрень, придуманная то ли индусами, то ли инопланетянами. В общем, это дерьмо работает, хоть и не обойтись без помощи гугла.

http://blog.ispsystem.info/2017/04/megacli-centos-7.html

И чуть о вариантах запуска
получить информацию о контроллере
megacli -AdpAllInfo -aAll

Информация по дискам
megacli  -PDList -aALL

Вариант второй, omreport и подобное
http://linux.dell.com/repo/hardware/omsa.html

Вариант третий, говорят сами инженеры lsi поняли какое говно они сделали и добавили поддержку storcli

В случае c Dell есть нюанс, просто добавить группу дисков через iDRAC невозможно без перезагрузки, при том что megacli это умеет, как и сам контроллер. Но что ещё хуже, порой даже ребут не поможет, добавляем группу дисков, ребутаемся, а задача так и висит в Queue Job. И ещё добавим трагедии, гуглинг показывает что иногда для очистки queue job не помогает даже выключение по питанию, сбросу конфгигурации контроллера итд. Так что желательно поставить ещё perccli
https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=f48c2

пятница, 9 ноября 2018 г.

git clone: github+2FA

Суть в том, что при использовании https после ввода пароля (правильного) будет ошибка
remote: Invalid username or password.
Причина:
"After you've enabled 2FA, you must create a personal access token to use as a password when authenticating to GitHub on the command line using HTTPS URLs."

Ну или более простой вариант - добавить ssh ключ
и потом делать git clone git@github.com:/user/repo

четверг, 25 октября 2018 г.

debian: php5 + apache2-mpm-worker

Суть в том, что это не работает.
https://serverfault.com/questions/772298/configuring-apache2-mpm-worker-with-php5

Ubuntu's PHP5 module will only work with the single-threaded mpm_prefork. In order to use the Apache module with the threaded mpm_worker, you will need to compile a threadsafe version of PHP yourself (which requires disabling all of the features and modules of PHP that are not threadsafe, which are a lot of them).

Instead of using libapache2-mod-php5 you should consider using FastCGI/php-fpm. There is a guide to the steps needed to install and configure libapache2-mod-fastcgi and php5-fpm here: https://askubuntu.com/a/527227 Part of configuring FPM is to create "pools" of php processes, each of which have their own limits and INI files, so you will need to be sure that the limits in FPM are reasonable for your site's expected load.

This arrangement will allow you to use the multi-threaded worker MPM in Apache while handing off the PHP requests to individual PHP processes handling a single request each.

понедельник, 9 июля 2018 г.

Mint: "Could not display "network:/// Nautilus cannot handle "network" locations "

По какой-то причине штатно не ставится gvfs-backends
фикс:
sudo apt-get install gvfs-backends

вероятно, актуально для всех debian и ubuntu дистрибутивов.

суббота, 26 мая 2018 г.

выступления команды Флант, про докер, кубернетес, деплой и проч.

https://www.youtube.com/playlist?list=PL1mJ-PkCYnmB9vljnjxCMP3dlxQY3Dfcq

ansible: официальный nginx role

https://www.nginx.com/blog/announcing-unified-ansible-role-nginx-nginx-plus/

(старая версия: https://www.nginx.com/blog/official-ansible-galaxy-nginx-roles-out-now/ )
Но это достаточно простая роль, из типового -- там нет upstream для раскидывания запросов на несколько бэкендов.

Как вариант, за основу можно тогда взять
https://github.com/geerlingguy/ansible-role-nginx

debian: ставим свежий ansible

Самое простое - подключить оф репу, где всё работает.
http://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

или как вариант
sudo pip install ansible

суббота, 12 мая 2018 г.

docker и openldap

Можно самому накидать Dockerfile, но помнить про пропуск dpkg-reconfigure, так что нужно будет настраивать потом вручную, нужны скрипты. Или готовые сборки. Также, у меня установка зависала на build, на шаге Input administrator password.

Простая версия, Dockerfile прилагается.
https://github.com/dinkel/docker-openldap

Более сложная, зато с примерами под compose, kubernetes итд.
https://github.com/osixia/docker-openldap

Быстрое знакомство с docker

Неплохо описано тут:
https://habr.com/company/infobox/blog/240623/

При установке дебиана-убунты некоторый софт имеет смысл ставить с опциями
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y ...
Нужное из рекомендуемого добавляем явно в список.
Это уменьшит размер контейнера и уберёт вопросы, но нужно будет или потом делать dpkg-reconfigure после старта, или как-то скриптами настраивать.

Также нужно посмотреть на docker-compose для групповой установки контейнеров и/или vagrant.

вторник, 8 мая 2018 г.

rpm: получаем информацию из rpm файла

Иногда нужно запросить/автоматизировать имя пакета, но rpm файл назван как-то нестандартно. Или просто нужно получить информацию из rpm.

$ rpm -qip MariaDB-10.1.26-centos7-x86_64-server.rpm
Name        : MariaDB-server
Version     : 10.1.26
...

понедельник, 7 мая 2018 г.

Debian и xhprof

xhprof - довольно полезный профилировщик, который можно использовать в проде. Ставится (кусочек) так:
# apt-get install php5-xhprof

четверг, 3 мая 2018 г.

apache 2.4, nginx и 127.0.0.1 в логах

В старых версиях apache при проксировании запросов через nginx в логах апача светился 127.0.0.1, помогала установка mod_rpaf(2) или mod_realip. Но в 2.4 эти модули уже не нужны: в сам пакет входит mod_remoteip, и штатно активируется в /etc/httpd/conf.modules.d/00-base.conf
Но.. в логах всё-равно 127.0.0.1. Для полной настройки нужно создать файл /etc/httpd/conf.d/mod_remoteip.conf с содержимым
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

после этого в /etc/httpd/conf/httpd.conf ищем LogFormat и заменяем %h на %a (подробности в документации)

И не забыть выставить X-Forwarded-For со стороны nginx, разумеется.

Проверяем что нет ошибок
apachectl -S
и перечитываем
service httpd graceful

И чуть линков

среда, 28 февраля 2018 г.

Hetzner, debian и KVM (который виртуалки)

Есть оф дока
https://wiki.hetzner.de/index.php/KVM/enНо кроме 1 строки
route add -host zzz.zzz.zzz.zz1 dev br0
она бестолковая. Впрочем, и сейчас эта строка будет выглядеть иначе:
ip route add zzz.zzz.zzz.zz1 dev br0 scope link
Суть? Это машины в 1 сети, а хецнер рубит неизвестные ему маки.

Но это даст только возможность ходить с хоста на виртуалку. Чтобы можно было попасть туда из мира, есть несколько вариантов

Где самый простой -- запросить мак в саппорте для kvm. Но также возможно поднять tun, изучить proxy_arp и поднять nat, 1 к 1 на виртуалку - будет выглядеть как настоящий доступ.

среда, 7 февраля 2018 г.

CentOS 7: собираем libtgvoip

За основу хорошо заходят 2 пакета:
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-1.0.3-1.fc27.x86_64.html
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-devel-1.0.3-1.fc27.x86_64.html
Также нужны mock и gyp с поддержкой cmake

mock -r epel-7-x86_64 rebuild libtgvoip-1.0.3-1.fc27.src.rpm
(тут будет момент с gyp - нужно будет также встроить свежий gyp, так что вместо epel будет своя репа c gyp, куда в том числе нужно добавить данные репы centos-sclo-rh для devtoolset)
Но всё-равно не соберётся. Вторым шагом будет или выпиливание webrtc блока (оно на c++17), или установка gcc 5. Версия 4.9 его не устроит. Ставим devtoolset-4-gcc
Но всё-равно не соберётся, потому что mock тянет штатную версию 4.8.

А также, будет ошибка
usr/include/c++/5.3.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
Только тут момент: ошибка изменится на
error: ‘typeof’ was not declared in this scope

фикс: typeof отсутствует(?) в с++11, надо писать -std=gnu++11
или (возможно?) поможет такая штука
#define typeof(x) __typeof__(x)

Теперь в спеке нужны изменения
pushd out/Release
+    sed -i'' -e "14i add_definitions(-std=gnu++11)" CMakeLists.txt
    %cmake .


вторник, 6 февраля 2018 г.

/usr/sbin/useradd: No such file or directory

Довелось тут поймать Exception в анаконде, не сразу нашлась причина (в /tmp/packaging.log или /tmp/rpm-script.log), когда ставилось всё автоматом через ks.cfg: надо было предварительно добавить установку shadow-utils
Requires(pre): shadow-utils

пятница, 2 февраля 2018 г.

ERROR 1005 (HY000): Can't create table `db`.`cdr2` (errno: -1 "Internal error < 0 (Not system error)")

Поймали недавно такую ошибку
ERROR 1005 (HY000): Can't create table `db`.`cdr2` (errno: -1 "Internal error < 0 (Not system error)")
Оказалось, это прилетело что-то не нужное, с таким описанием
ENGINE=InnoDB DEFAULT CHARSET=ascii DATA DIRECTORY='/var/lib/mysql_parition_moving/';
этого DIRECTORY не существует.

Server version: 10.1.26-MariaDB MariaDB Server

понедельник, 29 января 2018 г.

CentOS и cmake: this file requires compiler and library support for the iso c++ 2011 standard

Даже после установки devtoolset-7 софт может не собираться, выдавая
this file requires compiler and library support for the iso c++ 2011 standard
Была найдена такая штука:

# http://stackoverflow.com/questions/10851247/how-to-activate-c-11-in-cmake
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    add_definitions(-std=c++11)
elseif(COMPILER_SUPPORTS_CXX0X)
    add_definitions(-std=c++0x)
else()
    message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

Вставляем в CMakeLists.txt поближе к началу, собираем.

Хотя мелькал и такой вариант
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

ручной вариант
$ cmake -DCMAKE_CXX_FLAGS=-std=c++11 ..

CentOS 7 и gcc разных версий

Штатный gcc - 4.8, что уже весьма старо, а тот же гугл обожает говнокодить на свежем с++17. Впрочем, можно поставить и более свежие версии. под центос 6, тут действуем по аналогии.

yum -y install centos-release-scl
yum search devtoolset
Будет огромный список, который делится на части по версиям. В частности, devtoolset-3 это gcc 4.9, -4 это 5.3 итд.
На самом деле, ставить целиком devtoolset-x не нужно, обычно достаточно только
devtoolset-3-gcc
devtoolset-3-gcc-с++

Дальше переключаем версию, несколько вариантов
1) scl enable devtoolset-3 bash
2) /opt/rh/devtoolset-3/enable
3) update-alternatives --install /usr/bin/gcc-4.9 gcc-4.9 /opt/rh/devtoolset-3/root/usr/bin/gcc 10
update-alternatives --install /usr/bin/g++-4.9 g++-4.9 /opt/rh/devtoolset-3/root/usr/bin/g++ 10
(тут уже сначала надо смотреть, что куда ставится, зато потом переключать можно глобально)

А посмотреть, какая версия в каком тулсете, можно так:
$ yum info devtoolset-4-gcc |grep Version
Version     : 5.3.1

пятница, 26 января 2018 г.

cmake и многопоточность

Косяк cmake в том, что он собирает в 1 поток.
https://blog.kitware.com/cmake-building-with-all-your-cores/
Для решения - генерируем через -G файлы под ninja или make и собираем уже ими.

вторник, 23 января 2018 г.

CentOS 7 и gyp: ImportError: No module named cmake

GYP (generate your projects) is a build automation tool. GYP is created by Google to generate native IDE project files (such as Visual Studio Code and Xcode) for building the Chromium web browser and is licensed as open source software using the BSD software license.

The functionality of GYP is similar to the CMake build tool. GYP processes a file that contains a JSON dictionary[1] in order to generate one or more target project make files. The single source .GYP file is generic while the target files are specific to each targeted build tool.

Потребовалось для некоторых задач использовать gyp (wiki, 2) с опцией --format=cmake, но молвит нам компилятор ImportError: No module named cmake
Также не помогла установка python-pip && pip install cmake. Копать надо в сторону самого gyp:
$ ls -la /usr/lib/python2.7/site-packages/gyp/generator/cmake*
ls: cannot access /usr/lib/python2.7/site-packages/gyp/generator/cmake*: No such file or directory

То есть просто нет данного функционала в самом gyp. Но заглянув например сюда - мы этот модуль видим.

Быстрое введение в mock

mock это утилита для сборки, наподобие rpmbuild, но в чистом окружении.

https://github.com/xvitaly/tgbuild/blob/master/doc/build_using_mock.md

https://blog.packagecloud.io/eng/2015/05/11/building-rpm-packages-with-mock/

Список реп (для ключа -r) можно посмотреть тут
/etc/mock/

В случае с centos ставим примерно так
Подготовка
yum install -y epel-release
yum install rpm-build rpmdevtools mock
usermod -a -G mock some_builder_user
mock -r epel-7-x86_64 init

Сборка своего пакета
rpmbuild -bs some_package.spec
mock -r epel-7-x86_64 some_package.src.rpm
и результат будет в /var/lib/mock/epel-7-x86_64/result

Чтобы сделать сборку со своей репой, в /etc/mock копируем нужный файл и добавляем внутрь свои репы, а потом в -r указываем наше новое название.

среда, 17 января 2018 г.

debian: ispmanager 4 + letsencrypt

Есть штатный модуль интеграции, но он доступен только с версии 5.65, а нам надо под более адекватную 4 версию.
Можно конечно поставить сервис, сгенерировать сертификаты, скопировать их из файлов и добавить через панель, а потом каждые 2 месяца обновлять... Но можно сделать проще!