Commit 2f1d4191 authored by mainja67707's avatar mainja67707

Extend OpenBuildService Chapter

parent 0b3da54d
......@@ -64,7 +64,7 @@ citestyle=alphabetic
Softwareupdates für die Nutzer, hier vorwiegend Studierende,
bereitzustellen und nichtsdestotrotz eine grundsätzliche Stabilität und
Sicherheit zu gewährleisten.\\
Bei der Wahl des Betriebssystems werden deshalb meist LTS - Long Term
Bei der Wahl des Betriebssystems werden deshalb meist LTS- Long Term
Support Versionen eingesetzt, die über einen langen Zeitraum auf
Stabilität getestet wurden und sich insbesondere für Serversysteme
eignen.\\
......@@ -119,7 +119,7 @@ citestyle=alphabetic
als Distibutionsspezifischen Konfigurationen bezeichnet). Dies ist
z.b.\ bei variierenden Paketnamen ungemein hilfreich.\\
Die Dateiendung ist, soweit nicht genauer spezifiziert, eine
\textasterixcentered{}.sls.
\text{*}.sls.
Die drei verwendeten Verzeichnisse heißen standardmäßig salt,
pillar, formulas.
\subsection{salt}
......@@ -158,7 +158,7 @@ citestyle=alphabetic
Studio stand.
Es unterstützt die Erstellung diverser image-Typen.\\
Die relevanten Dateien bestehen aus: einer Konfigurationsdatei
(.xml), einem (optionalen) Quellarchiv(p.gz??), sowie optionalen
(.xml), einem (optionalen) Quellarchiv (p.gz??), sowie optionalen
Shellskripten.\\
Das Bauen von kiwi-images lässt sich in drei Phasen aufteilen: Das
Generieren des Verzeichnisbaums und des images.
......@@ -208,10 +208,10 @@ citestyle=alphabetic
Dieser lässt sich über ein change-root-Tool wir chroot beliebig
navigieren und erkunden.
Bis auf das kiwi-Verzeichnis, welches eine Kopie der Konfiguration,
sowie wichtige Bauelemente beinhaltet(Details??), spiegelt das
sowie wichtige Bauelemente beinhaltet (Details??), spiegelt das
Verzeichnis das spätere Innenleben des images wieder.\\
Zum Ende dieses Erstellungsprozesses wird noch das config.sh-Skript,
sofern vorhanden, ausgeführt. Dieses dient dem Zweck(???).\\
sofern vorhanden, ausgeführt. Dieses dient dem Zweck (???).\\
Achtung: Manuelle Änderungen innerhalb des Verzeichnis werden bei
der nächsten Ausführung des Befehls überschrieben und können im
zweiten Schritt zu schwer verfolgbaren Fehlern führen.
......@@ -225,24 +225,79 @@ citestyle=alphabetic
generiertwerden.
Möglich sind:\\
USB-Live-Images, PXEBoot, Amazon EC2, Docker, KVM/Qemu, VirtualBox,
VMWare, Vagrant(???)\\
VMWare, Vagrant (???)\\
\section{OpenBuildService}
Der OpenBuildService ist ein OpenSource-Projekt, welches von SUSE
(erstellt(wann)??).
Es ermöglicht Paketieren das automatische Bauen von Paketen oder
images und hat einen Fokus auf Continuos Integration.
\subsection{Paketieren}
Das Prinzip ist hierbei einfach, statt seine erstellten Pakete
selbst lokal zu bauen, übernimmt diese Aufgabe der
OpenBuildService.
Der OpenBuildService ist ein OpenSource-Projekt, welches von
SUSE-Entwicklern erstellt und seitdem aktiv gemaintaint wird.
Es ermöglicht Paketierern das automatische Bauen von Paketen
oder images und hat einen Fokus auf Continuos Integration.\\
Auch wenn der größte Fokus auf SUSE-Produkten liegt, können auch
andere Linux-Distributionen wie Debian oder Fedora hier Pakete
und images für ihre Distribution bauen.
Jeder Nutzer erhält ein mit seinem Account verknüpftes
Home-Projekt, in dem er zunächst
\textquotedblleft{}experimentieren\textquotedblright{} (neue
Pakete anlegen) kann.
Weiterhin kann der Nutzer Zugriff auf Nicht-Home-Projekte
anfragen (beispielsweise als Paketmaintainer) oder ein eigenes,
weiteres Projekt beantragen.
\subsubsection{Pakete auf dem OBS}
Paketierer haben beim erstellen von Paketen zwei
grundsätzliche Probleme:
\begin{enumerate}
\item muss das Paket für die Distribution/-en gebaut
werden, was auf dem lokalen Rechner je nach Leistung
ein wenig dauern kann.
\item müssen eventuelle Abhängigkeiten zu anderen
Paketen stets aktuell gehalten werden (das heißt,
der Paketautor muss sich immer alle aktuellen Pakete
herunterladen und sein Paket gegen diese bauen).
\end{enumerate}
Diesen beiden Problemen möchte der OpenBuildService
vorbeugen.\\
Das Prinzip ist hierbei einfach, statt seine erstellten
Pakete selbst lokal zu bauen, übernimmt diese Aufgabe der
OpenBuildService. Diesem stehen hierfür verschiedene Worker
zur Verfügung, die die Aufträge nach einer Warteschlange
abarbeiten.\\
Sollten sich innerhalb des Paketes oder einer seiner
Dependencies etwas ändern, so wird das Paket automatisch neu
gebaut.
Abhängigkeiten etwas ändern, so wird dies vom
OpenBuildService automatisch registriert und das Paket zum
erneuten Bauen eingereiht.
\subsubsection{osc}
osc ist das Kommandozeilentool, um mit dem OpenBuildService
zu interagieren. Zwar gibt es auch ein Webinterface, jedoch
ist das osc-tool meiner Erfahrung nach trotz Einlernungszeit
binnen kürzester Zeit effektiver und einfacher zu
handhaben.\\
Eingestellt ist das Tool auf build.opensuse.org, wobei auch
andere, selbstgehostete Versionen eingestellt werden können.
\subsection{rpmlint}
rpmlint überprüft bauende Pakete auf bekannte Schwachstellen und
Probleme.
Der OpenBuildService verwendet eine speziell konfigurierte
Version des rpmlint-tools.
Dieses überprüft bauende Pakete auf bekannte Schwachstellen
und Probleme.
Neben normalen Problemen wie:
\begin{itemize}
\item Fehlende Angaben wie Author
\item Ungültige oder unbekannte Lizenz
\item Ungültigen oder fehlenden Definitionen in der
Konfigurationsdatei
\end{itemize}
weden insbesondere potentielle Sicherheitsrisiken
herausgefiltert. Dazu zählen beispielsweise:
\begin{itemize}
\item modifizierte oder neue polkit-Regeln
\item setuid-binaries
\item binaries mit speziellen Capabilities
\end{itemize}
Falls diese kritisch sein sollten, wird hierdurch der
Buildvorgang unterbrochen.
Um das Paket nun doch noch erfolgreich nach Factory zu
bringen, muss nun ein manueller Audit des Paketes durch ein
Mitglied der proaktiven Seite des security-teams durchgeführt
werden. Dieser kann bei Bedarf die Änderungen auf ein
Whitelist setzen und hierdurch das Bauen ermöglichen.
\subsection{Images auf dem OBS}
Seit der Einstellung des SUSE Studio-Projekts werden images
über den OpenBuildService erstellt.
......@@ -298,11 +353,11 @@ citestyle=alphabetic
abgesichert werden soll, wurde der TFTP-Server so konfiguriert, dass
die Daten alle unter /opt/ abgelegt werden können. \\
Nachdem die oben genannten Pakete installiert wurden, mussten die
beiden Dateien pxelinux.0 und menu.c32 aus \/usr\/share\/syslinux\/
nach \/opt\/tftpboot\/ kopiert werden.
Weil im DHCP-Server der Eintrag fuer \/pxelinux.0 bei allen Hosts
beiden Dateien pxelinux.0 und menu.c32 aus /usr/share/syslinux/
nach /opt/tftpboot/ kopiert werden.
Weil im DHCP-Server der Eintrag für /pxelinux.0 bei allen Hosts
zum Booten steht, wurde noch ein Symlink von
\/opt\/tftpboot\/pxelinux.0 nach \/pxelinux.0 generiert.
/opt/tftpboot/pxelinux.0 nach /pxelinux.0 generiert.
Damit nicht nur root die Dateien unter tftpboot lesen kann, mussten
die Benutzerrechte rekursiv auf nobody:nobody mit 755 angepasst
werden.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment