The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,861 other subscribers

Archive for the ‘DevOps’ Category

How not to do updates of your wiki site

Posted by jpluimers on 2021/02/17

If your company manages your own infrastructure, be sure you have monitoring on all levels.

It saves you from customers discovering issues like this: [WayBack] Thread by @jpluimers: “The @EmbarcaderoTech docwiki is down due to an error in duobook2.[…]”:

The @EmbarcaderoTech docwiki is down due to an error in duobook2. URLs pointing to wiki content fail, no matter the product. Examples for Rio and XE2 grabbed from docwiki.embarcadero.com/Libraries/Rio/… and docwiki.embarcadero.com/Libraries/XE2/…


This is the reason for allowing archival of all your product documentation web-content in the @internetarchive, even for non-current products, as now only parts that have been allowed to save in the past are available.

Apart from nobody noticing the outage yet, which is bad in it’s own way, I hope the cause is not somebody fiddling with duobook (3 year old and unmaintained) without testing the consequences. As that would make the cause of the outage embarrassing.

[WayBack] https://github.com/ElectricVersion/DuoBook

Finally it is rather odd to get a HTTP 200 SUCCESS code on a failure. A HTTP 500 or 503 would be far more appropriate.

I wonder if that is a @mediawiki thing; maybe they could shed some light on that.

References en.wikipedia.org/wiki/List_of_H… and en.wikipedia.org/wiki/List_of_H….

The cool thing is that the stack traces teach you a lot about how a framework is structured.

Related:

  • [Archive.is/WayBack] RAD Studio API Documentation: Rio
    Exception encountered, of type "ArgumentCountError"
    [6a5b64d3a502a9acff148fe1] /Libraries/Rio/en/Main_Page ArgumentCountError from line 420 of /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php: Too few arguments to function DuoBook2Template::displayPrefs(), 0 passed in /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php on line 99 and exactly 1 expected
    Backtrace:
    #0 /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php(99): DuoBook2Template->displayPrefs()
    #1 /var/www/html/shared/BaseWiki27/includes/skins/SkinTemplate.php(248): DuoBook2Template->execute()
    #2 /var/www/html/shared/BaseWiki27/includes/OutputPage.php(2335): SkinTemplate->outputPage()
    #3 /var/www/html/shared/BaseWiki27/includes/MediaWiki.php(743): OutputPage->output()
    #4 /var/www/html/shared/BaseWiki27/includes/MediaWiki.php(509): MediaWiki->main()
    #5 /var/www/html/shared/BaseWiki27/index.php(43): MediaWiki->run()
    #6 {main}
  • [Archive.is/WayBack] XE2 API Documentation
    Exception encountered, of type "ArgumentCountError"
    [d3d353581c3915881b976ab6] /Libraries/XE2/en/Main_Page ArgumentCountError from line 420 of /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php: Too few arguments to function DuoBook2Template::displayPrefs(), 0 passed in /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php on line 99 and exactly 1 expected
    Backtrace:
    #0 /var/www/html/shared/BaseWiki27/skins/DuoBook2/DuoBook2.php(99): DuoBook2Template->displayPrefs()
    #1 /var/www/html/shared/BaseWiki27/includes/skins/SkinTemplate.php(248): DuoBook2Template->execute()
    #2 /var/www/html/shared/BaseWiki27/includes/OutputPage.php(2335): SkinTemplate->outputPage()
    #3 /var/www/html/shared/BaseWiki27/includes/MediaWiki.php(743): OutputPage->output()
    #4 /var/www/html/shared/BaseWiki27/includes/MediaWiki.php(509): MediaWiki->main()
    #5 /var/www/html/shared/BaseWiki27/index.php(43): MediaWiki->run()
    #6 {main}

–jeroen

Read the rest of this entry »

Posted in Development, DevOps, Infrastructure, Power User, Software Development, Web Development | Leave a Comment »

Some postfix notes

Posted by jpluimers on 2020/10/15

Postfix has documentation on primary MX and secondary MX, but not on tertiary MX.

If the primary MX is down, you have a series of secondary MX and tertiary MX that configured the same way, MX DNS priority for primary, the series of secondary MX and tertiary MX have increasing numbers, and the primary MX goes down, then senders can get “too many hops” as secondary and tertiary MX are looping.

I had a hard time finding a good and easy solution as these queries do not return many meaningful results:

Here are some links that helped getting this solved:

  • [WayBack] Postfix Frequently Asked Questions: What does “Error: too many hops” mean?

    Short answer: this message means that mail is probably looping. If you see this after you turned on Postfix content filtering, then you have made a mistake that causes mail to be filtered repeatedly. This is cured by appropriate use of content_filter=header_checks=, and body_checks=.

    Long answer: the message has too many Received: message headers. A received header is added whenever Postfix (or any MTA) receives a message. A large number of Received: message headers is an indication that mail is looping around.

    Side comment: email uses the opposite of the technique that is used to avoid IP forwarding loops. With IP, the sender sets a TTL (time to live) field in the IP header. The field is decremented by each router. When the TTL reaches zero the packet is discarded and an ICMP error message is returned to the sender.

  • [WayBack] Error: too many hops (in reply to end of DATA command) · Issue #713 · mail-in-a-box/mailinabox · GitHub

    In case you or anyone else was/is wondering about the mydestination = localhost thing, the reason it has to be set to just localhost is because MIAB uses Postfix’s “virtual domain hosting” (http://www.postfix.org/VIRTUAL_README.html) support. Per the documentation for mydestination at http://www.postfix.org/postconf.5.html#mydestination:

    Do not specify the names of virtual domains – those domains are specified elsewhere. See VIRTUAL_README for more information.

    (in the context of MIAB every domain is a virtual domain).

In my case a series of these:

Received: from mwgp.xs4all.nl (mwgp.xs4all.nl [80.101.239.92])
    by fiber24315337242.heldenvannu.net (Postfix) with ESMTP id 26395200FE
    for <jeroen@pluimers.com>; Fri, 29 Jun 2018 11:01:02 +0200 (CEST)
Received: from fiber24315337242.heldenvannu.net (unknown [37.153.243.246])
    by mwgp.xs4all.nl (Postfix) with ESMTP id 077A5E937
    for <jeroen@pluimers.com>; Fri, 29 Jun 2018 11:01:02 +0200 (CEST)

Specifying the transport will likely help me solve this problem:

This all came down to editing /etc/postfix/transport adding lines for each relayed domain like this one:

example.org    smtp:[mx-a-record.example.org]

Lines like it direct to use the smtp transport and use a specific host (normally, the relay transport is being used).

After this:

# postmap /etc/postfix/transport
# rcpostfix reload

I choose not to configure [WayBack] Postfix Configuration Parameters: relay_recipient_maps, but might if I had an automated way of replicating lists of valid (and invalid) users.

Another option was confirmed at [WayBack] Software-update: Postfix 3.4.0 / 3.3.3 / 3.2.8 / 3.1.11 / 3.0.15 – Computer – Downloads – Tweakers by [WayBack] menocchio. Thanks!

Dat is volgens mij eenvoudig op te lossen met relay_transport of transport_maps. Zie ook: Postfix transport table format.

Daarmee dwing je de secondary servers de mail altijd af te willen leveren bij de primary server (en dus niet bij een andere secondary). En als de primary niet online is, dan wacht ie netjes tot dat wel het geval is :-)

Bijvoorbeeld:
relay_transport = smtp:[primarymx.domain.tld]

Likely relevant: [WayBack] The Book of Postfix

Maybe relevant in the future:

Found on my hunt for the above:

Try not to make typo’s: [WayBack] postfix appears not finding MX records or host names from DNS

Interesting thought, but not sure how smart SPAM bots are now: [Archive.is] Spam relaying through secondary MX… – Google Groups

To archive this:

  1. Rename from
  2. To
  3. Then save in Archive.is

–jeroen

Posted in *nix, Communications Development, Development, DevOps, DNS, etckeeper, Infrastructure, Internet, Internet protocol suite, Linux, Power User, SMTP | Leave a Comment »

Squirrel · GitHub: Server-driven updates for native apps

Posted by jpluimers on 2020/07/23

Reminder to self as I might need it one day:

Server-driven updates for native apps (Windows/Mac/iOS)

[WayBack]Squirrel · GitHub

