sudo salt '*' pkg.install salt-minion refresh=True
Category: SysAdmin
In this Category i will post my experience in System/Network administration.
FailOver IP auf einem Hetzner Dedicated Server in eine VM einrichten
Um das FailOver IP vom Hetzner in eine VM benutzen zu können, muss man erstmal das FailOver IP bridgen, d.h. in die /etc/network/interfaces Datei die route eintragen, das ganze sieht dann auf dem Host Server so aus:
### Hetzner Online GmbH - installimage # Loopback device: auto lo iface lo inet loopback # device: eth0 auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.192 gateway xxx.xxx.xxx.xxx pointopoint xxx.xxx.xxx.xxx auto br0 iface br0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.255 bridge_ports none bridge_stp off bridge_fd 0 bridge_maxwait 0 # Einzlne IPs/Subnetz einfuegen up route add -host xxx.xxx.xxx.xxx dev br0 # Fail Over IP up route add -host yyy.yyy.yyy.yyy dev br0
Danach muss man in die VM in /etc/network/interfaces noch das FailOver IP eintragen, das ganze sieht dann so aus:
auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.255 gateway xxx.xxx.xxx.xxx pointopoint xxx.xxx.xxx.xxx # FailOver IP auto eth0:0 iface eth0:0 inet static address yyy.yyy.yyy.yyy netmask 255.255.255.255
natürlich nicht vergessen den Host einmal neu zu starten, damit die neu Konfiguration wirksam werden. That’s it.
Docker NGINX Reverse Proxy mit LetsEncrypt – Mixed Content Problem
Ich wollte letztens WordPress auf Docker testen! Der Datenverkehr soll auch mit Letsencrypt verschlüsselt sein. Dafür habe ich einen Github Projekt gefunden, der das ganze verfahren automatisiert. Alles lief gut bis ich auf das “Mixed-Content” Problem gestoßen bin, wo die WordPress Seite über einen verschlüsselten Adresse abrufbar war, aber die ganzen Bilder/CSS/scripts unverschlüsselt übertragen worden. Nach einem Tag Recherche habe ich gefunden, dass der einfachsten weg das Problem zu lösen ist einfach in die Datei wp-config.php diese Zeile einzufügen:
$_SERVER['HTTPS'] = 'on';
KVM Console für VMs auf debian Jessie aktivieren.
Um auf die Guest VM direkt vom Host per console zuzugreifen
virsh console VM
muss man erstmal folgendes auf die Guest VM ausführen:
systemctl enable serial-getty@ttyS0.service systemctl start serial-getty@ttyS0.service
Dann muss man noch die Datei /etc/default/grub anpassen, damit folgendes :
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0" GRUB_TERMINAL="serial console"
drin steht und letztlich
update-grub
und jetzt wenn man auf dem Host folgendes ausführt
virsh console VM
Dann sollte es klappen.
KVM VM LVM innerhalb LVM verkleinern
WARNUNG: IMMER BACKUP VORHER MACHEN, und das ganze ist auf eigene Gefahr!
folgendes Szenario, ich habe einen KVM Host Server darauf laufen ein paar VMs. Für fast alle VMs habe ich eine Festplatten große von 20GB angelegt, mit der Zeit musste ich feststellen das 20GB war einfach zu viel und 10GB wurden vollkommen ausreichen, vor allem das ganze kostet zu viel Backup Speicher.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert VM1 sunny -wi-ao---- 10.00g VM2 sunny -wi-a----- 20.00g backup-VM1 sunny -wi-a----- 20.00g backup-VM2 sunny -wi-a----- 20.00g home sunny -wi-ao---- 20.00g root sunny -wi-ao---- 10.00g swap sunny -wi-ao---- 4.00g tmp sunny -wi-ao---- 5.00g
Vorbereitung
auf VM2 ist einen debian linux System mit LVM2 Partition installiert, bevor wir die VM verkleinern müssen wir die Machine runter fahren.
virsh shutdown VM2
Backup
wir erstellen erstmal eine neue LV für den Backup, die genau so groß wie die VM2
lvcreate -L 20G sunny -n backup-VM2
Jetzt machen wir einfach eine 1:1 Copy von die VM, mit dem dd Befehl
dd if=/dev/sunny/VM2 of=/dev/sunny/backup-VM2
Verkleinern
Jetzt müssen wir die VM2 auf dem Host mounten, da VM2 selber LVM ist benötigen wir das Tool kpartx, falls nicht vorhanden einfach mit apt installieren.
apt install kpartx
nun um die Logical Volumes, die Innerhalb unseren VM2 anzuzeigen, müssen wir folgendes Befehl ausführen:
kpartx -av /dev/sunny/VM2 add map sunny-VM21 (253:9): 0 497664 linear /dev/sunny/VM2 2048 add map sunny-VM22 (253:10): 0 2 linear /dev/sunny/VM2 501758 add map sunny-VM25 : 0 41439232 linear /dev/sunny/VM2 501760
und nun aktivieren wir die LVMs, die innerhalb VM2 sind
vgchange -ay
lvscan
Nun müssen wir, die LVM, die wir verkleinern wollen erstmal auf Fehlern überprüfen
e2fsck -f /dev/VM2-vg/root
Jetzt verkleinern wir die Root Partition
resize2fs /dev/VM2-vg/root 8G
danach verkleinern wir die Root LV
lvreduce -L 8.5G /dev/VM2-vg/root
Jetzt nochmal die Root Partition ändern
resize2fs /dev/VM2-vg/root
auf Fehlern überprüfen
e2fsck -f /dev/VM2-vg/root
Jetzt können wir die LVMs deaktivieren und entfernen
vgchange -an
kpartx -dv /dev/sunny/VM2
Nachher, die Machine booten und folgendes Befehl innerhalb VM2 eingeben:
pvs -v --segments /dev/sda5
root@VM2 ~ # pvs -v --segments /dev/sda5 DEGRADED MODE. Incomplete RAID LVs will be processed. Wiping cache of LVM-capable devices Using physical volume(s) on command line PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/sda5 VM2-vg lvm2 a-- 19,76g 10,41g 0 2176 root 0 linear /dev/sda5:0-2175 /dev/sda5 VM2-vg lvm2 a-- 19,76g 10,41g 2176 2664 0 free /dev/sda5 VM2-vg lvm2 a-- 19,76g 10,41g 4840 218 swap_1 0 linear /dev/sda5:4840-5057 root@VM2 ~ # sudo pvmove --alloc anywhere /dev/sda5:4840-5057 /dev/sda5: Moved: 0,0% /dev/sda5: Moved: 50,5% /dev/sda5: Moved: 100,0%
sudo pvmove --alloc anywhere /dev/sda5:yyyy-end
Nachher die VM2 mit GParted booten um die physikalischen Volumen zu verkleinern.
und am Schluss die LVM selber auf dem Host verkleinern.
lvreduce -L 10G /dev/VM2
Salt Minion/Master auf Debain (Jessie) installieren
Ich benutze Salt um updates auf allen VMs zu installieren, Salt kann viel mehr, hier werde ich aber nur zeigen wie man Updates auf allen VMs durchführt.
Salt-Master insallieren
apt-get install salt-master
Man installiert den salt-master auf dem Host, auf denen die Befehle ausgeführt werden sollen. Falls man den Master auch als einen Client(Minion) haben möchte, dann installiert man zusätzlich das salt-minion Package.
apt-get install salt-minion
danach muss man auf dem Master die /etc/salt/minion Datei editieren
# Set the location of the salt master server, if the master server cannot # be resolved, then the minion will fail to start.
master: localhost
und beim master localhost eintragen. Somit wird der Master auch als einen Minion in die Liste eingefügt.
Salt-Minion installieren
jetzt installiert man auf jedem VM bzw. jedem Server, den man über den salt-master updaten möchte, das salt-minion Package.
apt-get install salt-minion
Nun müssen wir unseren salt-minion zeigen wo unsere salt-master sich befindet, dafür editieren wir die /etc/hosts Datei und fügen den IP für den salt-master.
echo "192.168.10.10 salt" >> /etc/hosts
Wobei hier trägt Ihr anstatt vom 192.168.10.10 den IP von eurem Master Host. Jetzt müssen wir nur noch auf dem Master die Minion(s) akzeptieren.
dafür auf dem salt-master folgendes Befehl ausführen
salt-key -L
es wird eine Liste mit allen Minions angezeigt. damit man die einfügt führt man folgendes Befehl
salt-key -A
Jetzt können wir aus dem salt-master alle Minions updaten
salt '*' pkg.list_upgrades
dieses Befehl zeigt uns alle verfügbare Updates auf alle minions, um den update durch zu führen, benutzt man folgendes Befehl
salt '*' pkg.upgrade
Plugins/Themes Update FTP Login abfrage los werden!
Falls Ihr WordPress Lokal auf eurem Rechner oder auf einem Root Server installiert habt wo ihr wisst, dass Ihr nur die einzigen die darauf zugreift, dann könnt ihr die FTP Login abfrage beim Versuch eines Updates, los werden. Indem Ihr einfach die rechte für das WordPress Verzeichnis ändert.
chown -R www-data:www-data /usr/share/wordpress
danach sollte die FTP Abfrage nicht mehr erscheinen.
WordPress auf Jessie installieren
Hier werde ich erklären wie man den bekannten WordPress Blog aus dem Debian Repostries (Jessie) installiert.
Um WordPress zu installieren führt man folgendes Befehl:
sudo apt-get install wordpress
Nach dem man WordPress installiert hat, muss man nun den Apache Service sagen wo sich unsere WordPress Installation befindet.
Dafür müssen wir einen WordPress config Datei in /etc/apache2/sites-available/ anlegen.
mit eurem beliebigen Editor:
vim /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
ServerName wordpress.domain.com
DocumentRoot /usr/share/wordpress
<Directory /usr/share/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
<Directory /var/lib/wordpress/wp-content>
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
jetzt müssen wir die Website aktivieren.
sudo a2ensite wordpress
nun müssen wir den Apache Server neu starten damit die Änderungen wirksam werden.
sudo service apache2 restart
Jetzt müssen wir den WordPress Konfigurieren damit es den MySQL Datenbank benutzt.
dafür müssen wir eine config Datei /etc/wordpress/config-NAME_OF_YOUR_VIRTUAL_HOST.php anlegen.
vim /etc/wordpress/config-wordpress.domain.com.php
und folgendes rein schreiben:
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'passwort');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>
nun müssen wir die MySQL DB erstellen, falls die MySQL Server ist noch nicht auf eurem Server installiert, man kann es mit folgendes Befehl installieren:
sudo apt-get install mysql-server
mysql -u root -p
CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'passwort';
FLUSH PRIVILEGES;
nun könnt Ihr eure WordPress Installation über den Web Interface aufrufen. http://wordpress.domain.com