JoergFiedler.freebsd-build-server
Servidor de Compilación FreeBSD
Crea un servidor FreeBSD que ofrece una instalación de 'poudriere' lista para usar. Consulta el Manual de FreeBSD para más información.
Quería tener un servidor de compilación que no tuviera que mantener en funcionamiento todo el tiempo. Para lograr esto, el repositorio de paquetes y la opción de compilación para todos los paquetes se sincronizan con S3. Esto me permite destruir el servidor de compilación después de que los paquetes han sido compilados y sincronizados.
Antes de comenzar, puedes proporcionar tus propios archivos configurando la ruta de la variable correspondiente de Ansible.
make.conf
, (poudriere_build_options_file
)ports-list
, (poudriere_port_list_file
)poudriere.key
, (poudriere_key_file
)
Puedes hacerlo proporcionando tu propia versión del archivo y configurando la ruta a él a través de la variable correspondiente de Ansible.
Con todo esto en mente, el flujo de trabajo típico es el siguiente:
- Crear un nuevo servidor (hay un archivo Vagrant para esto)
- Aplicar este rol de Ansible
- Iniciar sesión
- Ejecutar:
sudo build-ports
- Ejecutar:
sudo upload-to-s3
- Cerrar sesión
- Destruir el servidor
Así de fácil.
Requisitos
Este rol está destinado a utilizarse con una instalación fresca de FreeBSD con algunas modificaciones menores. Hay una Vagrant Box con proveedores para VirtualBox y EC2 que puedes usar. Creé este proyecto Vagrant para crear máquinas de VirtualBox y EC2.
Variables del Rol
aws_default_region
Región S3 a utilizar. Por defecto: ''
.
aws_access_key_id
Clave de acceso S3. Por defecto: ''
.
aws_secret_access_key
Clave secreta S3. Por defecto: ''
.
s3_bucket_name
El bucket a utilizar para almacenar los paquetes y opciones de compilación. Por defecto: ''
.
s3_upload_path
La ruta dentro del bucket S3 donde colocar la carpeta packages
y build-options
. Por defecto: '/public/FreeBSD'
.
freebsd_mirror_server
El servidor espejo de FreeBSD utilizado para configurar los jails. Por defecto: 'ftp://ftp.freebsd.org'
.
poudriere_ssl_prefix
La ruta donde se debe guardar la clave de firma de los paquetes. Por defecto: '/usr/local/etc/ssl'
.
poudriere_key_file
La clave privada utilizada para firmar los paquetes. Cambia esto para usar tu propia clave. Por defecto: 'poudriere.key.default'
.
poudriere_ports_list_file
La lista de puertos a compilar. Por defecto: 'ports-list.default'
.
poudriere_ports_branch_name
El nombre de la rama de puertos que se debe usar para checkout a través de svn y compilar. Por defecto: 'head'
.
poudriere_build_options_file
Opciones de compilación make.conf
utilizadas para compilar los puertos. Por defecto: 'make.conf.default'
.
poudriere_jails
Los jails que deben ser creados.
poudriere_jails:
- { jail_name: 'freebsd-11_2_x64', version: '11.2-RELEASE' }
Por defecto: ''
.
poudriere_zpool
El nombre del zpool que será utilizado por poudriere
. Si el pool no existe, se creará utilizando los dispositivos especificados en poudriere_zpool_devices
. Por defecto: 'tank'.
poudriere_zpool_devices
Los dispositivos que deben ser utilizados para crear el zpool de poudriere, por ejemplo, /dev/nvd1
. Por defecto: ''.
Dependencias
Ninguna.
Ejemplo de 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 }
Licencia
BSD
Información del Autor
Si te gusta o tienes ideas para mejorar este proyecto, por favor abre un problema en Github. Gracias.
ansible-galaxy install JoergFiedler.freebsd-build-server