Via: [WayBackHow do you deploy and update desktop applications? Carl and Richard talk to Paul Betts about the open source project called Squirrel – https://github.c… – .NET Rocks! – Google+

–jeroen

Posted in Deployment, Development, DevOps, Software Development | Leave a Comment »

Why and how GitLab abandoned Microsoft Azure for Google Cloud | VentureBeat

Posted by jpluimers on 2020/07/22

Reminder to self to check out how this move went: [WayBack] Why and how GitLab abandoned Microsoft Azure for Google Cloud | VentureBeat.

Via [WayBack] Kristian Köhntopp – Google+

–jeroen

Posted in Azure Cloud, Cloud, Containers, Development, DevOps, Docker, GCP Google Cloud Platform, Google Kubernetes Engine, Infrastructure, Kubernetes (k8n), Software Development | Leave a Comment »

GitHub – gamelinux/passivedns: A network sniffer that logs all DNS server replies for use in a passive DNS setup

Posted by jpluimers on 2020/07/15

Cool tool: [WayBackGitHub – gamelinux/passivedns: A network sniffer that logs all DNS server replies for use in a passive DNS setup via [WayBack] How to log all my DNS queries? – Unix & Linux Stack Exchange (thanks mxmlnkn!).

It listens on port 53 for DNS requests then logs them to a file on regular intervals aggregating similar requests.

Usage is simple:

Read the rest of this entry »

Posted in *nix, *nix-tools, Development, DevOps, Infrastructure, Linux, openSuSE, Power User, SuSE Linux, Tumbleweed | Leave a Comment »

Nick Craver – Stack Overflow: How We Do Deployment – 2016 Edition

Posted by jpluimers on 2020/03/18

It sounds long ago, but this post is still so relevant for anyone not yet bringing operations and development close together. And for those who did:

  • automate the heck out of everything
  • make lots of mistakes as early as possible so you can fix them before the hit any of your production sites

[WayBackNick Craver – Stack Overflow: How We Do Deployment – 2016 Edition

The relevance is why Nick repeated it in 2018 in a response to a @ThePracticalDev discussion right after the first Falcon Heavy deployment, and why I repeat it now.

–jeroen

Posted in Development, DevOps, Infrastructure, Software Development | Leave a Comment »

Swap and Memory Pressure: How Developers think to how Operations people think – The Isoblog.

Posted by jpluimers on 2020/02/21

Still a very insightful read: [WayBack] Swap and Memory Pressure: How Developers think to how Operations people think – The Isoblog.

I totally agree with the view Kristian Köhntopp presents which I usually call “fail early, fail hard, fail clearly”.

–jeroen

via: [WayBack] Swap and Memory Pressure: How Developers think vs. how Operations people think. – Kristian Köhntopp – Google+

Posted in DevOps, Power User | Leave a Comment »

Incidents, fixes, and the day after – Booking.com Infrastructure – Medium

Posted by jpluimers on 2019/11/11

In larger teams, to handle Incidents, fixes, and the day after – Booking.com Infrastructure – Medium [WayBack] you escalate it through a set of carefully chosen phases.

  1. Starting the escalation
  2. Gathering the firefighters
  3. Going back to business
  4. Closing the escalation
  5. Working towards the permanent solution
  6. Postmortem retrospective

–jeroen

via: [WayBack] Incident Handling und der Tag danach (Booking.com) – – Kristian Köhntopp – Google+

Read the rest of this entry »

Posted in Development, DevOps | Leave a Comment »

Fabric, Cuisine and Watchdog for server administration in Python

Posted by jpluimers on 2019/08/05

For my reading list: [WayBackFabric, Cuisine and Watchdog for server administration in Python.

It’s about these environments and tools:

–jeroen

Read the rest of this entry »

Posted in Cloud, Development, DevOps, Infrastructure, Power User | Leave a Comment »

Friday Deploys, and other harmful BOFH memes – The Isoblog.

Posted by jpluimers on 2019/06/05

The answer to the meme on the right:

If you are having problems deploying on a Friday, you will have them at any time of the week. Your processes are broken.

Source: [WayBackFriday Deploys, and other harmful BOFH memes – The Isoblog.

via: [WayBack] Friday Deploys and other harmful BOFH memes – they need to die in a fire… – Kristian Köhntopp – Google+

Kristian argues that people finding the meme funny should get fired.

I still find it funny. Both in a way that I’m surprised so many BOFH are still there, as well as being happy that on many occasions I’ve helped making this a thing of the past or at least make organisations aware of the deployment risks and how to cope with them.

Do I need to change? Definitely: life is all about learning new things every day and change because of that.

Do I need go get out of a job or a new job? Likely at some point because life is all about change. Hopefully I’ve learned enough by then to find another gig where – in addition to applying my tech skills – I can spread awareness and knowledge. And learn new things. Did I tell about life is all about learning?

Related: [WayBack] by michielrook.nl:

https://speakerdeck.com/mrook/i-deploy-on-fridays-and-maybe-you-should-too

Via: [WayBack] @michieltcs: I deploy on Fridays (and maybe you should too): https://speakerdeck.com/mrook/i-deploy-on-

–jeroen

Posted in Development, DevOps, Power User | 1 Comment »