Sunday, November 19, 2017

Простые уведомления в Telegram из Bareos

             

Bareos настроен, есть несколько хостов которые бэкапятся по расписанию, вроде все хорошо. Но через пару месяцев, когда потребовался определенный бэкап, выясняется что уже неделю как копирование не осуществляется. Ясно что необходимо не только снимать копии, а еще и мониторить все это дело. Кроме того, сняв копию нужно убедиться что она полностью рабочая. Но для начала неплохо было бы просто получать алерты от систем резервного копирования с информацией о статусе копирования или о сбоях.
С Bareos устанавливается плагин bsmtp, он подходит в случае если есть корпоративный почтовый сервер, принимающий без smtp auth письма от хоста bareos.  Gmail.com, yandex.ru, все эти сервисы требуют сейчас авторизации для отправки писем. Поскольку своего сервера под рукой нет, а поднимать рилэй не хочется, пытался решить проблему с использованием ssmtp. Пока не получилось, однако с Telegram подружить оказалось намного проще.
Достаточно просто ввести в конфигурацию Bareos строчку с CURL запросом.

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"_здесь_id_чата_","text":"_здесь_сообщение_"}' "https://api.telegram.org/bot_здесь_токен_бота_/sendMessage"

На случай если бота еще нет, его легко создать, займет меньше времени чем регистрация нового о почтового ящика в Яндексе. В сети полно информации о том как это сделать, если коротко, то:

  • В телеграме ищем @BotFather
  • Создаем с помощью команды /newbot нового бота
  • BotFather выдает уникальный token бота, это информация по идее секретная, ей лучше не раскидываться. Можно сразу зайти по ссылке https://api.telegram.org/bot_здесь_токен_бота_/sendMessage и посмотреть результат. Должно быть "Bad Request: message text is empty".
  • Дальше нужно вступить в контакт с ботом, написать ему что-либо. Это такая защита от спама, чтобы боты не лезли к людям сами.
  • Для того чтобы бот нам мог отправить сообщение, нужно знать наш id (в принципе можно использовать имя пользователя). Для этого идем к боту @MyTelegramID_bot и узнаем заветные цифры.
Все необходимое у нас есть, можно проверить используя вышеприведенный запрос curl. Бот должен прислать сообщение.


Теперь можно вставить строчку в конфиг. У меня это
/etc/bareos/bareos-dir.d/messages/Standard.conf
Хотя наверное лучше standard не трогать и создать свой.

Messages {
  Name = Standard
  Description = "Reasonable message delivery -- send most everything to email address and to the console."
  operatorcommand = "/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \<%r\>\" -s \"Bareos: Intervention needed for %j\" %r"
  mailcommand = "curl --header 'Content-Type: application\/json' --request 'POST' --data '\{\"chat_id\":\"_здесь_id_чата_\",\"text\":\"Bareos: %t %e of %c %l\"\}' \"https:\/\/api.telegram.org\/bot_здесь_токен_бота_\/sendMessage\"
  operator = root@localhost = mount                                 # (#03)
  mail = root@localhost = all, !skipped, !saved, !audit             # (#02)
  console = all, !skipped, !saved, !audit
  append = "/var/log/bareos/bareos.log" = all, !skipped, !saved, !audit
  catalog = all, !skipped, !saved, !audit

}

Перезапускаем сервис bareos-dir
service bareos-dir restart
Все должно работать.



Sunday, October 29, 2017

перенос nativeboot vhd (vhdx) диска.

Использование VHD/VHDX дисков для установки ОС в режиме nativeboot в теории весьма удобно, но, как оказалось, на практике возникли сложности. Основная сложность - "что вообще с этим делать?" Потребовалось переконфигурировать RAID массив (перетащить данные в другое место, перестроить, вернуть все на место). Все это можно сделать с использованием обычных загрузочных дисков (Win server 2016 iso в моем случае), там есть режим восстановления с командной строкой и он видит мой контроллер без установки дополнительных драйверов.

После создания нового рейд массива (в bios или другими способами) нужно полученный диск инициализировать, создать раздел UEFI (100mb) и раздел для размещения VHDX файла. После копирования VHDX файла нужно примонтировать его и создать в UEFI разделе указатель для загрузки с примонтированного VHDX. Для этого потребуется использовать Diskpart и bcdboot. Речь идет про UEFI, для BIOS похоже, но чуть по другому.

