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