Example#

{{< chooser language "typescript" >}} {{% choosable language typescript %}}

import fs from 'fs';
 
import * as pulumi from "@pulumi/pulumi"
import * as matchbox from "@pulumiverse/matchbox"
 
const matchboxConfig = new pulumi.Config("matchbox")
const matchBoxEndpoint = matchboxConfig.require("endpoint")
 
const config = new pulumi.Config()
// Set stack config item "stream" to a value applicable for the os releases, e,g:
// "Fedora CoreOS release stream (e.g. testing, stable)"
const osStream = config.get("stream") || "stable"
 
// Set stack config item "versioin" to a value applicable for the os version, e,g:
// "Fedora CoreOS version to PXE and install (e.g. 32.20200715.3.0)"
const osVersion = config.require("version")
 
const ignitionData = fs.readFileSync('worker.yaml', 'utf8');
 
const pxeProfile = new matchbox.Profile("pxeProfile", {
    initrds: [
        pulumi.interpolate`https://builds.coreos.fedoraproject.org/prod/streams/${osStream}/builds/${osVersion}/x86_64/fedora-coreos-${osVersion}-live-initramfs.x86_64.img`
    ],
    args: [
        "ip=dhcp",
        "rd.neednet=1",
        pulumi.interpolate`initrd=fedora-coreos-${osVersion}-live-initramfs.x86_64.img`,
        pulumi.interpolate`coreos.inst.image_url=https://builds.coreos.fedoraproject.org/prod/streams/${osStream}/builds/${osVersion}/x86_64/fedora-coreos-${osVersion}-metal.x86_64.raw.xz`,
        pulumi.interpolate`coreos.inst.ignition_url=${matchBoxEndpoint}/ignition?uuid=\${uuid}&mac=\${mac:hexhyp}`,
        "coreos.inst.install_dev=sda",
        "console=tty0",
        "console=ttyS0",
    ],
    rawIgnition: ignitionData
})
 
const pxeGroup = new matchbox.Group("node1", {
    profile: pxeProfile.id,
    selector: {
        mac: "52:54:00:a1:9c:ae"
    },
    metadata: {
        customVariable: "machine_specific_value_here"
    }
})

{{% /choosable %}}

{{< /chooser >}}

Updated

Was this page helpful?