James Shubin
d1aaf6e82b
lang: core: embedded: provisioner: Handle spurious failures
...
Not sure why this happen, I think it's just random network blips. Simple
retry should be used for now.
2024-10-29 16:58:06 -04:00
James Shubin
52a71f9515
lang: core: embedded: provisioner: Add unused repo generation
...
I was playing around with generating repo's, but they didn't turn out to
be needed at this time. Committing this anyways for future reference.
2024-10-29 16:58:06 -04:00
James Shubin
3c665174cc
lang: core: embedded: provisioner: Implement handoff
...
Here's a good first way to implement handoff. What's particularly
elegant about handoff here, is that this is the first form of it I know,
where handoff happens between a provisioning tool and a configuration
management tool and those are the same tool! As a result, this can allow
for some really elegant integration, and the end-user never has to deal
with the combinatorial explosion of the N * M scenario of gluing each
provisioning tool to each different configuration management tool.
We'll have other forms of handoff in the future, but this simple
approach is useful already.
2024-10-29 16:58:06 -04:00
James Shubin
93eb8b2b76
lang: core: embedded: provisioner: Host an available deploy
...
This makes the current deploy available. This is likely not useful when
this is used from the embedded provisioner cli tool, since it would
contain cli functions that won't run, but it is useful when it's used as
a library.
2024-10-29 16:42:15 -04:00
James Shubin
1692235498
lang: core: embedded: provisioner: Log output of post
...
This is useful for debugging and for knowing what we really did to the
machine.
2024-10-29 16:42:15 -04:00
James Shubin
a6bcd4b92b
lang: core: embedded: provisioner: Reduce amount of log noise
...
We don't need to refresh the leases so often.
2024-10-29 16:42:15 -04:00
James Shubin
d065cddf5e
lang: core: embedded: provisioner: Remove old package
...
Doesn't seem to be used for anything at the moment.
2024-10-29 16:42:15 -04:00
James Shubin
20d4809e8e
engine: resources: Print netmask nicely for our DHCP resource
...
Makes it easier to see what's going on.
2024-10-29 16:42:15 -04:00
James Shubin
b074386c26
cli: Add setup and firstboot commands
...
This adds two new top-level commands: setup and firstboot.
Firstboot is pure-golang implementation of a service that runs some
commands once when a system first boots. You need to install this
service, and put the scripts to run in a special directory. This is
inspired by the virt-builder --firstboot mechanism.
Setup is a general purpose command that makes it easy to setup certain
facilities on a new machine. These include the mgmt package dependencies
it might need, a service to run it from, and the necessary service to
use the mgmt firstboot service as well.
All of this has been built to facilitate handoff between provisioning a
new machine and running configuration management on it.
2024-10-29 16:42:15 -04:00
James Shubin
b140b2dfeb
util: Move executable path finding into a helper function
2024-10-29 16:41:37 -04:00
James Shubin
8e3d959500
util: We prefer to append rather than truncate
...
This makes this utility function more useful.
2024-10-29 16:41:37 -04:00
James Shubin
8c886bbe7c
util: Nil input to our simple cmd helper should be allowed
...
Don't panic here!
2024-10-29 16:41:37 -04:00
James Shubin
7d204dfb74
util: Add a simple append file write function
...
Similar to the golang os lib version except we append.
2024-10-29 16:39:46 -04:00
James Shubin
583f90dc7b
util: distro: Rename functions to avoid golang stutter warning
2024-10-25 02:56:12 -04:00
James Shubin
85e1d6c0e8
engine: resources: Make sure to set the netmask
...
Some clients would DECLINE if this was not set. This was reproduced my
using the stock coredhcp DHCPv4 server and disabling the netmask plugin.
One of the clients that would DECLINE is a Lenovo ThinkCentre m90n doing
a UEFI (PXE) netboot.
This was found in 1327752725 and is
hopefully now completely fixed!
2024-10-25 00:57:50 -04:00
James Shubin
2c967e3897
util: Add a simple template system for systemd unit files
...
Just the basics for what we need, nothing more. Not intended as a
general-purpose library for use elsewhere.
2024-10-24 17:29:00 -04:00
James Shubin
202a8e1fba
util: Add a small helper to exec commands simply
2024-10-18 10:02:29 -04:00
James Shubin
e6085d77ff
util: Add an flock utility for lock file type things
...
Useful for ensuring only one binary runs at the same time.
2024-10-18 10:02:29 -04:00
James Shubin
10f82c6566
lang: core: list: Add a concat function
...
It works with arbitrary numbers of arguments too!
2024-10-18 10:02:29 -04:00
James Shubin
3d11b2caaf
lang: core: deploy: Add a function to help in obtaining bootstrap deps
...
This should make it easier to implement handoff.
2024-10-15 20:54:33 -04:00
James Shubin
f8037a1f99
lang: types: Add a small helper function for common type conversions
2024-10-15 20:53:39 -04:00
James Shubin
067eef9007
util: distro, engine: resources: Update virt-builder res
...
A little easier to maintain if we support more distros eventually.
2024-10-15 20:36:51 -04:00
James Shubin
e45d9be065
util: distro: Parse the os-release file
2024-10-15 20:36:51 -04:00
James Shubin
d24149518c
util: distro: Refactor family and distro code
...
I hate writing abstraction code like this, but I'm hoping it will be
useful.
2024-10-15 20:36:50 -04:00
James Shubin
d403f18b2a
util: distro: Put distro specific data in this util package
...
Try and see if we can put all our distro specific stuff in here...
2024-10-15 19:04:17 -04:00
James Shubin
1f12150d8f
engine: resources, examples: lang: Expand on future deploy ideas
...
This is one idea for reference. But I doubt this is needed anytime soon
since we have a good working solution in the examples.
2024-10-13 20:47:47 -04:00
James Shubin
d3a7cefcc6
engine: resources: Add an archiving, deploy resource
...
This makes a bundle out of the code in the current deploy. Hopefully
this is useful for handoff!
2024-10-13 16:44:23 -04:00
James Shubin
a8c8f09aa3
gapi: Plumb through a URI mechanism
...
This is at least a stop-gap until we redo the whole filesystem API mess.
I think golang is partly to blame because they don't have proper API's
merged yet.
2024-10-13 16:40:50 -04:00
James Shubin
b03fdeccae
lang: interfaces: Nil input means no args
2024-10-07 00:00:19 -04:00
James Shubin
6c12e8a29b
lang: gapi: The module path needs separate rebasing
...
If we're using a module path which doesn't share the same root, rebase
it separately.
2024-10-07 00:00:19 -04:00
James Shubin
310452542b
lang: gapi: Rebase to the common path prefix
...
When the modules dir is not within the main base, we don't correctly
choose the common base path. As a result, we should choose something
common for our internal path representation.
2024-10-05 01:02:03 -04:00
James Shubin
b514022713
util: Add some path manipulation algorithms
...
These could use some optimization by an algorithmist! Not urgent right
now since they're not currently in any fast paths in the code.
2024-10-05 01:02:03 -04:00
James Shubin
c937280664
engine: local, lang: core: local: Add a pool function
...
This adds a new local API for pool allocation, and with it a
corresponding function in the "local" import.
2024-10-04 22:37:39 -04:00
James Shubin
898b58e3e7
lang: core: strings: Add a substring function named substr
2024-10-03 13:49:08 -04:00
James Shubin
74119a0a53
lang: core: strings, util: Add left and right padding functions
...
Golang didn't want these in the standard library, but they are useful.
2024-10-03 13:49:08 -04:00
James Shubin
d6914d3437
lang: core: net: Improve formatting of the mac functions
2024-10-03 13:49:08 -04:00
James Shubin
fdfa03685c
lang: core: net: Add is_mac function
2024-10-02 14:31:20 -04:00
James Shubin
149a85fcde
modules: misc: Ensure the ssh key has a folder
2024-09-29 00:53:11 -04:00
James Shubin
65f26769ae
lang: core: net: Add a cidr to mask function
...
And tidy things up slightly to remove buggy tests.
2024-09-28 22:54:06 -04:00
James Shubin
6397c8f930
lang: Clean up import logs
...
We get a lot of useless noise here, make it neater.
2024-09-28 21:56:53 -04:00
James Shubin
761030b5b8
modules: misc: Make the ssh keygen module more useful
2024-09-26 12:52:27 -04:00
James Shubin
9a752da13d
modules: misc: Add a small helper module
...
Maybe I'll collect enough small snippets that I can keep them in here
until they get split out elsewhere to more appropriate places.
2024-09-26 12:43:26 -04:00
James Shubin
13fc711657
util: Expanding home directory should preserve trailing slash
...
Because we consider slashes as a directory identifier when needed.
2024-09-26 12:29:43 -04:00
James Shubin
6419f931ee
engine: resources: Add a virt-builder resource
...
This wraps the excellent virt-builder utility which makes setting up new
virtual machines a breeze.
2024-09-26 11:47:40 -04:00
James Shubin
562138cb74
lang: core: os: Add expand_home function
...
Simple helper that works with ~/foo/ or ~james/foo/ type patterns.
2024-09-25 20:31:18 -04:00
James Shubin
8aac770bcb
engine: resources: pkg: Add a small helper for simple installs
...
Add this utility function for doing single package installs.
2024-09-25 16:26:32 -04:00
James Shubin
80e8c9cadc
util: arch: Use small arch util library
...
Put all of the arch stuff that we can into this library.
2024-09-25 16:25:55 -04:00
James Shubin
87b3dda867
readme: Fixup typo
...
Reported in GH#775.
2024-09-19 13:22:00 -04:00
James Shubin
b9e093cd6b
engine: resources: svc: Reduce unnecessary logging
2024-09-18 21:47:29 -04:00
James Shubin
06a023ca66
engine: resources: sysctl: Be more careful about dir path
...
More validation is not bad!
2024-09-18 21:39:33 -04:00