Ansible not only accepts static machine inventories represented in an inventory file, but it is capable of leveraging also dynamic inventories. To use that mechanism the only thing which is needed is a program resp. a script which creates the particular machines which are needed for a certain project and returns their addresses as a JSON object, which represents an inventory like an inventory file does it. This makes it possible to created specially crafted tools to set up the number of cloud machines which are needed for an Ansible project, and the mechanism theoretically is open to any programming language. Read On →

At is has been reported on the discussion list for American Fuzzy Lop lately, unfortunately the fuzzer is broken in Ubuntu 18.04 “Bionic Beaver”. Ubuntu Bionic ships AFL 2.52b, which is the current version at the moment of writing this blog post. But the particular problem comes from the accompanying gcc-7 package, which is pulled by afl via the build-essential package. It was noticed in the development branch for the next Debian release from continuous integration (#895618) that introducing a triplet-prefixed as in gcc-7 7. Read On →

This is a mini workshop as an introduction into using Ansible for the administration of Debian systems. As an example it’s shown how this configuration management tool can be used to remotely set up a simple WSGI application running on an Apache web server on a Debian installation to make it available on the net. The application which is used as an example is httpbin by Runscope. This is an useful HTTP request service for the development of web software or any other purposes which features a number of specific endpoints that can be used for different testing matters. Read On →

The Python API for the Debian package manager APT is useful for writing practical system maintenance scripts, which are going beyond shell scripting capabilities. There are Python2 and Python3 libraries for that available as packages, as well as a documentation in the package python-apt-doc. If that’s also installed, the documentation then could be found in /usr/share/doc/python-apt-doc/html/index.html, and there are also a couple of example scripts shipped into /usr/share/doc/python-apt-doc/examples. The libraries mainly consists of Python bindings for the libapt-inst and libapt-pkg C++ core libraries of the APT package manager, which makes it processing very fast. Read On →

I’ve got some little scripts and a template here to automatically create Vagrant boxes from cutting edge Debian testing daily snapshots (netinstall ISO image) using HashiCorp’s Packer.
To create Vagrant boxes with these, you first need a running binary of Packer. There is a Debian package available if that’s also your working environment, but Packer is going to be introduced into the stable branch with the upcoming Stretch release itself. However, Ubuntu already has it, and some other derivatives, too. Read On →

[2016-12-19: some additions]
This is another little issue from Python packaging for Debian which I came across lately packaging the compressed NumPy based data container Bcolz. Upstream uses setuptools-scm to determine the software’s version during build time from the source code management environment the code is in. This method is convenient for the upstream development because with that the version number doesn’t need to be hard-coded, and often people just forget to update that (and other version carrying files like docs/conf. Read On →

This is a little subject matter I came across recently. Since American Fuzzy Lop (AFL) was started to build with LLVM higher than 3.7 there were problems on the officially supported port armhf. The build always breaks over an illegal instruction while trying to compile the tests for the instrumentation. Read On →

This article discusses some particular problems which came up in packaging Python software for Debian. It's about UnicodeDecoreError on open() of Python 3 running in non-UTF-8 environments, and on the non-deterministic order of requirements in egg-info/requires.txt. It's the first post of a planned series on specialized Python related issues like these. Read On →

This an end-user oriented 'field manual' for running the math expression compiler and deep learning engine Theano on Debian systems. It discusses maintenance tasks like using the helper scripts for running the tests and purging the cache, choosing between different available BLAS implementations, and finally howto use a GPU device for Theano by the CUDA backend. And in contrast to the official documentation all that with a special focus on running the new packages within the Debian environment. Read On →

This is an exhaustive explanation of a complete build process of a Debian package, the C++ computer vision library Vigraimpex. The debian/rules file of the discussed package revision is 'old school', containing explicitly written individual build targets. This would be interesting for people want to get deeper into Debian packaging along a quite demanding debian/rules file, which actually is GNU Make code. Its ideal for that purpose that the upstream package has a rather easy outline. Read On →

This article describes howto use the portable development environments of HashiCorp's Vagrant on virtual machines provided by the cloud service DigitalOcean. That's easy to do with the plugin vagrant-digitalocean from devopsgroup.io. Read On →

Here are some notes on how to deal with a certain problem in Debian packaging, which might be useful for people coming across the same issue. In certain cases you want to have two binary packages co-installable, which normally wouldn't be because of the restriction that two packages can't be installed at the same time which contain the same files: every single file in the filesystem have to belong to a single package, and couldn't be overwritten by another package. Read On →