Announcing Puppet Enterprise 1401
Tags: puppet, humor, aprilfools
Published: 2024-04-01 05:36:34

In the rapidly changing world we live in, it’s easy to overlook the quiet minority of the tech industry that doesn’t keep up with the breakneck pace of innovation. Rather than living on the bleeding edge, they value the fantastic stability that comes from running decades-old software which has withstood the test of time. To them, change is anathema--nothing but an opportunity for something to break.

Puppet's workflow is ideal for such use. Once you've defined your desired state, Puppet's consistency model will maintain that state indefinitely--years, if needed. It should come as no surprise that 100%[<sup>*</sup>](#footnote1) of sites running IBM 1401 machines have requested a version of Puppet for their systems. **We are happy to respond to this overwhelming demand and are announcing _Puppet Enterprise 1401 <sup>tm</sup>_ today**. This is the same Puppet Enterprise you know and love, tailored carefully to fit into the unique limitations of the IBM 1401.

![Doctored image showing Puppet Enterprise displayed on monitors in an IBM 1401 computer room, implying that it's running on the 1401 itself.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/babmj9tznv6yw4wdx684.png)

Obviously, the runtime environment is significantly different from other systems that Puppet runs on and this necessitated some workflow changes. Instead of the server-client model traditionally used by Puppet infrastructures, _Puppet Enterprise 1401 <sup>tm</sup>_ works with an existing Puppet Enterprise server and allows you to compile your configuration catalog onto a set of punchcards along with the _1401 Puppet Catalog Applicator_.

![A stack of IBM punchcards](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a51c4cg41mi19qihnpea.jpg)

This model is truly agentless, as the _1401 Puppet Catalog Applicator_ makes the catalog self-loading. This uses the [GnuCobol](https://gnucobol.sourceforge.io) backend to compile your Puppet code into Autocoder, and then uses _1401 Autocoder_ with COBOL subroutines to generate machine language that your IBM 1401 can process to manage its configuration.

To process the Puppet self-loading configuration catalog, the 1401 must have at least:
* A minimum of 8,000 positions of core storage
* Four IBM magnetic-tape units
* IBM 1403 Printer, Model 2
* IBM 1402 Card Read-Punch
* Advanced Programming Feature
* High-Low-Equal Compare Feature
* Multiply-Divide Feature
* Input and output units defined in the FILE-CONTROL paragraph.
* Sense switches


## Operator Instructions

1. Ready the tapes on tape units 2, 3, and 4. These tapes are used for runtime state management.
2. Load the card reader with the Puppet catalog set of cards.
    * The catalog must be preceded by a `COBOL RUN` card and followed by an `END OF SOURCE` card.
3. Set sense switches as follows:
    * Turn sense switch `A` on if you'd like to keep the main applicator program in core storage. This requires more positions free, but is much faster.
    * Turn sense switch `F` on if you'd like to log output to the line printer.
    * Turn sense switch `G` on to run in `no-op` mode.
3. Press the `START` button once to load the _1401 Puppet Catalog Applicator_ into core memory.
4. When card reading stops, press the `START` button once more to read and process the catalog.

{% cta https://computerhistory.org/exhibits/ibm1401/ %} Find out more about _Puppet Enterprise 1401_ {% endcta %}


---

_Images from:_
* _https://commons.m.wikimedia.org/wiki/File:IBM_1401_with_open_drawer_at_CHM.jpg_
* _https://commons.wikimedia.org/w/index.php?curid=104449847_
* *https://commons.wikimedia.org/wiki/File:CHM_Artifacts_IBM_96-hole_punched_card_from_1969_%283127086932%29.jpg*

1. <a name="footnote1"></a>By stretching the rules of mathematics a bit, 0 out of 0 is 100%.