Posts

Everything is a negotiation

I find that most people employed in ICT know what a negotiation is, yet they inevitably fail to see one, even when it's placed right in front of them. I don't know the reasons (maybe our compulsively rational, binary mindset?) and I don't plan to study them. I will however claim,  rather ambitiously, that if we realize that everything is a negotiation, and deal with it accordingly, we can greatly improve the way we work together, and also be more effective. Some examples: a colleague reaches out to me and suggests we buy support for the Open Source monitoring product we use, because it's critical to our infrastructure. I say no, briefly arguing my reasons. We reach out to another team and suggest a change, they decline it. Are these negotiations? yes! and no! Yes, well of course they are: as the title says everything is a negotiation. At the same time, the conversation stops short of  the discussion with the intent to find a compromise , so it's only just a potenti...

Reflections on imposter syndrome

Each week, in our weekly team meeting, we set out to explore complex/interesting topics. Recently we touched on learning to learn, and imposter syndrome came up, while discussing what can and what can't enable a "being good at learning" disposition. I'll admit that so far my reflections on imposter syndrome stopped at the personal belief that, if one can harness it, it can be turned into a positive force, a force that will encourage us to double-check our work, reduce bias, foster capacity to incorporate feedback, and thus lead to better, more sound results overall. In the weekly meeting multiple, different point of views were offered, and while considering this diversity it dawned to me how much of my own point of view is born out of my generally positive experience of working in ICT. I started out in 1996 when, at university, I was first exposed to computers, Linux, and the internet. I was lucky because the internet was just starting out, and so was I. Things were n...

Team mgmt patterns in Moneyball (movie)

Image
Recently, I watched Moneyball  ( IMDB ,  Rotten Tomatoes ) again. Moneyball tells the story of Billy Bean (Brad Pitt), a baseball team general manager who has to put together a team with a tight budget. After unsuccessfully asking for more money, Billy and his assistant Peter Brand (Jonah Hill) pursue a very atypical management choice for baseball. What convinced me to write this post is that in the movie I saw some team patterns that I apply, and encourage others to apply as well. This post is about these patterns. Spoiler alert: if you haven’t seen the movie, consider stopping here. If you have, or don’t care, carry on.

Faster tests of logstash configuration

Image
If you're using logstash in all but the simplest setups, you have probably started testing your logstash config along the way. This means writing ruby rspec tests like the following: we used to do the same, but over time we noticed that the test suite would take more and more time to to run. A quick investigation revealed that a lot of time was spent in the startup and shutdown of logstash itself, since Logstash would be started and stopped for each  sample  block. But what caused logstash to take such a long time to start and stop? Running rspec with the TEST_DEBUG=1 environment variable set revealed substantial logging related to starting the inputs and output plugins. The elasticsearch output in particular would complain a lot about not being able to connect to ES, with retries at regular intervals. I realized then that since we don't actually need the output and input plugins perhaps we can skip starting them. With a quick change to the configuration loading bl...

Ubuntu 18.04 and 4k display

This weekend I took the plunge and upgraded from Ubuntu 16.04 LTS to 18.04 LTS. The main reason was support for TLS DNS in systemd. Turns out I was in for a bigger surprise.

[SOLVED] Garmin troubles

Image
Update : solved after my watch received software update 7.80 . Scroll at the bottom for details. I have never been a watch person. Have not worn one in a looong time and never really got interested in one even when the smart watch hype started mounting. Two months ago a was gifted a cheap knock-off step tracker and I suddenly realized that I was interested in having that kind of data (steps, sleep) tracked. The cheap tracker died after a few weeks, so I started my hunt. I like running (I try to run 5K, 3 times a week) so I thought maybe I should upgrade from a simple fitness tracker to a watch that I could use for running.

Passed AWS CSA Professional

Image
2 weeks ago I passed the AWS CSA Professional certification exam. Here are my thoughts hoping they might thelp others who are studying or are planning to earn the certification. First off to be eligible for the AWS CSA PRO you need to hold a valid, not expired AWS CSA Associate level certification. In my case I got the Associate 2 years ago and it would have expired on Feb 5th 2018. Both PRO and Associate certifications expire after 2 years. Amazon training will email you a reminder of the expiration roughly 6 months before. In the notification email they will also highlight all available ugrade paths, or just the name of the recertification exam.

