Focker underwent a not-so-slow overhaul in the period of June-August 2021 which was concluded by the release of version 2.0. The aim was to make the code more structured, have better abstractions/more reusability and to lay foundations for future development. Consequently, three major objectives have been achieved:
- API – new abstractions constitute a framework which makes Focker as easy to use in custom code as in the command line,Configurability – at the same time the way Focker’s configuration is passed around has been remade, allowing to pass any and all Focker parameters either on the command line OR via environment variables OR by system/user-specific configuration files – /etc/focker.conf, /usr/local/etc/focker.conf and ~/focker.conf,
- Plugins system – the native Focker command modules (image, jail, compose) have become plugins themselves and the rule now is to implement every new block of functionality as a plugin on top of the slim and robust core.
Two important mechanisms have changed:
- Facets – facets and dictionary-based steps are innovations that vastly improve the image recipe writing experience,
- Bootstrap – bootstrap is now more granular and gives user more control.
Focker 2.0 introduced as well many smaller Improvements:
- Taking into account the exec.fib setting when running focker jail exec,
- Creation of base images using different versions of FreeBSD, not only the current one,
- Sorting of listing results,
- Volume use detection when pruning,
- Roundtrip jail.conf parser,
- Automatic creation of mount destinations if they don’t exist.
Future development will focus on providing the “Infrastructure as Code” functionality well-known from the Kubernetes (K8s) ecosystem and highly appreciated by the industry.
Please visit https://github.com/sadaszewski/focker to learn all the details and read the documentation.