Айтишник по имени Тёма

Личный блог об интересующих меня вещах

Орган с металлическим привкусом

Не так давно Яндекс.Радио предложило мне для прослушивания группу Powerwolf. Пожалуй, это один из моих любимых стилей музыки: собрать в одну песню звуки электрогитары с перегрузом, органа и хоровой вокал.

Powerwolf — немецкая пауэр-хэви-метал-группа, использующая в своём творчестве христианские мотивы, мрачные хоровые вставки и мощные органные партии. По утверждению Аттилы Дорна, в таких песнях, как «Panic in the Pentagram», «Coleus Sanctus», «Resurrection by Erection», коллектив иронично высмеивает то сатанизм, то католическую веру, называя себя «наблюдателями, а не борцами на религиозной сцене»
Википедия

Теперь для самого полного счастья осталось найти группу в которой есть электрогитара с перегрузом, орган и волынка.

Кстати, волынка с металлом есть у группы MystTerra. Потрясающая группа, с которой мне удалось по работать, как звукорежиссёру.

http to https редирект в IIS

Необходимо установить модуль HTTP Redirect и настроить его графически:

Либо в Web.config:

<rewrite>
   <rules>
      <rule name="Redirect to HTTPS" stopProcessing="true">
         <match url="(.*)" />
         <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
         </conditions>
         <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
      </rule>
   </rules>
</rewrite>
2017   http   https   IIS   it   web   windows   windows server

Альтернативные синтаксис условий в PHP

При работе с выводом в шаблон (если не используется явный шаблонизатор) чаще всего мы применяем следующие конструкции:

<? if($condition) { ?>
   html-code
<? } else { ?>
   html-code
<? } ?>

Для этих целей можно использовать ещё и альтернативный синтаксис:

<?php if($condition1): ?>
html-code
<?php elseif($condition2): ?>
html-code
<?php else: ?>
html-code
<?php endif; ?>
2017   html   it   php

Автоматический бекап виртуальных машин в XenServer

Прошло уже больше двух месяцев с того времени, как я опубликовал эту статью на  хабре. Поэтому, на мой взгляд, её можно написать уже и своём блоге. Далее авторский (с адаптацией под нашу речь) перевод исходной статьи из забугорнета:

Я работаю с Citrix XenServer уже много лет, и управление всеми серверами виртуализации через приложение XenCenter, которое установлено на моём компьютере с ОС Windows. До сегодняшнего дня мы регулярно производили резервное копирование виртуальных машин вручную, так же приходилось останавливать сервера для их копирования. Большинство владельцев серверов не могут позволить себе их отключение на длительное время. Поэтому я нашёл способ, как копировать виртуальные машины без их выключения и, соответсвенно, простоя.

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

Ручной бекап запущенной машины

  1. Поиск UUID виртаульной машины
xe vm-list is-control-domain=false is-a-snapshot=false
  1. Создание снепшота
    Параметр uuid необходимо заменить на свой, полученный на первом шаге, убедитесь, что он правильный.
xe vm-snapshot uuid=8ac95696-94f3-83c1-bc89-8bb2603f832b new-name-label=testvmsnapshot

А эта команда вернёт uuid снепшота, по которому его можно будет сохранить в файл

xe template-param-set is-a-template=false ha-always-run=false uuid=b15c0531-88a5-98a4-e484-01bc89131561
  1. Сохранение снепшота в файл
    Теперь можно сохранить полученный снепшот в .xva-файл, который можно использовать для восстановления сервера как из командной строки, так и из XenCenter
xe vm-export vm=b15c0531-88a5-98a4-e484-01bc89131561 filename=vm-backup.xva
  1. Удаление снепшота
    После сохранения .xva-файла можно удалить снепшот из самого XenServer
xe vm-uninstall uuid=b15c0531-88a5-98a4-e484-01bc89131561 force=true

Скрипт автоматического бекапа запущенных виртуальных машин
Для резервного копирования всех виртуальных машин, работающих на базе xenserver можно использовать следующий bash-скрипт. Данный скрипт создаёт снепшоты и экспортирует их на NFS-диск. У меня этот скрипт работает отлично, чего может не буть у вас, поэтому используйте его на собственный страх и риск.

#!/bin/bash
#
# Written By: Mr Rahul Kumar
# Created date: Jun 14, 2014
# Last Updated: Jan 22, 2016
# Version: 1.2
# Visit: http://tecadmin.net
#

DATE=`date +%d%b%Y`
XSNAME=`echo $HOSTNAME`
MOUNTPOINT=/xenmnt
UUIDFILE=/tmp/xen-uuids.txt
NFS_SERVER_IP="192.168.10.100"

### Create mount point

mkdir -p ${MOUNTPOINT}

### Mounting remote nfs share backup drive

[ ! -d ${MOUNTPOINT} ]  && echo "No mount point found, kindly check"; exit 0
mount -F nfs ${NFS_SERVER_IP}:/backup/citrix/vms ${MOUNTPOINT}

BACKUPPATH=${MOUNTPOINT}/${XSNAME}/${DATE}
mkdir -p ${BACKUPPATH}
[ ! -d ${BACKUPPATH} ]  && echo "No backup directory found"; exit 0


# Fetching list UUIDs of all VMs running on XenServer
xe vm-list is-control-domain=false is-a-snapshot=false | grep uuid | cut -d":" -f2 > ${UUIDFILE}

[ ! -f ${UUIDFILE} ] && echo "No UUID list file found"; exit 0

while read VMUUID
do
    VMNAME=`xe vm-list uuid=$VMUUID | grep name-label | cut -d":" -f2 | sed 's/^ *//g'`

    SNAPUUID=`xe vm-snapshot uuid=$VMUUID new-name-label="SNAPSHOT-$VMUUID-$DATE"`

    xe template-param-set is-a-template=false ha-always-run=false uuid=${SNAPUUID}

    xe vm-export vm=${SNAPUUID} filename="$BACKUPPATH/$VMNAME-$DATE.xva"

    xe vm-uninstall uuid=${SNAPUUID} force=true

done < ${UUIDFILE}

umount ${MOUNTPOINT}

Для ручного восстановления машины из снепшота можно использовать команду

xe vm-import filename=/media/xen-vm-backup/Ubuntu-server-1-11-9-2016.xva