Riflessioni sul tema: Ridurre le tasse in maniera strutturale? Quali, quante, come, con quali tempi

Ieri sera ho finalmente visto Michele Boldrin dal vivo in un incontro sul tema: "Cambiamo ritmo al paese. Le cose che servono all’Italia di cui nessun parla Ridurre le tasse in maniera strutturale? Quali, quante, come, con quali tempi" Seguo Boldrin da tempo su noisefromamerika.org  e premetto che mi piace il suo modo schietto di spiegare e raccontare le cose, senza il cerchiobottismo di altri figuri che si occupano di economia (politici in primis). Va da sè che uno così non può piacere a tutti, però IMHO è preferibile qualcuno che ti dice le cose in faccia piuttosto di uno che è d'accordo con tutti su tutto e poi quando agisce fa tutt'altro. Quello che segue è un testo in cui raccolgo i miei pensieri su quanto sentito ieri sera, con la speranza che la forma scritta mi aiuti a ragionarci.

NGINX stream module with dynamic upstreams

NGINX has had support for dynamic upstream modules for a while in the community distribution and examples abund. I think this is probably one of the clearest I could find. Finding a similar config for stream proxies turned out to be surprisingly hard, so here I'm sharing my solution in the hope that it can be useful to somebody. Or someone more experienced can point out a better alternative. In my case my upstream is an ELB which can and will change ip address often so using the static DNS name was not an option.

Standing desk review: Actiforce

Image
I am too jumping on the standing desk bandwagon. I first gave it a try using a support on the table and once I felt the benefit (I felt more creative and focused) I decided to make the move. After all you can still use a standing desk as a normal desk. I first tried buying one from the usual, US-based, suspects but it can be hard to figure out the cost of shipping and then I'd also have to manage import which has never been too fun the rare times I had to (fyi: you must send a bloody fax. In 2017!). So I looked around and found some good looking stuff from Italian manifacturers, but the prices are omg! So I searched Amazon and of course, there it was . It is from a German vendor who is in fact reselling products from  Actiforce . I know people using Actiforce and they are happy with it so I bought it.

Testing logstash filters

There are many posts on techniques for testing your logstash config, but I found most of them to lack in the exact details of getting it working and others are just obsolete, so here are my dumbed down notes: download, unpack and cd into the logstash version you are using or planning to use install development tools:  ./bin/logstash-plugin install --development check if the bin directory contains an rspec file. If not create it and make it executable using this source now cd into the project holding your logstash configs. I'll assume your logstash config lives in a  conf.d  directory: create a spec directory at the same level or run ${LOGSTASH_HOME}/bin/rspec --init for rspec to create its directory structure. You should now have conf.d and spec at the same level in spec drop a test specification, like the one below test your specs with the following command: ${LOGSTASH_HOME}/bin/rspec Enjoy :-) Edited on Jan 29th 2017 as I missed the plugin ...

Codemotion Milan 2016: thoughts

I have never written a review on a conference and this isn't one: this is a brain dump (hence the lack of form and structure) that I quite simply needed to get out here. It might be incomplete, biased or what else: if there is anything that I should know then let me know in the comments. If you think I'm wrong then let me know that too, but please elaborate :-). Last week I was, for the first time, at Codemotion in Milan. A first time doubly so: I had never been to a generalist conference before. Being I a generalist person I appreciated the format, even though I found some of the technical talks too light on actual details. The talks that I liked the most were those of the inspirational track. I went to these two among others and I heartly recommend that you watch them (heck, have all your team watch them!). Maybe because I'm old and I have recently realized that people matter more than tools or technologies? Overall I would rate the conference an 8 out of 10 jus...

A not so short guide to TDD SaltStack formulas

One of the hardest parts about Infrastructure As Code and  Configuration Management is establishing a discipline on developing, testing and deploying changes. Developers follow established practices and tools have been built and perfected over the last decade and a half. On the other hand sysadmins and ops people do not have the same tooling and culture because estensive automation has only become a trend recently. So if Infrastructure As Code allows you to version the infrastructure your code runs on, what good is it if then there are no tools or established practices to follow? Luckily the situation is changing and in this post I'm outlining a methodology for test driven development of SaltStack Formulas . The idea is that with a single command you can run your formula against a matrix of platforms (operating systems) and suites (or configurations). Each cell of the matrix will be tested and the result is a build failure or success much alike to what every half-decent de...

