Anpassungen an der Hardware
Im Gegensatz zu den anderen Maschinen, muss die Maschine die diese Rolle einnimmt eine weitere (virtuelle) Festplatte erhalten, die dem Zwecke dient, die Daten beherbergen zu können. Bevor also die virtuelle Maschine gestartet wird, muss dieser Maschine eine weitere virtuelle Festplatte mit einer vorher auf der Basis der Anforderungen festgelegte Größe hinzugefügt werden (üblicherweise zwischen 160 GB und 1 TB). Nach einem Neustart, wird die Festplatte vom Betriebssystem-Kern erkannt und die Installation kann nun fortgesetzt werden.
Einbinden der Datenplatte
Info |
---|
|
Im nachfolgenden Abschnitt werden abweichend vom Standard dieser Dokumentation in den Code-Blöcken nicht nur die Befehle angegeben, sondern ein Mitschnitt der gesamten Operation, um auch die Ausgaben der Befehle exemplarisch zu zeigen, da diese von einiger Relevanz sind. Die einzugebenden Befehle befinden sich immer hinter dem Systemprompt [root@acd-lb ~]# |
Damit die neue Festplatte genutzt werden kann, muss sie entsprechend initialisiert werden. Dafür muss erst mal festgestellt werden, unter welchem Gerätenamen die Platte im System erkannt wurde:
Code Block |
---|
language | bash |
---|
title | Auflisten der Festplatten-Gerätenamen |
---|
|
[root@acd-lb ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb
[root@acd-lb ~]# |
Durch die Eingabe des Befehls ls /dev/sd*
werden alle Gerätenamen bezüglich der aktuellen Festplatten aufgelistet. Der Befehl zeigt uns folgende Gerätenamen:
/dev/sda
=> Erste Festplatte/dev/sda1
=> Erste Partition der ersten Festplatte/dev/sda2
=> Zweite Partition der ersten Festplatte/dev/sdb
=> Zweite Festplatte
Da die zweite Festplatte offensichtlich noch keine Partitionen hat, ist nun davon auszugehen, dass es sich hier um die neu hinzugefügte Festplatte handelt. Es wird nun das Partitionierungs-Programm gestartet, welches uns unter anderem auch anzeigt, ob wir mit dieser Platte die richtige ausgewählt haben:
Code Block |
---|
title | Partitionierung - Teil 1 |
---|
|
[root@acd-lb ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x877ae737.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 171.8 GB, 171798691840 bytes
255 heads, 63 sectors/track, 20886 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x877ae737
Device Boot Start End Blocks Id System
Command (m for help): |
Nach dem Starten des Partitionierungs-Programmes kann man sich durch Eingabe des Befehls p
die Partitionierungstabelle der Festplatte anschauen. Die ist erwartungsgemäß leer - aber die wichtige Information ist, dass die Platte mit dem Gerätenamen /dev/sdb
171.8 GB groß ist. Da dies der erzeugten Größe entspricht, wissen wir, dass es sich um die richtige Platte handelt (das Tool rechnet übrigens mit 10er Potenzen. Aus diesem Grunde wird die Platte, die im vSphere Client, der in 2er Potenzen rechnet mit 160GB angelegt wurde als 171.8 GB angezeigt).
Note |
---|
|
Wenn die Maschine auch über ein CD/DVD Laufwerk (egal ob virtuell oder physisch) verfügt, so wird dieses höchstwahrscheinlich auch als Massenspeichergerät ohne Partitionstabelle in der Liste auftauchen (z.B. /dev/sdc ). Versucht man dieses mit dem Partitionierungstool zu bearbeiten, wird es eine entsprechende Fehlermeldung geben. Die Anzeige des Befehls p wird auch keine ensprechenden Informationen anzeigen. Letztendlich muss man ausprobieren, welcher Gerätenamen nun der Festplatte entspricht. |
Es wird nun eine Partition angelegt, die die ganze Platte umfasst und vom Typen 83 ist. Die Partitionstabelle wird geschrieben und das Tool beendet:
Code Block |
---|
title | Partitionierung - Teil 2 |
---|
|
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-20886, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-20886, default 20886):
Using default value 20886
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
Command (m for help): p
Disk /dev/sdb: 171.8 GB, 171798691840 bytes
255 heads, 63 sectors/track, 20886 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x877ae737
Device Boot Start End Blocks Id System
/dev/sdb1 1 20886 167766763+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@acd-lb ~]# |
Ein erneuter Aufruf des Befehls ls /dev/sd*
zeigt nun, dass die neue Partition vom Kernel erkannt wurde:
Code Block |
---|
language | bash |
---|
title | Erneutes Auflisten der Festplatten-Gerätenamen |
---|
|
[root@acd-lb ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1
[root@acd-lb ~]# |
Die Partition kann nun mit dem Gerätenamen /dev/sdb1
angesprochen werden. Auf der Partition muss nun ein Filesystem erzeugt werden (Formatieren). Da diese Partition extrem viele kleine und große Dateien beherbergen soll, wird hierfür ein für die Aufgabe optimiertes Filesystem genommen, und zwar XFS. Das erzeugen des Filesystems erfolgt durch die Eingabe folgenden Befehls:
Code Block |
---|
language | bash |
---|
title | Erzeugen des Filesystems |
---|
|
[root@acd-lb ~]# mkfs.xfs -L data /dev/sdb1
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=10485423 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=41941690, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=20479, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0 |
Falls der Befehl nicht gefunden wird, muss das Packet nachinstalliert werden.
rpm -qa |grep xfsprogs
yum -y install xfsprogs
Nachdem das Filesystem nun erzeugt wurde, muss es noch im globalen Namensraum eingehängt werden, und zwar so, dass es auch nach einem Neustart des Systems wieder zur Verfügung steht. Da alle Prozesse des jtel-Systems im Kontext des Benutzers jtel laufen, bietet es sich an, den Zweig /home komplett in das neue Filesystem unterzubringen. Ein kurzer Aufruf auf den Ordner zeigt allerdings, dass in diesem schon Dateien vorhanden sind:
Code Block |
---|
language | bash |
---|
title | Prüfung des Inhalts von /home |
---|
|
[root@acd-lb ~]# ls -la /home
total 12
drwxr-xr-x. 3 root root 4096 Jun 9 09:04 .
dr-xr-xr-x. 23 root root 4096 Jun 9 19:01 ..
drwx------. 3 jtel jtel 4096 Jun 9 09:05 jtel
[root@acd-lb ~]# |
Wie man sehen kann, befindet sich unter /home
bereits das Home-Verzeichnis vom Benutzer jtel
. Würde man nun auf /home
die neue Platte einhängen, würden die bereits vorhandenen Daten nicht mehr sichtbar sein, da sie sich ja nicht auf dem neuen Volumen befinden. Diese müssen also erst mal irgendwo anders untergebracht werden. Da sich dort noch sehr sehr wenige Daten befinden, kann das Home-Verzeichnis vom Benutzer jtel
kurz mal ins Home-Verzeichnis vom Benutzer root
bewegt werden:
Code Block |
---|
language | bash |
---|
title | Sichern der Daten auf /home |
---|
|
[root@acd-lb ~]# ls -la /home
total 12
drwxr-xr-x. 3 root root 4096 Jun 9 09:04 .
dr-xr-xr-x. 23 root root 4096 Jun 9 19:01 ..
drwx------. 3 jtel jtel 4096 Jun 9 09:05 jtel
[root@acd-lb ~]# mkdir /root/backup
[root@acd-lb ~]# mv /home/* /root/backup
[root@acd-lb ~]# |
Es wurde nun ein neues Verzeichnis backup
im Home-Verzeichnis des Benutzers root angelegt. Mit dem zweiten Befehl wurde der gesamte Inhalt des Verzeichnis /home
ins Verzeichnis /root/backup
bewegt. Das neue Volumen wird nun in die Tabelle der automatisch eingehängten Volumen eingetragen, so dass es automatisch beim Start eingehängt wird. Dafür wird eine folgende Zeile ans Ende der Datei /etc/fstab
eingefügt:
Code Block |
---|
title | Neuer Eintrag in /etc/fstab |
---|
|
/dev/sdb1 /home xfs noatime,nodiratime 0 0 |
Jede Zeile besteht aus 6 Werten, die entweder mit Leerstellen oder Tabs getrennt werden. Diese Bedeuten im Spezifischen Fall:
- Das Volumen mit dem Gerätenamen
/dev/sdb1
- wird im globalen Namensraum unter
/home
eingehängt - unter Benutzung des Filesystem-Treibers für XFS
- mit den Attributen
noatime
und nodiratime (wobei nodiratime in noatime enthalten ist, so dass nicht beides definiert werden muss)
- Intervallzähler für "dump"-Operationen, falls das Filesystem das unterstützt
- Reihenfolge für die Integritätsprüfung beim Systemstart
Damit das Volumen sofort eingehängt wird, muss nun noch folgender Befehl eingegeben werden:
Code Block |
---|
language | bash |
---|
title | Sofortiges Einhängen |
---|
|
[root@acd-lb ~]# mount /home
[root@acd-lb ~]# |
Das Fehlen einer jeglichen Ausgabe ist die üblich sachliche Art von Unix darauf hinzuweisen, dass der Befehl erfolgreich ausgeführt wurde (Unix "spricht" in der Regel nur, wenn was schief gegangen ist). Um sich des Erfolges zu versichern, kann man sich mal die Auslastung des Filesystems mit folgendem Befehl anschauen:
Code Block |
---|
|
[root@acd-lb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root
14G 1.1G 12G 8% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 81M 371M 18% /boot
/dev/sdb1 160G 33M 160G 1% /home |
Hier kann man deutlich sehen, dass der Zweig /home 160GB umfasst, was der beweis ist, dass das neue Volumen erfolgreich eingehängt wurde.
Nun ist es an der Zeit, die Dateien wieder an ihrem angestammten Ort zu befördern:
Code Block |
---|
language | bash |
---|
title | Zurückspeichern der Daten auf /home |
---|
|
[root@acd-lb ~]# mv /root/backup/* /home
[root@acd-lb ~]# restorecon -R -v /home
restorecon reset /home context system_u:object_r:file_t:s0->system_u:object_r:home_root_t:s0
restorecon reset /home/jtel/.inputrc context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:user_home_t:s0
[root@acd-lb ~]# rmdir /root/backup
[root@acd-lb ~]# |
Der erste Befehl bewegt die Daten zurück. Damit ist es aber noch nicht gemacht, denn bei dieser Operation sind die SELINUX-Security-Labels der Dateien abhanden gekommen. Um dieser wieder herzustellen, dient der zweite Befehl. Der dritte Befehl löscht dann das übrig gebliebene Sicherungsverzeichnis /root/backup
.
Es kann nun mit der Installation und Konfiguration der benötigten Software fortgefahren werden.
Installation der benötigten Softwarepakete
Für den Betrieb der Rolle STORE muss lediglich das Softwarepaket samba installiert werden, welches den geteilten Dateibereich mittels des SMB/CIFS Protokoll zur Verfügung stellt. Dies wird durch Ausführung des folgenden Befehls erreicht:
Code Block |
---|
language | bash |
---|
title | Installieren von Samba |
---|
|
yum -y install samba |
Nach der Installation kann mit der Konfiguration der Software fortgefahren werden.
Konfiguration der Software
Als erstes wird das geteilte Verzeichnis angelegt, und dem Benutzer jtel als Besitzer zugewiesen:
Code Block |
---|
language | bash |
---|
title | Anlegen des geteilten Verzeichnisses |
---|
|
mkdir /srv/jtel
mkdir /srv/jtel/shared
chown jtel:jtel /srv/jtel/shared
sudo -u jtel ln -s /srv/jtel/shared /home/jtel/shared |
Die Samba Konfigurationsdatei wird gesichert, und ein neues angelegt:
Code Block |
---|
language | bash |
---|
title | /etc/samba/smb.conf |
---|
|
cp -a /etc/samba/smb.conf /etc/samba/smb.conf.orig
cat <<EOFF > /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
min protocol = NT1
ntlm auth = yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
EOFF
cat <<EOFF | sudo tee -a /etc/samba/smb.conf
[shared]
comment = jtel ACD Shared Directory
read only = no
public = yes
writable = yes
locking = yes
path = /srv/jtel/shared
guest ok = yes
create mask = 0644
directory mask = 0755
force user = jtel
force group = jtel
EOFF
if (grep -q "VERSION_ID.*7" /etc/centos-release); then
cat <<EOFF | sudo tee -a /etc/samba/smb.conf
acl allow execute always = True
EOFF
fi |
Die Einträge ("force user
" und "force group
" stellen sicher, dass alle Dateien die über die Freigabe erzeugt, kopiert oder geändert werden, im Filesystem immer unter dem Benutzer jtel angelegt bzw. angesprochen werden, unabhängig davon, welcher Benutzer sich auf die Freigabe anmeldet. Dies stellt sicher, dass auch bei abweichenden Windows-Login-Namen die Berechtigungen im Filesystem intakt bleiben. Die Optionen "create maske" und "directory mask" werden gesetzt, damit alle Dateien und Verzeichnisse, die angelegt werden, die Berechtigung von Linux erhalten, selbst wenn sie von Windows aus angelegt werden. Es werden die Rechte über Bist vergeben, so bedeuten die Werte 0644 und 0755 folgende Biteinstellungen: 0755 = -rwxr-xr-x. und 0644 = -rw-r--r–.
Damit samba
auch Zugriff auf Dateien im /home
Bereich erhält, müssen noch einige Variablen des SELINUX Security Frameworks konfiguriert werden:
Note |
---|
|
Der nachfolgende Befehl dauert relativ lange, da die betroffenen Sicherheitsregelwerke dadurch neu kompiliert werden. |
Code Block |
---|
language | bash |
---|
title | SELINUX Konfiguration |
---|
|
setsebool -P samba_enable_home_dirs=on samba_export_all_rw=on use_samba_home_dirs=on use_nfs_home_dirs=on |
Sollte SELinux deaktiviert sein, so kann es in der Datei /etc/sysconfig/selinux entsprechend umgestellt werden. Hier den Eintrag mit "SELINUX=disabled" suchen und durch den Wert "SELINUX=permissive" ersetzen. Der Server muss dann neu gestartet werden.
In der Samba-Benutzerdatenbank müssen nun die für das CIFS-Protokoll zusätzlich benötigten Benutzerattribute erzeugt werden. Da im System bereits der Benutzer jtel
für alle Prozesse und Netzwerkzugriffe vorgesehen ist, erfolgt dies erst mal für diesen Benutzer so dass alle Maschinen sich als Benutzer jtel
an die Freigabe anmelden können:
Code Block |
---|
language | bash |
---|
title | Samba Benutzer anlegen |
---|
|
(echo fireball; echo fireball) | smbpasswd -a jtel -s |
Das Programm verlangt dann die zweimalige Eingabe des Passwort, was der Benutzer jtel
für Netzzugriffe über das CIFS-Protokoll erhalten soll. Damit die Benutzung der Freigabe unter Windows ohne eine gesonderte Anmeldung erfolgen soll, ist hier das Passwort einzugeben, welches der lokale Benutzer jtel
auf den Windows-Maschinen erhalten hat. Im Falle unserer Musterinstallation wäre dies der Benutzer jtel
mit dem Passwort F1r3ball
.
Im Falle, dass auf den Windows-Maschinen hingegen ein anderer Benutzername angelegt wurde, oder gar die Maschinen in einer Domäne angemeldet wurden, und die jtel Programme unter einem dafür spezifisch angelegten Domänen-Benutzer laufen sollen, so muss ein gleichnamiger Benutzer angelegt werden. Dies muss erst mal auf Systemebene erfolgen und danach können dann die Zusatzdaten in die Samba-Benutzerdatenbank erzeugt werden. Das Nachfolgende Beispiel zeigt dies an Hand des Benutzers robot5
.
Code Block |
---|
language | bash |
---|
title | Anlegen weiterer Benutzer |
---|
|
useradd -m robot5
(echo fireball; echo fireball) | smbpasswd -a robot5 -s |
Es können so beliebige weitere Benutzer angelegt werden. Unabhängig davon, welcher dieser Benutzer für die Anmeldung zur Freigabe benutzt wird, werden alle Dateien im zentralen Datenverzeichnis durch die spezielle Konfiguration der Freigabe dem Benutzer jtel
zugewiesen.
Als nächstes müssen in der Firewall die Port-Freigaben für den Samba-Dienst eingetragen und persistent gespeichert werden (ggf. muss der Index 4 auf 1, 2 oder 3 gesetzt werden, je nachdem, wie viele Firewall-Regeln vorhanden sind; Fehler: iptables: Index of insertion too big.):
Code Block |
---|
language | bash |
---|
title | Firewall konfigurieren |
---|
|
iptables -I INPUT 4 -p tcp -m tcp --dport 445 -j ACCEPT
iptables -I INPUT 4 -p tcp -m tcp --dport 139 -j ACCEPT
iptables -I INPUT 4 -p udp -m udp --dport 138 -j ACCEPT
iptables -I INPUT 4 -p udp -m udp --dport 137 -j ACCEPT
service iptables save |
Zum Abschluss müssen nun die Samba-Dienste nur noch für den automatischen Start konfiguriert werden, und gestartet werden:
Code Block |
---|
language | bash |
---|
title | Samba Dienste Registrieren und Starten |
---|
|
chkconfig nmb on
chkconfig smb on
service nmb start
service smb start |
Abschließende Tests
Um zu verifizieren, dass die Rolle STORE korrekt installiert wurde, sollte erst mal ein grundsätzlicher Funktionstest ausgeführt werden. Der einfachste Test, kann z.B: von einer Windows-Maschine ausgefürt werden, in dem einfach versucht wird, auf die Freigabe zuzugreifen. Dies kann z.B. aus dem Windows-Explorer erfolgen in dem der UNC ( \\ACD-LB\shared
) der Freigabe in die Pfadzeile eingegeben wird:
Image Removed
Im Idealfall wird sich das freigegebene Verzeichnis ohne weitere Nachfragen öffnen. Abschließend sollte noch geprüft werden, dass die WIndows Maschine im Verzeichnis schreiben kann, und dass die erzeugten Dateien mit den korrekten Attributen ins Zielverzeichnis gelangen. Dafür reicht es im Explorer mittels Rechtsklick ein Verzeichnis und eine Textdatei anzulegen.
Aus Sicht der Linux-Maschine sollten sich die erzeugten Dateien folgendermaßen zeigen:
Code Block |
---|
title | Testdateien im Linux-Filesystem |
---|
|
[root@acd-lb ~]# ls -la /home/jtel/shared/
total 4
drwxr-xr-x. 3 jtel jtel 51 Jun 12 15:44 .
drwx------. 4 jtel jtel 4096 Jun 9 20:31 ..
drwxr-xr-x. 2 jtel jtel 6 Jun 12 15:44 New folder
-rw-r--r--. 1 jtel jtel 0 Jun 12 15:44 New Text Document.txt |
Wie man hier sehen kann, sind sowohl die Testdatei als auch das Testverzeichnis vorhanden und mit den korrekten Berechtigungen (Dateien => 644 => rw,r,r Verzeichnisse => 755 => rwx,rx,rx) erzeugt wurden. Die Testdateien können nun gelöscht werden:
Code Block |
---|
language | bash |
---|
title | Löschen der Testdateien |
---|
|
rm -rf /home/jtel/shared/* |
Installation der Meta-Rolle Software
In einem Standard-Installations-Szenario wird in der Zentral-Freigabe der Rolle STORE auch eine Kopie der Software-Repositories abgelegt. Diese ist demnach von allen Maschinen des jtel Systems erreichbar. Der Zugriff auf die Software-Repositories dient verschiedenen Zwecken:
- Alle Maschinen der Rolle TEL können die Telefonie-Applikationen (R5-Skripte) direkt von dieser zentralen Freigabe heraus ausführen. Alternativ können diese Komponenten der Software auch von der zentralen Freigabe lokal auf die Windows-Maschinen kopiert werden um den Netzwerkverkehr im laufenden Betrieb zu reduzieren. Dies erfordert allerdings zusätzliche Sorgfalt beim aktualisieren des Systems, da in diesem Fall nach dem Aktualisieren des Repositories die entsprechenden Verzeichnisse mit den R5-Skripten auf allen Windows-Maschinen kopiert werden müssen.
- Im Falle der Erstinstallation oder späteren Aktualisierungen, werden von hier die Datenbank-Initialisierungs- bzw. Datenbank-Aktualisierung-Skripte ausgeführt.
- Weitere Software-Komponenten die auf verschiedenen Maschinen lokal installiert werden (z.B. Konnektoren, Plugins, UDP Listener) werden von hier kopiert und aktualisiert
Installation benötigter Zusatzsoftware
Für die Bereitstellung und Aktualisierung des jtel Software-Repositories muss zusätzliche Software installiert werden. Da diese nicht nur aus den offiziellen CentOS Paketquellen bezogen werden kann, müssen noch weitere Software-Quellen konfiguriert werden:
Code Block |
---|
language | bash |
---|
title | Installieren zusätzlicher Softwarequellen |
---|
|
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install http://mirror1.hs-esslingen.de/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install yum-utils
yum-config-manager --enable rpmforge-extras |
...
In a standard installation scenario, a copy of the software repositories is also stored in the central share of the STORE role. This is therefore accessible from all machines of the jtel system. Access to the software repositories serves various purposes: - All machines in the TEL role can execute the telephony applications (R5 scripts) directly from this central share. Alternatively, these components of the software can also be copied locally from the central share to the Windows machines to reduce network traffic during operation. However, this requires additional care when updating the system, since in this case, after updating the repository, the corresponding directories with the R5 scripts must be copied on all Windows machines.
- In case of initial installation or later updates, the database initialization or database update scripts are executed from here.
- Additional software components that are installed locally on different machines (e.g. connectors, plugins, UDP listener) are copied and updated from here
Installation of required additional softwareNote: for redundant systems, do this on BOTH storage nodes. Additional software must be installed to provide and update the jtel software repository. Since this can not only be obtained from the official CentOS package sources, other software sources must be configured: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install additional software sources - MySQL 8.x. |
---|
| yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
|
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install additional software sources - MySQL 5.6 |
---|
| yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm |
|
The required software can then be installed and configured. The configuration is done under the user jtel. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install and configure GIT |
---|
| yum -y install git222 mysql-community-client
su jtel
cd
git config --global user.name "jtel Support"
git config --global user.email "support@jtel.de" |
|
If you need a proxy for GIT: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Proxy for GIT |
---|
| git config --global http.proxy http://<proxy_server>:<port> |
|
Downloading the jtel software for the first timeNote: for redundant systems, do this on the ACTIVE storage nodes. The following operations are no longer performed in the context of the root user but must be performed in the context of the jtel user. To do this, you can either log in as user jtel in a separate SSH session or, if you are already logged in as user root, you can switch to the context of the jtel user. This is done with the following command: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Change user context |
---|
| su jtel
cd |
|
After entering these commands you can recognize the user change at the system prompt, which is now [jtel@acd-lb ~]$ (the system prompt consists of username@hostname current directory) The next step is to download the two software repositories with the jtel standard software. This is done by entering the following commands:
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Download the development repositories |
---|
| cd /srv/jtel/shared
git clone https://bitbucket.org/jtelgmbh/jtel.git JTEL
git clone https://bitbucket.org/jtelgmbh/jtelcarrierportal.git JTELCarrierPortal |
|
In the event that specific adaptations or extensions have been programmed for the customer, the customer-specific software repository must also be downloaded. This is done exemplarily by a command which is structured as follows:
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Download a custom repository |
---|
| cd /srv/jtel/shared
git clone https://bitbucket.org/jtelgmbh/cacme/software.git acme |
|
Both the source URL and the target directory are customer-specific in this case and differ from case to case. In the downloaded software repositories, the software release to be installed at the customer must now be selected. In this case it is release 3.14: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Select the desired release |
---|
| cd /srv/jtel/shared/JTELCarrierPortal
git checkout release/stable-3.18
cd /srv/jtel/shared/JTEL
git checkout release/stable-3.18
cd /srv/jtel/shared |
|
The last step is to create the directories for central logging, standard data import and the central data directory: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Prepare data directories |
---|
| cd /srv/jtel/shared
mkdir -p LogFiles LogFilesCall Import/{Clients,ServiceNumbers}/{Done,In,Problems}
cp -a JTELCarrierPortal/Data .
cp -a JTEL/Data/system/gui Data/system
cd /srv/jtel/shared/JTELCarrierPortal/Update
bash ./get_binaries.sh |
|
Cleaner processesA CRON job is required to clean up the directories of the portal. With redundancy, on both STORE. Since the directory is only mounted on one, but we don't know which one, the command must be executed on both. Caution: as ROOT. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Cleaner processes in /etc/cron.daily |
---|
| cat <<EOFF > /etc/cron.daily/jtel_portal_cleaner.sh
find /srv/jtel/shared/Data/clients/*/reports -type f -mtime +2 -delete
EOFF
chmod +x /etc/cron.daily/jtel_portal_cleaner.sh |
|
|
Sv translation |
---|
|
In einem Standard-Installations-Szenario wird in der Zentral-Freigabe der Rolle STORE auch eine Kopie der Software-Repositories abgelegt. Diese ist demnach von allen Maschinen des jtel Systems erreichbar. Der Zugriff auf die Software-Repositories dient verschiedenen Zwecken: - Alle Maschinen der Rolle TEL können die Telefonie-Applikationen (R5-Skripte) direkt von dieser zentralen Freigabe heraus ausführen. Alternativ können diese Komponenten der Software auch von der zentralen Freigabe lokal auf die Windows-Maschinen kopiert werden um den Netzwerkverkehr im laufenden Betrieb zu reduzieren. Dies erfordert allerdings zusätzliche Sorgfalt beim aktualisieren des Systems, da in diesem Fall nach dem Aktualisieren des Repositories die entsprechenden Verzeichnisse mit den R5-Skripten auf allen Windows-Maschinen kopiert werden müssen.
- Im Falle der Erstinstallation oder späteren Aktualisierungen, werden von hier die Datenbank-Initialisierungs- bzw. Datenbank-Aktualisierung-Skripte ausgeführt.
- Weitere Software-Komponenten die auf verschiedenen Maschinen lokal installiert werden (z.B. Konnektoren, Plugins, UDP Listener) werden von hier kopiert und aktualisiert
Installation benötigter ZusatzsoftwareHinweis: bei Redundante Systeme, dies auf BEIDE Storage Nodes ausführen. Für die Bereitstellung und Aktualisierung des jtel Software-Repositories muss zusätzliche Software installiert werden. Da diese nicht nur aus den offiziellen CentOS Paketquellen bezogen werden kann, müssen noch weitere Software-Quellen konfiguriert werden: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install additional software sources - MySQL 8.x. |
---|
| yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
|
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install additional software sources - MySQL 5.6 |
---|
| yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm |
|
Anschließend kann die benötigte Software installiert und konfiguriert werden. Die Konfiguration erfolgt unter den User jtel. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Install and configure GIT |
---|
| yum -y install git2u mysql-community-client
su jtel
cd
git config --global user.name "jtel Support"
git config --global user.email "support@jtel.de" |
|
Wenn man ein Proxy für GIT braucht: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Proxy for GIT |
---|
| git config --global http.proxy http://<proxy_server>:<port> |
|
Erstmaliges Herunterladen der jtel SoftwareHinweis: bei Redundante Systeme, dies auf den AKTIVEN Storage Nodes ausführen. Die folgenden Operationen erfolgen nicht mehr im Kontext des Benutzers root sondern müssen im Kontext des Benutzers jtel ausgeführt werden. Dafür kann man sich entweder in einer separaten SSH Sitzung als Benutzer jtel anmelden oder, wenn man bereits als Benutzer root angemeldet ist, in den Kontext des Benutzers jtel wechseln. Dies erfolgt durch folgenden Befehl: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Change user context |
---|
| su jtel
cd |
|
Nach Eingabe dieser Befehle erkennt man den Benutzerwechsel am Systemprompt, welches nun [jtel@acd-lb ~]$ lautet (Das Systemprompt setzt sich zusammen aus benutzername@hostname aktuelles Verzeichnis ) Als nächstes werden nun die beiden Software-Repositories mit der jtel Standardsoftware heruntergeladen. Dies erfolgt durch Eingabe folgender Befehle:
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Download the development repositories |
---|
| cd /home/jtel/shared
git clone https://bitbucket.org/jtelgmbh/jtel.git JTEL
git clone https://bitbucket.org/jtelgmbh/jtelcarrierportal.git JTELCarrierPortal |
|
Im Falle dass für den Kunden noch spezifische Anpassungen oder Erweiterungen programmiert wurden, muss zusätzlich das Kundenspezifische Software-Repository heruntergeladen werden. Dies erfolgt exemplarisch durch einen Befehl der folgendermaßen aufgebaut ist:
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Download a custom repository |
---|
| cd /home/jtel/shared
git clone https://bitbucket.org/jtelgmbh/cacme/software.git acme |
|
Sowohl die Ursprungs-URL als auch das Zielverzeichnis sind in diesem Fall kundenspezifisch und von Fall zu Fall verschieden. In den Heruntergeladenen Software-Repositories muss nun noch das beim Kunden zu installierende Software-Release ausgewählt werden. In diesem Fall ist es das Release 3.14: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Select the desired release |
---|
| cd /home/jtel/shared/JTELCarrierPortal
git checkout release/stable-3.18
cd /home/jtel/shared/JTEL
git checkout release/stable-3.18
cd /home/jtel/shared |
|
Als letzter Schritt werden nun noch die Verzeichnisse für die zentrale Protokollierung, den Standard-Datenimport und das zentrale Datenverzeichnis angelegt: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Prepare data directories |
---|
| cd /home/jtel/shared
mkdir -p LogFiles LogFilesCall Import/{Clients,ServiceNumbers}/{Done,In,Problems}
cp -a JTELCarrierPortal/Data .
cp -a JTEL/Data/system/gui Data/system
cd /home/jtel/shared/JTELCarrierPortal/Update
bash ./get_binaries.sh |
|
Cleaner ProzesseDamit die Verzeichnisse des Portals aufgeräumt werden, wird ein CRON Job benötigt. Bei Redundanz, auf beide STORE. Da das Verzeichnis nur auf einer gemountet ist, aber wir wissen nicht welche, muss der Befehl auf beide ausgeführt werden. Achtung: als ROOT. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Cleaner processes in /etc/cron.daily |
---|
| cat <<EOFF > /etc/cron.daily/jtel_portal_cleaner.sh
find /srv/jtel/shared/Data/clients/*/reports -type f -mtime +2 -delete
EOFF
chmod +x /etc/cron.daily/jtel_portal_cleaner.sh |
|
|
Sv translation |
---|
|
Dans un scénario d'installation standard, une copie des dépôts de logiciels est également stockée dans la partie centrale du rôle MAGASIN. Il est donc accessible à partir de toutes les machines du système jtel. L'accès aux dépôts de logiciels répond à plusieurs objectifs : - Toutes les machines du rôle TEL peut exécuter les applications de téléphonie (scripts R5) directement à partir de cette part centrale. Alternativement, ces composants du logiciel peuvent également être copiés localement depuis le partage central vers les machines Windows afin de réduire le trafic réseau pendant le fonctionnement. Toutefois, cela nécessite une attention supplémentaire lors de la mise à jour du système, car dans ce cas, après la mise à jour du référentiel, les répertoires correspondants avec les scripts R5 doivent être copiés sur toutes les machines Windows.
- En cas d'installation initiale ou de mises à jour ultérieures, les scripts d'initialisation ou de mise à jour de la base de données sont exécutés à partir d'ici.
- Les composants logiciels supplémentaires qui sont installés localement sur différentes machines (par exemple les connecteurs, les plugins, l'auditeur UDP) sont copiés et mis à jour à partir d'ici
Installation des logiciels supplémentaires nécessairesNote : pour les systèmes redondants, faites-le sur les DEUX nœuds de stockage. Des logiciels supplémentaires doivent être installés pour fournir et mettre à jour le dépôt de logiciels de jtel. Comme celui-ci ne peut pas être obtenu uniquement à partir des sources officielles du progiciel CentOS, d'autres sources logicielles doivent être configurées : Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Installer des sources logicielles supplémentaires - MySQL 8.x. |
---|
| yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
|
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Installer des sources logicielles supplémentaires - MySQL 5.6 |
---|
| yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm |
|
Le logiciel requis peut alors être installé et configuré. La configuration se fait sous l'utilisateur jtel. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Installer et configurer le GIT |
---|
| yum -y install git222 mysql-community-client su jtel cd |
|
|
Code Block |
---|
title | Aktivieren des rpmforge-extras Repositories |
---|
|
[rpmforge-extras]
...
enabled = 1 |
Anschließend kann die benötigte Software installiert und konfiguriert werden:
Code Block |
---|
language | bash |
---|
title | GIT installieren und konfigurieren |
---|
|
yum -y install git mysql-community-client
git config --global user.name "jtel Support" |
|
git config --global user.email "support@jtel.de" |
|
cp ~/.gitconfig /home/jtel
chown jtel:jtel /home/jtel/.gitconfig |
Erstmaliges Herunterladen der jtel Software
Die folgenden Operationen erfolgen nicht mehr im Kontext des Benutzers root
sondern müssen im Kontext des Benutzers jtel
ausgeführt werden. Dafür kann man sich entweder in einer separaten SSH Sitzung als Benutzer jtel
anmelden oder, wenn man bereits als Benutzer root
angemeldet ist, in den Kontext des Benutzers jtel
wechseln. Dies erfolgt durch folgenden Befehl:
Code Block |
---|
language | bash |
---|
title | Benutzerkontext wechseln |
---|
|
su jtel
cd |
Nach Eingabe dieser Befehle erkennt man den Benutzerwechsel am Systemprompt, welches nun [jtel@acd-lb ~]$
lautet (Das Systemprompt setzt sich zusammen aus benutzername@hostname aktuelles Verzeichnis
) Als nächstes werden nun die beiden Software-Repositories mit der jtel Standardsoftware heruntergeladen.
Dies erfolgt durch Eingabe folgender Befehle:
...
Si vous avez besoin d'une procuration pour le TIG : Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Proxy pour GIT |
---|
| git config --global http.proxy http://<proxy_server>:<port> |
|
Téléchargement du logiciel jtel pour la première foisNote : pour les systèmes redondants, faites-le sur les nœuds de stockage ACTIFS. Les opérations suivantes ne sont plus effectuées dans le cadre de l'utilisateur root mais doit être effectuée dans le cadre de l'utilisateur jtel. Pour ce faire, vous pouvez soit vous connecter en tant qu'utilisateur jtel dans une session SSH séparée, soit, si vous êtes déjà connecté en tant qu'utilisateur root, vous pouvez passer au contexte de l'utilisateur jtel. Cela se fait avec la commande suivante : | Herunterladen der Standard-Repositories |
cd /home/jtel/shared
git clone https://git.jtel.de/scm/jtel/distribute-2.git JTEL
git clone https://git.jtel.de/scm/jtel/distribute-1.git JTELCarrierPortal |
Alternativ kann die Software auch von den Entwicklungs-Repositories inklusive Quellcode bezogen werden. Hier ist allerdings die Wahrscheinlichkeit sehr hoch, dass die beiliegenden Binärdateien nicht aktuell sind. Installiert man von den Entwickler-Repositories, empfiehlt es sich die Binärdateien ad-hoc herzustellen. Das Herunterladen aus den Entwicklungs-Repositories erfolgt mit folgenden Befehlen:
...
Changer context utilisateur |
| su jtel cd |
|
Après avoir entré ces commandes, vous pouvez reconnaître le changement d'utilisateur à l'invite du système, qui est maintenant [jtel@acd-lb ~]$ (l'invite du système se compose du répertoire actuel de username@hostname) L'étape suivante consiste à télécharger les deux dépôts de logiciels avec le logiciel standard de jtel. Cela se fait en entrant les commandes suivantes :
| Herunterladen der Entwicklungs-RepositoriesTélécharger les dépôts de développement |
| cd / |
| home
git clone https://git.jtel.de/scm/jtel/jtel.gitJTEL
git.jtel.de/scm/jtel/carrierportal_bitbucket.org/jtelgmbh/jtel.git |
| JTELCarrierPortal |
Hinweis - wenn man ein Proxy für GIT braucht:
Code Block |
---|
language | bash |
---|
title | Proxy für GIT |
---|
|
sudoconfig --global http.proxy http://<proxy_server>:<port> |
Note |
---|
|
Beide Befehle erfordern die Kenntnis gültiger Zugangsberechtigungen zum zentralen jtel Software-Server. |
Im Falle dass für den Kunden noch spezifische Anpassungen oder Erweiterungen programmiert wurden, muss zusätzlich das Kundenspezifische Software-Repository heruntergeladen werden. Dies erfolgt exemplarisch durch einen Befehl der folgendermaßen aufgebaut ist:
clone https://bitbucket.org/jtelgmbh/jtelcarrierportal.git JTELCarrierPortal |
|
Dans le cas où des adaptations ou des extensions spécifiques ont été programmées pour le client, le dépôt de logiciels spécifiques au client doit également être téléchargé. Ceci est fait de manière exemplaire par une commande qui est structurée comme suit :
| Herunterladen eines kundenspezifischen RepositoriesTélécharger un dépôt personnalisé |
| cd / |
| home
gitjtel.descmjtelgmbh/cacme/software.git acme |
|
|
Sowohl die Ursprungs-URL als auch das Zielverzeichnis sind in diesem Fall kundenspezifisch und von Fall zu Fall verschieden.
...
Dans ce cas, l'URL source et le répertoire cible sont tous deux spécifiques au client et diffèrent d'un cas à l'autre. Dans les dépôts de logiciels téléchargés, il faut maintenant sélectionner la version du logiciel à installer chez le client. Dans ce cas, il s'agit de la release 3.14 : | Gewünschtes Release auswählenSélectionnez la release souhaitée |
| cd / |
| homesrv/jtel/shared/JTELCarrierPortal |
|
git checkout release/stable-3. |
| 10
home
git checkout release/stable-3. |
| 10
home |
...
La dernière étape consiste à créer les répertoires pour l'enregistrement central, l'importation de données standard et le répertoire central de données : | Datenverzeichnisse vorbereitenPréparer des répertoires de données |
| cd / |
| home
mkdir -p LogFiles LogFilesCall Import/{Clients,ServiceNumbers}/{Done,In,Problems} |
|
cp -a JTELCarrierPortal/Data . |
|
cp -a JTEL/Data/system/gui Data/system |
|
|
Alte Installationen mit Windows Share
...
cd /srv/jtel/shared/JTELCarrierPortal/Update bash ./get_binaries.sh |
|
Des processus plus propresUn travail de CRON est nécessaire pour nettoyer les répertoires du portail. Avec redondance, sur les deux MAGASINS. Comme le répertoire n'est monté que sur un seul, mais que nous ne savons pas lequel, la commande doit être exécutée sur les deux. Attention : en tant que ROOT. | SMB Share v1 auf Windows ermöglichen | Des processus plus propres dans /etc/cron.daily |
| cat <<EOFF > /etc/cron.daily/jtel_portal_cleaner.sh find /srv/jtel/shared/Data/clients/*/reports -type f -mtime +2 -delete EOFF chmod +x /etc/cron.daily/jtel_portal_cleaner.sh |
| Set-SmbServerConfiguration -EnableSMB1Protocol $true
|