Tutorial Speakers

Advanced container management with libiocage
Stefan Grönke

Iocage is a FreeBSD jail manager based on ZFS that heavily uses operating system features to define and maintain userland compartments. Each compartment can have constrained access to filesystem, network and system resources. The Python 3 library and CLI tool libiocage was recently introduced on BSDCan2018.

After a recap of the development virtues and most important features of libiocage, this tutorial will dive directly into programatic control of iocage using the Python module. We will explore iocage for task automation, learn how build daemonized services and develop our own ephemeral jail service. Although this talk is mainly held in Python 3 and English we will also interface with other languages by scripting custom data interfaces.

This tutorial is inclusive for any development or system administration skill level: Learning materials in form of shell access to a staging environment, that will include working samples of the code developed during this session, will give a global context and invite for hands-on hacking – bring your own dotfiles.

Speaker biography:
Stefan Grönke loves free software (occasionally) and the process of making it. After
working as a software engineer for more than a decade, he now focusses on offensive
security while using his enthusiasm to work on libiocage and other projects.

Managing BSD Systems with Ansible
Benedict Reuschling



Managing a complex system landscape with various operating systems, applications, versions, patch-levels, etc. is a challenging task for every system administrator. Ansible is a system to manage this complexity by abstracting away the specific parts and let’s administrators focus on defining the tasks that should be executed on the remote machine. Using SSH to securely transport these changes and then translating them to OS-specific commands in an idempotent manner, Ansible is flexible and offers a powerful, YAML-based syntax for bigger deployments called Playbooks. Modules in Ansible provide the functionality to make changes for all kinds of applications and use cases on the remote systems. We will look at how to use them to make even complex changes easy and repeatable, without worrying about applying these changes multiple times.

Tutorial Content

In my tutorial, I will focus on how to get started with Ansible as a beginner and what specifics are necessary to set it up for BSD systems. We will start with simple one-liners and then start writing our first playbooks.

Updated Content

Since the last time I held this tutorial at EuroBSDcon 2017, I’ve added the following new and updated parts to reflect the current Ansible system:

Ansible Vault (storing secrets and provide them as variables to Playbooks)
Lookups (using external sources like files or databases as providers for variables)
Handlers (execute certain actions only when a task actually changed the target system)
Conditional Execution (run tasks only when certain conditions are met)
Strategies (different ways to execute the tasks in a playbook)


Sysadmins who want to learn Ansible to automatically manage their systems and software in a predictable and consistent way. Basic knowledge of the Unix commandline and OpenSSH usage is a requirement for this tutorial.

Speaker biography:
Joining the FreeBSD Project in 2009, Benedict has been a FreeBSD user many years before that. After receiving his full documentation commit bit in 2010, he actively began mentoring other people to become FreeBSD committers over the years. He joined the FreeBSD Foundation in 2015, where he is currently serving as vice-president. Benedict writes articles for the FreeBSD Journal about various BSD topics. He has a Master of Science degree in Computer Science and is teaching a UNIX for software developers class at the University of Applied Sciences, Darmstadt, Germany. His day job involves managing the Big Data Cluster at the computer science department. Together with Allan Jude, he is hosting the weekly BSD-focused podcast BSDnow.tv.

Ports and Poudriere
Niclas Zeising

This tutorial will walk through the basics of the FreeBSD ports tree, and how to create and maintain a port. We will also look at how to set up and use the ports testing tool Poudriere to test our ports and create packages for installation.

Contents at a Glance

We will create ports out of some example software and walk through the steps and files needed to make it build and install within the Ports framework. We will look at how to set up and use Poudriere to test and verify our port, as well as creating a package of it for installation.


Ports are the third party software system, or packaging system, used by FreeBSD, and the ports tree is the basis from which binary packages are created. Porting new software or maintaining existing ports is a great way to contribute to FreeBSD and a great way to get more involved in the community and the project. It is also a way to create easy to distribute packages for company internal software on your FreeBSD systems.

Poudriere is the tool used to build the official FreeBSD packages (for installation with pkg) as well as a tool to test the build and packaging of a port.


