«А чего дома сидеть?»

На одном из интервью была поставленна задача построить тестовую лабораторию сосотоящую из Ubuntu Desktop, Ubuntu Server Router и Ubuntu WEB Server с использованием виртуальных машин в VirtualBox на одном физическом хосте. 

Router имел три интерфейса (первый NAT на хост) и разделял две виртуальные подсети. В первую сеть на нем должен работать DNS server для обслуживания зоны "testzone.home", NAT и DHCP сервер. 

Desktop имел два интерфейса (первый NAT на хост) получает IP динамически и получает доступ к "www.testzone.home" на WEB server. Вторым интерфейсоам Router смотрит в подсеть 2 и на WEB serevr. 

На WEB server имеющем два интерфейса (первый NAT на хост) установлен NGINX, MySQL, PHP и Wordpress "www.testzone.home". 

К WEB server подключен внешний диск который монтируется при старте хоста. Каждые три часа база данных Wordpress, системные файлы /etc/, /home/ и папки с файлами Wordpress архивируется в примонтированный раздел. Архивы хранятся месяц после чего удаляются. 

Реализация

Скачиваем ISO имиджи Ubuntu Desktop & Server 14.04 с официального сайта. Скачиваем и устанавливаем VirtualBox с официального сайта Oracle. Создаем три виртуальные машины (два Servers и один Desktop) с Bridge interfaces на первом сетевом интерфейсе. Стартуем и инсталируем Ubuntu. UserID - ubuntu, password - ubuntu. В процессе инсталяции выбираем инсталировать только OpenSSH server. Начнем настройку тестовой лаборатории с сервера. 

Server

Login на сервер с UserID/password - ubuntu/ubuntu. 
Набираем:
ifconfig
получаем IP NAT интерфейса. В моем случае 192.168.0.25.
Выключаем Server.
sudo halt -p
Активируем второй интерфейс для виртуальной машины как "Internal Network" в свойствах.
Так же добавляем еще один SATA диск фиксированным размером 1GB. Стартуем Server VM.
Mount a new partition. Включаем сервер, логинимся.
sudo nano /etc/network/interfaces
auto eth1
iface eth1 inet static
	address 10.10.0.1
	netmask 255.255.255.0
и сохраняем файл.
dmesg | grep eth
lshw -C network
ifconfig eth1 down
ifconfig eth1 up
ifconfig
Должен нам показать два активных интерфейса.
Все делаем как здесь написано. Устанавливаем NGINIX, MySQL, PHP и phpmyadmin
Подключаем (монтируем) дополнительный раздел. 
sudo fdisk -l

sudo cp /etc/fstab /etc/fstab.old

sudo fdisk /dev/sdb

then type o press enter # creates a new table

then type n press enter # creates a new partition

then type p press enter # makes a primary partition.

then type 1 press enter # creates it as the 1st partition

finally type w #this will right any changes to disk.

Okay now you have a partition, now you need a filesystem.

sudo mkfs.ext4 /dev/sdb1

sudo fdisk -l

sudo nano /etc/fstab

#device      mountpoint            fstype  options     dump fsck
/dev/sdb1    /home/ubuntu/backup   ext4    defaults    0    0
reboot
Архивируем базы данных и папку с системными файлами. Создаем файл /home/ubuntu/backup.sh
nano /home/ubuntu/backup.sh
копируем в файл
#!/bin/bash
#START
DB_BACKUP="/home/ubuntu/backup"
DB_USER="root"
DB_PASSWD="password" #password to SQL
FILE="/etc-files-`date +%Y-%m-%d-%H-%M-%S`.gz"

# Remove backups older than 30 days
find $DB_BACKUP -type f -mtime +30 -exec rm -rf {} \;

# Backup each database on the system and sys files
mysqldump -u $DB_USER -p$DB_PASSWD --all-databases > $DB_BACKUP"/`date +%Y-%m-%d-%H-%M-%S`.sql"
tar -cpzf $DB_BACKUP/$FILE -C / etc/

#END
создаем правило для cron
sudo su
crontab -e
добавляем правило. Сохроняем crontab - Ctrl+X и Y
*/30 * * * * /bin/bash /home/ubuntu/backup.sh
и делаем файл исполняемым.
chmod +x /home/ubuntu/backup.sh
Сервер готов.

Router

*/30 * * * * /bin/bash /home/ubuntu/backup.sh