Convert Docker Image Output to an HTML Table

docker images | awk '
BEGIN {print ("<table>")};
print("<tr><th>" $1,"</th><th>" $2,"</th><th>" $3,$4,"</th><th>" $5"</th><th>" $6"</th></tr>")}
print ("<tr><td>" $1,"</td><td>" $2,"</td><td>" $3,"</td><td>" $4,$5,$6 "</td><td> " $7,$8 "</td></tr>")}
END {print ("</table>")}'

Reading Linux groups via the Rust Foreign Function Interface

The world continues to embraces Rust for its safety properties. While writing utilities in Rust, we are going to have to work with existing code to perform common tasks. I recently needed to list the set of Linux groups registered on a system, and get access to the users assigned to each. Here’s my notes of what I learned.

Continue reading

Ansible and FreeIPA Part-1

Ansible is a workflow engine. I use it to do work on my behalf.

FreeIPA is an identity management system. It allows me to manage the identities of users in my organization

How do I get the two things to work together? The short answer is that it is trivial to do using Ansible Engine. It is harder to do using Ansible tower.

Edit: Second part is here. Third part is coming.

Continue reading

Your Own, Personal, Ansible

Me. Us. Them.

The story I tell when I explain the various offereings that Red Hat has based on Ansible follow is based on the progression of Me. Us. Them.

Me: Get my playbook working for me on my workstation. For this, I use Ansible Engine.

Us: Share my playbook with my larger team. For this, I use Ansible Tower.

Them: Make a Self service catalog for the larger organization to consume. This is where Ansible integration into other products comes in to play. I typically talk about CloudForms integration here, but Satellite and OpenShift are also capable of making use of Ansible here.

Here is how I have my local setup for doing Ansible based development. This is organized roughly around how Tower will later consume the roles and playbooks I design here.

Continue reading