This tutorial is aimed at anyone who want to learn the basics about FreeBSD ports system, and how to create and maintain a port. It is also aimed at anyone who want to use poudriere to test ports, and to build their own packages for distribution and installation. This can be used to create and distribute packages of internal tools at your work, or to help out with ports and packages in FreeBSD.

No previous knowledge of the Ports system or programming is needed, but some familiarity with FreeBSD and the command line is expected, as well as knowledge about how to edit files.

To get the most out of this tutorial, access to a FreeBSD system with admin (root) rights is recommended.

Speaker biography:
Niclas has always had an interest for computers and technology.

He has been a FreeBSD contributor for more than ten years, and a committer for six of those, working in the ports tree and sometimes writing documentation. Most notably, he’s involved in the FreeBSD port of the xorg graphics environment and maintain several other ports

When not contributing to FreeBSD, he works as an IT consultant, primarily with IT security and systems administration, or he can be found in the bowling alley, trying to knock pins over.

Yes, his laptop runs FreeBSD.


LibTLS Tutorial for TLS beginners
Bob Beck

This tutorial is intended to teach the participants how to use basic libtls to perform TLS communication in a C programs. We will convert programs that use the posix sockets api and communicate in cleartext to use libtls to have tls secured communication.

Participants will need to have the ability to edit, compile, and run C programs on a BSD based machine with the most recent version of libressl installed. Tutorial and solutions are hosted on github, so git will also be required to work with the materiel and solutions.


Speaker biography:
Bob Beck lives in Edmonton, Alberta, Canada

He has been involved in OpenBSD since 1996 and works in various areas in OpenBSD.


Introduction to BGP for developers and sysadmins
Peter Hessler

BGP is becoming more and more relevant outside of pure networking. Developers need to understand TCP/IP for their own projects, micro-services use networking for performance and redundancy. Virtual Machines move from host to host, and need to have network traffic delivered to them. BGP is the backbone protocol of the Internet, and as a Data Center networking protocol for Facebook, Google, and Microsoft.

I will teach you the relevant basics of networking and how BGP is used in the wild. At my day job, I run the 4th most connected network in Germany, and are a developer with OpenBSD focusing on networking and OpenBGPD.

Knowledge of subnets or routing is not required.

Speaker biography:
Peter Hessler has been a developer with the OpenBSD project since 2008.

Originally from San Francisco he has an interest in how things work. An
OpenBSD user since 2000, he moved to Germany in 2008, to Switzerland in
2013, then back to Germany in 2015. In his spare time Peter enjoys
drinking beer, filling out Immigration documentation, and bad puns.

An Introduction to the FreeBSD Open-Source Operating System
Marshall Kirk McKusick

This course will provide a firm background in the FreeBSD kernel. The POSIX kernel interfaces will be used as examples where they are defined. Where they are not defined, the FreeBSD interfaces will be described. The course will cover basic kernel services, process structure, locking, jails, scheduling, signal handling, and virtual and physical memory management. The kernel I/O structure will be described showing disk management, how I/O is multiplexed, and the configuration of special devices. Next the organization of the filesystem will be described showing how its buffer pool is integrated with the virtual memory system. The course then covers the implementation of the fast filesystem and its capabilities including soft updates and snapshots. The filesystem interface will then be generalized to show how to support multiple filesystem types. The course also covers the socket-based network architecture, layering, and implementation. The socket communications primitives and internal layering will be discussed, with emphasis on the interfaces between the layers; the TCP/IP implementation will be used as an example. A discussion of routing issues will be included. The presentations will emphasize code organization, data structure navigation, and algorithms. It will not cover the machine specific parts of the system such as the implementation of device drivers.
Speaker biography:
Dr. Marshall Kirk McKusick’s work with Unix and BSD development spans nearly forty years. It begins with his first paper on the implementation of Berkeley Pascal in 1979, goes on to his pioneering work in the eighties on the BSD Fast File System, the BSD virtual memory system, the final release of 4.4BSD-Lite from the University of California at Berkeley Computer Systems Research Group, and carries on with his work on FreeBSD. A key figure in Unix and BSD development, his experiences chronicle not only the innovative technical achievements but also the interesting personalities and philosophical debates in Unix over the past forty years.