Выдержка из документации Microsoft.

diskpart
list disk

Выбираем из списка нужный нам диск (свежесобранный массив).

select disk 0
clean
convert gpt
rem == 1. создаем системный раздел  и назначаем ему букву S==========
create partition efi size=100
format quick fs=fat32 label="System"
assign letter="S"
rem == 2. Microsoft Reserved (MSR) partition =======
create partition msr size=128
rem == 3. ну и диск для данных  с буквой M===========================
create partition primary
format quick fs=ntfs label="Main"
assign letter="M"

Неплохо бы еще глянуть на разделы

list volume
exit


Есть разбитый на разделы диск, копируем диск VHDX  чем и как угодно. Например
xcopy f:\windows.vhdx m:\

А теперь самое интересное

diskpart
select vdisk file=M:\windows.vhdx
attach vdisk

неплохо бы опять

list volume

Видим что VHDX подключился и на нем есть разделы, выясняем раздел с установленной ОС, пусть будет V:\ к примеру.

V:\
cd v:\windows\system32
bcdboot v:\windows /s S: /f UEFI

Перезагружаемся, все должно работать. За исключением Hyper-v. Для работы гипервизора оказывается надо еще
bcdedit /set hypervisorlaunchtype auto
Потом погасить сервер и включить обратно. Именно погасить, выключить, а не просто перезагрузить. Иначе возникает ошибка "Произошла ошибка при попытке запуска выбранных виртуальных машин Не удалось запустить виртуальную машину поскольку низкоуровневая оболочка не запущена"

Tuesday, August 29, 2017

Сменить динамический ip-адрес на статический в SCVMM на работающей VM


Задать тип IP адреса (динамика или статика) можно при создании VM. Но если потребовалось изменить этот тип уже после создания, то можно сделать это через powershell. Здесь мы меняем тип для первого сетевого интерфейса. (Google помог по запросу scvmm change to static ip powershell )

$vm = Get-ScvirtualMachine -Name "имя нашей VM"
$staticIPPool = Get-SCStaticIPAddressPool -Name "имя нашего пула статических адресов"

Grant-SCIPAddress -GrantToObjectType "VirtualNetworkAdapter" -GrantToObjectID $vm.VirtualNetworkAdapters[0].ID -StaticIPAddressPool $staticIPPool

Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $vm.VirtualNetworkAdapters[0] -IPv4AddressType static

Испробовал - работает. Если машина включена и управляется агентом, то и адрес меняет в VM. Пробовал на Win, на Lin VM так делал, но IP внутри VM менял руками. 

Tuesday, August 1, 2017

Уcтановка сервера терминалов совместно с контроллером домена 2008 R2

Конфигурация в которой Domain Controller установлен совместно с Terminal Server является официально не поддерживаемой и не рекомендуемой. В 2008 R2 выводится лишь предупреждение об этом, а начиная с 2012 wizard просто откажется совмещать роли.
В большинстве случаев сейчас можно использовать виртуализацию для разнесения ролей по разным ОС если не хватает физических серверов. Возникает правда вопрос - "яйцо или курица?". То есть что сделать хостом, а что виртуалкой, но в целом проблема решается. При условии что лицензия Windows Server Standard уже давно дает возможность запуска двух виртуалок, это решение логично.
Но иногда, если нельзя, но очень хочется, то можно. Например в одной организации физический сервер стар и дохл, и явно не потянет две ОС.

Одна из проблем возникающих при совмещении ролей AD DC и TS это проблема с печатью при помощи easy print.

Принтеры пробрасываются с помощью easy print, видны как перенаправленные, но не печатают. Точнее задания на печать уходят в никуда. Можно всем пользователям раздать права администраторов домена ), но это плохой вариант. Куда лучше прописать права командами.

Запускаем командную строку с правами администратора, переходим в папку Windows\System32\Spool и запускаем:

Cacls.exe PRINTERS /e /g users:C
либо
Cacls.exe PRINTERS /e /g пользователи:C

решение было найдено здесь - http://searchvirtualdesktop.techtarget.com/tip/Five-reasons-printer-redirection-causes-Windows-printing-problems-in-RDS