Removing messages with notmuch

Disclaimer: this is very likely not safe, use it at your own risk, I don’t account for any harm.

So you can’t remove messages with notmuch:

While notmuch does not support, nor ever will, the deleting of messages...

That’s a fact. But what if it could help you with that? A lot actually.

Keep reading

Non-blocking stdin with python using epoll

I was playing with epoll and was curious whether I can use it to monitor sys.stdin. The biggest issue was that sys.stdin.read() is blocking and I had no way to figure out whether I read the descriptor fully or not (making the epoll useless pretty much). Until I changed it to non-blocking with fcntl.

Keep reading

LinuxCon ContainerCon Europe 2016

Here are my assorted notes from some ${subject} talks.

Keep reading

Flock 2016: my notes

Last week we were at Flock 2016 which was held in Krakow, Poland. Awesome event, lots of news, great people, plenty of conversations and fun.

Here is a list of my notes:

Keep reading

Handling secrets when building docker images is easy

So you wanna build a docker image. And you need to fetch your application sources from git. Which is guarded by ssh. And you don’t want the ssh key to get leaked into the final image. Bummer.

Unless…

Keep reading

Download manifests from Docker Hub

So we needed to fetch manifests of repositories from Docker Hub today. It’s not that hard. 30 lines of python can do it. But at the same time, you need to read docs with all the specs.

Keep reading

Simple way to check for race conditions

Today was a fun day. We were working on a piece of code which interacts with PostgreSQL database. One function was reading from database and based on the query result it inserted some data afterwards. The thing is that it wasn’t done in a transaction so I suspected there could be a race condition. But how to test such case? My requirements for such test were obvious: I wanna spam the server with streams of requests and check logs if the server is able to handle it.…

Keep reading

Automatic mounts with systemd

So I wanted to setup automatic mounting (read as autofs) with systemd, without using fstab.

Unfortunately, the man page didn’t have any examples so it wasn’t that easy to figure out. Luckily there is an excellent guide at RHCSA course [1].

Tl;dr

Keep reading

Building docker images with two Dockerfiles

So I got asked about this topic after my DevConf 2016 talk: there is a solution available on internets which describes how one can use two dockerfiles to build an image. Whole article can be found here.

What I didn’t like about the solution is that the first image outputs whole build artifact as a tarball to standard output. To me that’s a bit hacky. Since docker 1.8 you can cp files and directories between containers and host. Let’s try to do that!

All of this is because of build secrets. It may happen that you need to authenticate with an external service when building a docker image. In order to do that, you need to have a secret available during build. That’s a problem. This key may leak into a final image (whether via docker history or will be available directly in some layer).

Here’s a solution!

Split your build process into two steps, each step represents its own dockerfile.

  1. Authenticate with external service in order to fetch sources (use private SSH key to authenticate with GitHub so you can clone a repo) and build the project.

  2. Get build artifacts from step 1 and install them.

Keep reading

Tips and tricks to write Dockerfiles

After my yesterday talk at DevConf 2016 I got asked about some tips and tricks how to write Dockerfiles. I know we have plenty of resources for that in Red Hat, Fedora and Project Atomic. So, here we go!

Keep reading