JoergFiedler.freebsd-build-server
FreeBSD Build Server
Erstellt einen FreeBSD-Server, der eine einsatzbereite 'poudriere'-Installation bereitstellt. Weitere Informationen finden Sie im FreeBSD-Handbuch.
Ich wollte einen Build-Server haben, den ich nicht ständig laufen lassen muss. Um dies zu erreichen, werden das Paket-Repository und die Build-Optionen für alle Pakete mit S3 synchronisiert. Dadurch kann ich den Build-Server nach dem Erstellen und Synchronisieren der Pakete zerstören.
Bevor Sie beginnen, können Sie Ihre eigenen Dateien bereitstellen, indem Sie den Pfad zur entsprechenden Ansible-Variablen festlegen.
make.conf, (poudriere_build_options_file)ports-list, (poudriere_port_list_file)poudriere.key, (poudriere_key_file)
Sie können dies tun, indem Sie Ihre eigene Version der Datei bereitstellen und den Pfad dazu über die entsprechende Ansible-Variable festlegen.
Mit all dem im Hinterkopf sieht der typische Arbeitsablauf so aus:
- Einen neuen Server starten (es gibt eine Vagrant-Datei dafür)
- Diese Ansible-Rolle anwenden
- Einloggen
- Ausführen:
sudo build-ports - Ausführen:
sudo upload-to-s3 - Abmelden
- Den Server zerstören
So einfach wie Kuchen.
Anforderungen
Diese Rolle ist für die Verwendung mit einer frischen FreeBSD-Installation mit einigen kleineren Änderungen gedacht. Es gibt eine Vagrant-Box mit Anbietern für VirtualBox und EC2, die Sie nutzen können. Ich habe dieses Vagrant-Projekt erstellt, um VirtualBox- und EC2-Maschinen zu erstellen.
Rollenvariablen
aws_default_region
S3-Region, die verwendet werden soll. Standard: ''.
aws_access_key_id
S3-Zugriffsschlüssel. Standard: ''.
aws_secret_access_key
S3-Geheimschlüssel. Standard: ''.
s3_bucket_name
Der Bucket, der zum Speichern der Pakete und Build-Optionen verwendet wird. Standard: ''.
s3_upload_path
Der Pfad im S3-Bucket, wo die Ordner packages und build-options abgelegt werden sollen. Standard: '/public/FreeBSD'.
freebsd_mirror_server
Der FreeBSD-Mirror-Server, der zum Einrichten der Jails verwendet wird. Standard: 'ftp://ftp.freebsd.org'.
poudriere_ssl_prefix
Der Pfad, wo der Schlüssel zum Signieren der Pakete gespeichert werden soll. Standard: '/usr/local/etc/ssl'.
poudriere_key_file
Der private Schlüssel, der zum Signieren der Pakete verwendet wird. Bitte ändern Sie dies, um Ihren eigenen Schlüssel zu verwenden. Standard: 'poudriere.key.default'.
poudriere_ports_list_file
Die Liste der Ports, die gebaut werden sollen. Standard: 'ports-list.default'.
poudriere_ports_branch_name
Der Name des Ports-Branch, der über svn ausgecheckt und gebaut werden soll. Standard: 'head'.
poudriere_build_options_file
Build-Optionen make.conf, die verwendet werden, um die Ports zu bauen. Standard: 'make.conf.default'.
poudriere_jails
Die Jails, die erstellt werden sollen.
poudriere_jails:
- { jail_name: 'freebsd-11_2_x64', version: '11.2-RELEASE' }
Standard: ''.
poudriere_zpool
Der Name des Zpools, der von poudriere verwendet wird. Wenn der Pool nicht existiert, wird er mit den in poudriere_zpool_devices angegebenen Geräten erstellt. Standard: 'tank'.
poudriere_zpool_devices
Die Geräte, die zur Erstellung des Zpools für poudriere verwendet werden sollen, z. B. /dev/nvd1. Standard: ''.
Abhängigkeiten
Keine.
Beispiel-Playbook
---
- hosts: default
sudo: true
vars:
aws_access_key_id: '{{ lookup("env","AWS_ACCESS_KEY_ID") }}'
aws_secret_access_key: '{{ lookup("env","AWS_SECRET_ACCESS_KEY") }}'
aws_default_region: '{{ lookup("env","AWS_DEFAULT_REGION") }}'
s3_bucket_name: 'repo.bucket.name'
poudriere_ports_list_file: './files/ports.list'
poudriere_key_file: './files/poudriere.key'
poudriere_build_options_file: './files/make.conf'
poudriere_jails:
- { jail_name: 'freebsd-11_2_x64', version: '11.2-RELEASE' }
roles:
- { role: JoergFiedler.freebsd-build-server }
Lizenz
BSD
Autoreninformationen
Wenn Ihnen das Projekt gefällt oder Sie Ideen zur Verbesserung haben, öffnen Sie bitte ein Issue auf Github. Danke.
ansible-galaxy install JoergFiedler.freebsd-build-server