From 0 to ZFS replication in 5m with syncoid

Image
The ZFS filesystem has many features that once you try them you can never go back. One of the lesser known is probably the support for replicating a zfs filesystem by sending the changes over the network with zfs send/receive. Technically the filesystem changes don't even need to be sent over a network: you could as well dump them on a removable disk, then receive  from the same removable disk.

SaltStack targeting: storing roles in pillar

Image
This is an attempt to record my thoughts and describe a solution with regard on how to target/classify minions in a SaltStack environment. SaltStack logo An interesting discussion on the topic can be found in this (rather old) thread on the Salt-User mailing list: https://groups.google.com/forum/#!topic/salt-users/R_jgNdYDPk0 Basically I share the same concern of the thread author Martin F. Kraft, who in an attempt to put and end to this madness ended up writing reklass . Roles seem to be easy enough to understand and provide for a clear separation between the actual infrastructure and the desired configuration state, while allowing extensibility and customization (a more specific role can override some settings from another role).

Schedule a job every 5 minutes with Oracle DMBS_JOB

For all those struggling to schedule a job every 5 minutes without drift here's a "simple" interval expression which can be easily adapted to other intervals (every 10 minutes, 20, etc): select sysdate, trunc(sysdate) + ( ( to_number(to_char(sysdate, 'HH24'))*60+floor(to_number(to_char(sysdate, 'MI'))/5)*5 + 5 ) / 1440) from dual; Btw, the espression is in the second column of the query.

OTRS embedded images and Lotus Notes

Image
Emails with embedded images sent to OTRS from Lotus Notes can reach OTRS rendered as text with the embbeded image placed in a separate attachment. The problem in not on OTRS side, but rather in the Lotus Notes client and server configuration. To fix the issue on the Lotus client make sure that the option "Format for messages addressed to internet addresses" is set to MIME . Then on the sever apply the following settings: In the Domino Admin open the "Configuration" tab Choose "Server" Choose "Configurations" Choose the appropriate server Choose tab titled "MIME" Choose "Conversion Options" Choose "Outbound"   Change the setting for "Message Content formatting" to the bottom option called " Create Multi-part alternative ... ". Email should now reach OTRS properly formatted with embedded image displayed inline. Original source for solution:  https://suppo...

4 podcasts to follow

Image
4 podcasts to listen to while commuting (in no particular order): DevOps cafè  : hosted monthly, features great guests and packs a tremendous amount of valuable information. Warm up by listening to a great episode with with Tom Limoncelli MagPipe Talk show  : I discovered this gem because it recently featured Martin Fowler The Changelog : more targeted towards developers than the previous two. Make sure you listen to the recent episodes with Yehuda Katx and Mitchell Hashimoto Hansel Minutes . Usually this one is mostly of interest to Windows people. Useful if one wants to keep an eye on the ther side of the pond or catch the occasional high-level talk

One-liner libvirt KVM guest

Image
Boot and install a new KVM guest with guest agent support with this super simple libvirt one-liner (great for scripts and CI deployments). Tested on a Centos 7.1 host creating a Centos 7.1 guest from a basic Kickstart file. Parameters should be quite self-explanatory, in any case here's the documentation for virt-install . Important : remember to change the unix socket path on the last line. File: virt-install_auto.sh -------------------------- virt-install --name "guest01" --memory 2048 -l http://your.ris.server/ris/centos71 -x "ks=http://your.ris.server/ris/ks.cfg console=ttyS0" --disk size=8,pool=your_pool,bus=virtio,format=qcow2 -w default --graphics vnc --channel unix,mode=bind,path=/var/lib/libvirt/qemu/guest01.agent,target_type=virtio,name=org.qemu.guest_agent.0

How to automatically import a ZFS pool built on top of iSCSI devices with systemd

When using ZFS on top of iSCSI devices one needs to deal with the fact that iSCSI devices usually appear late in the boot process. ZFS on the other hand is loaded early and the iSCSI devices are not present at the time ZFS scans available devices for pools to import. This means that not all ZFS pools might be imported after the system has completed boot, even if the underlying devices are present and functional. A quick and dirty solution would be to run  zpool import <poolname> after boot, either manually or from cron. A better, more elegant solution is instead to hook into systemd events and trigger zpool import as soon as the devices are created.