Poudriere in der Praxis

Mardor

Well-Known Member
Hallo,

ich würde gerne mal euer "best practise" mit poudriere erfahren:

- Wenn mehrere unterschiedliche Jails (also auch unterschiedliche server (apache, sftp, nginx etc) existieren, würdet Ihr dann für jeden Jail dann eine "poudriere Instanz" pro Jail erstellen oder würdet Ihr ein poudriere erstellen und einfach alle existieren Pakete aller Jail auf dieser einen "poudriere" Instanz erstellen ?

- Wie aktualisiert Ihr die Ports (manuell oder über cronjobs) ?

- Wenn manuell, wie lasst Ihr euch über Neuigkeiten informieren ?

Gruß Mardor
 
- Wenn mehrere unterschiedliche Jails (also auch unterschiedliche server (apache, sftp, nginx etc) existieren, würdet Ihr dann für jeden Jail dann eine "poudriere Instanz" pro Jail erstellen oder würdet Ihr ein poudriere erstellen und einfach alle existieren Pakete aller Jail auf dieser einen "poudriere" Instanz erstellen ?
Ich erstelle mit Poudriere pro Quartals-Branch ein neues Repo. Aktuell baue ich z.B. "2018Q2" und "head". Was ich baue, verwende ich auf allen Servern und in allen Jails. Ich möchte hier Konsistenz haben.
- Wie aktualisiert Ihr die Ports (manuell oder über cronjobs) ?
Via Cronjob:
Code:
# ----
# poudriere ports update:
# ----
20 2 * * * /usr/local/bin/poudriere ports -u -p 2018Q2
40 2 * * * /usr/local/bin/poudriere ports -u -p head
Ist der Host auf dem "poudriere" läuft auf einem aktuelleren Patchlevel, spiele ich für "poudriere" das Update natürlich auch ein:
Code:
poudriere jail -u -j 111_x64
Code:
# poudriere jail -l
JAILNAME VERSION          ARCH  METHOD TIMESTAMP           PATH
111_x64  11.1-RELEASE-p11 amd64 ftp    2018-07-19 14:57:02 /data/poudriere/jails/111_x64
112_x64  11.2-RELEASE     amd64 ftp    2018-07-19 14:58:50 /data/poudriere/jails/112_x64
- Wenn manuell, wie lasst Ihr euch über Neuigkeiten informieren ?
Neuigkeiten gibt es immer nur bei einem Branch Update z.B. von "2018Q1" auf "2018Q2". Da muss man dann die Optionen der Ports neu setzen oder besser gesagt prüfen. Das ist aber kein grosses Problem:
Code:
poudriere options -n -c -p 2018Q2 -z home www/apache24
Die neuen Pakete tauchen bei mir automatisch im Repo auf. Dafür habe ich das Repo via Nginx verfügbar gemacht. Auf den Servern sehe ich Update, wenn diese verfügbar sind, durch einen Nagios Check. Ich starte dann zuerst auf einer Testmaschine das Update. Einen Tag später dann auch auf allen anderen Servern. Dies über ein Ansible Skript. Da in den Quartal Branches nur Securityupdates gemacht werden, ist das seit Jahren eigentlich kein Thema. Hatte noch nie Probleme wegen einem Update.
 
Hallo Foxit,

danke für deine Antwort. Ich habe noch nicht alles verstanden deshalb würde ich hier gerne nochmal nachhaken.

Ich erstelle mit Poudriere pro Quartals-Branch ein neues Repo.
Handelt es sich hier um einen FreeBSD eigenen Quartals-Branch ? Gibt er hier irgendwo gute Informationen hierzu, die Verständlich aufbereitet sind ? Ich kenne Quartals-Branches bei FreeBSD nocht nicht.

Aktuell baue ich z.B. "2018Q2" und "head"
Entschuldige die dumme Frage, aber wieso baust du zwei Repos ?

Via Cronjob:

Code:
# ----
# poudriere ports update:
# ----
20 2 * * * /usr/local/bin/poudriere ports -u -p 2018Q2
40 2 * * * /usr/local/bin/poudriere ports -u -p head
Was ist denn, wenn unter /usr/ports/UPDATING ein manueller Eingriff erforderlich ist oder deckst du den Fall über die Testmaschine ab ?

Baust du die Packete auf der gleichen Kiste auf der auch die Jails laufen ? Ich überlege mir eben wie ich das machen soll. Ich habe aber nur eine Hetzner Kiste

Gruß Mardor
 
Handelt es sich hier um einen FreeBSD eigenen Quartals-Branch ?
Ja genau. Das wurde vor Jahren mal eingeführt. Hier die Seite [1]. Unter "head" gibt es laufend neue Pakete oder auch Updates. Der Quartals Branch soll etwas Stabilität in die Sache bringen. Vier mal im Jahr wird "head" zu einem neuen Quartals Branch. Dort gibt es dann nur noch Sicherheitsupdates.
Entschuldige die dumme Frage, aber wieso baust du zwei Repos ?
Ich habe z.B. eine Jail auf der ich die neusten Dinge testen will, weil ich dem Entwickler Bug-Reports senden möchte. Natürlich könnte ich die Ports selber nach "/usr/ports" auschecken und bauen aber wofür gibt es Poudriere?
Was ist denn, wenn unter /usr/ports/UPDATING ein manueller Eingriff erforderlich ist oder deckst du den Fall über die Testmaschine ab ?
Dies hat mich, seit dem ich Poudriere verwende nie mehr interessiert. Poudriere baut mir meine Abhänigkeiten automatisch neu.
Baust du die Packete auf der gleichen Kiste auf der auch die Jails laufen ?
In der Firma nicht. Dort habe ich eine VM mit 16 Cores und 24GB RAM auf SSD. Da geht was. Privat habe ich aber alles auf einem Host. Wenn es auf dem gleichen Host ist, kannst du einfach das Verzeichnis von Poudriere in die Jail mounten. z.B: /etc/jail.conf
Code:
mount += "/poudriere/data/packages /data/jail/XXX/mnt/packages nullfs ro,late 0 0";
In der Jail dann unter /usr/local/etc/pkg/repos/XXX.conf
Code:
2018Q2: {
  url: "file:///mnt/packages/112_x64-2018Q2-home",
  enabled: yes
}
FreeBSD: {
  enabled: no
}
Die Pfade muss man natürlich anpassen.

[1] https://svnweb.freebsd.org/ports/branches/
 
Hallo foxit,

vielen Dank für deine ausführliche Erklärung. Ich hätte da noch ein paar Fragen wenn das ok ist:
Vier mal im Jahr wird "head" zu einem neuen Quartals Branch. Dort gibt es dann nur noch Sicherheitsupdates.
- Was geschieht denn danach. D.h. wenn man es eben zeitlich nicht schafft zum Quartalsende auf den neuen Branch umzustellen ? Endet der Quarter Branch und es gibt dann für diesen Branch keine Sicherheitsupdates mehr ?

- Löschst du dann die alten Branches ?

- Ich habe gesehen, dass es mittlerweile Q3 auf dem Server gibt, gibt es einen Grund warum du aktuell Q2 benutzt ?

- Wie greifst du denn denn beim erstellen des poudriere jail auf den entsprechenden Branch zu ? Ich gebe ja im Normalfall ein "-v 11.1-RELEASE" ?

Gruß Mardor
 
Was geschieht denn danach. D.h. wenn man es eben zeitlich nicht schafft zum Quartalsende auf den neuen Branch umzustellen ? Endet der Quarter Branch und es gibt dann für diesen Branch keine Sicherheitsupdates mehr ?
Genau. Der Branch bleibt bestehen und dein Repo. bleibt auf dem Stand X.
Löschst du dann die alten Branches ?
Ja genau. Ich räume immer alles auf. Unter /poudriere/data/ gibt es den Ordner "packages". Löscht man diesen, baut Poudriere komplett alles neu.
gibt es einen Grund warum du aktuell Q2 benutzt ?
Nein ich bin einfach noch nicht dazu gekommen, Ferien etc.
Wie greifst du denn denn beim erstellen des poudriere jail auf den entsprechenden Branch zu ?
Ich baue mit diesem Kommando:
Code:
/usr/local/bin/poudriere bulk -f /usr/local/etc/poudriere.d/2018Q2-home -j 112_x64 -p 2018Q2 -z home
Es gibt auf unserem Wiki noch einen Artikel über Poudriere [1]. Dieser ist aber nicht mehr ganz aktuell.

[1] https://wiki.bsdforen.de/kategorie:howto:poudriere
 
Hallo foxit,

ich bin gerade dabei verschiedenste Sachen zu testen. Ich hoffe ich nerve nicht zu viel mit meinen Fragen.

Beim Erstellen des Jail erhalte ich folgende Meldung:

Code:
poudriere jail -c -j 2018Q3 -v 2018Q3 -a amd64                                                 
[00:00:00] Creating 2018Q3 fs at /usr/local/poudriere/jails/2018Q3... done
[00:00:00] Fetching MANIFEST for FreeBSD 2018Q3 amd64
fetch: https://download.FreeBSD.org/ftp/releases/amd64/amd64/2018Q3/MANIFEST: Not Found
fetch: https://download.FreeBSD.org/ftp/releases/amd64/amd64/2018Q3/MANIFEST: Not Found
[00:00:01] Error: Failed to fetch from https://download.FreeBSD.org/ftp/releases/amd64/amd64/2018Q3/MANIFEST
[00:00:01] Error while creating jail, cleaning up.
[00:00:01] Removing 2018Q3 jail... done
[00:00:01] Cleaning 2018Q3 data... done
Laut einer Webseite kann als Source "https://svn.freebsd.org/ports/branches/2018Q3/" genutzt werden. Ist so eine Source (mit svn) sinnvoll ?

Genau. Der Branch bleibt bestehen und dein Repo. bleibt auf dem Stand X.
Das bedeutet in der Praxis, dass du ohne Updates bei 2018Q2 bist ?

Irgendwie machen mir auch noch die Pfade Probleme, mal ist es in einer Anleitung /usr/local/poudriere mal /poudiere. Wie machst du das ?

Gruß Mardor
 
Beim Erstellen des Jail erhalte ich folgende Meldung:
"2018Q3" ist für die Option "ports" nicht "jail". Versuch das hier:
Code:
poudriere jail -c -j 112_x64 -v 11.2-RELEASE -a amd64
Ist so eine Source (mit svn) sinnvoll ?
Das mache dies nur über SVN und zwar so:
Code:
poudriere ports -c -B branches/2018Q3 -m svn+https -p 2018Q3
Prüfen kannst du jeweils mit:
Code:
poudriere ports -l
poudriere jail -l
Das bedeutet in der Praxis, dass du ohne Updates bei 2018Q2 bist ?
Richtig aber das ist i.d.R. ein Zeitraum von max. 1 Woche.
Irgendwie machen mir auch noch die Pfade Probleme
Halte dich an den Pfad, der in deiner /usr/local/etc/poudriere.conf steht (BASEFS und ZROOTFS sollten gleich sein).
 
Zurück
Oben