@adam/cfgmgmt
v2026.03.30.1
SSH-based configuration management for Linux and macOS.
Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors.
Includes 36 model types:
- @adam/cfgmgmt/node — Gather system facts (OS, arch, package managers)
- @adam/cfgmgmt/file — Create, update, or remove files
- @adam/cfgmgmt/template — Render EJS templates and deploy to remote hosts.
Uses
<%= var %>for plain string interpolation (HTML escaping is disabled). Whitespace control:-%>strips the trailing newline (use on loop/conditional lines to avoid blank lines in output),<%_ %>strips leading whitespace,_%>strips all trailing whitespace. - @adam/cfgmgmt/directory — Create or remove directories
- @adam/cfgmgmt/link — Manage symbolic links
- @adam/cfgmgmt/line — Edit individual lines in files using regex matching
- @adam/cfgmgmt/exec — Run commands with onlyIf/notIf guards
- @adam/cfgmgmt/systemd — Manage systemd services and unit files
- @adam/cfgmgmt/dnf — Manage packages on Fedora/RHEL (with version pinning)
- @adam/cfgmgmt/apt — Manage packages on Debian/Ubuntu (with version pinning)
- @adam/cfgmgmt/pacman — Manage packages on Arch Linux
- @adam/cfgmgmt/homebrew — Manage packages on macOS
- @adam/cfgmgmt/apt_repository — Manage apt sources and GPG keys
- @adam/cfgmgmt/dnf_repository — Manage dnf/yum repository files
- @adam/cfgmgmt/hostname — Set system hostname
- @adam/cfgmgmt/timezone — Set system timezone
- @adam/cfgmgmt/user — Manage system users
- @adam/cfgmgmt/group — Manage system groups
- @adam/cfgmgmt/authorized_key — Manage SSH authorized keys
- @adam/cfgmgmt/host_entry — Manage /etc/hosts entries
- @adam/cfgmgmt/sysctl — Manage kernel parameters
- @adam/cfgmgmt/kernel_module — Load/unload kernel modules with persistence
- @adam/cfgmgmt/cron — Manage cron jobs
- @adam/cfgmgmt/mount — Manage filesystem mounts and fstab
- @adam/cfgmgmt/firewall — Manage firewall rules (ufw/firewalld/iptables)
- @adam/cfgmgmt/selinux — Manage SELinux mode and booleans
- @adam/cfgmgmt/docker_image — Manage Docker images
- @adam/cfgmgmt/docker_container — Manage Docker containers
- @adam/cfgmgmt/git — Manage git repository checkouts
- @adam/cfgmgmt/archive — Extract archives idempotently
- @adam/cfgmgmt/copy_file — Copy a local file to remote hosts via SCP
- @adam/cfgmgmt/fetch — Download files from URLs with checksum verification
- @adam/cfgmgmt/reboot — Reboot hosts and wait for SSH reconnection
- @adam/cfgmgmt/debug_exec — Run a command on a remote host and capture stdout, stderr, and exit code as data
- @adam/cfgmgmt/debug_file — Fetch a remote file's content and store it as data
- @adam/cfgmgmt/certificate — Deploy SSL/TLS certificates with validation
Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately.
Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
Labels
Contents
Quality score
How well-documented and verifiable this extension is.
Not yet scored.
A score will be generated the next time this extension is published. The owner can also trigger scoring manually.
Install
$ swamp extension pull @adam/cfgmgmtGlobal Arguments
| Argument | Type | Description |
|---|---|---|
| hostname | string | Hostname or IP of the remote node |
| sshUser | string | SSH username |
| sshPort | number | SSH port |
| sshIdentityFile? | string | Path to SSH private key |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Absolute path of the file on the remote node |
| ensure | enum | Whether file should be present or absent |
| content? | string | Desired file content |
| owner? | string | File owner |
| group? | string | File group |
| mode? | string | File permissions in octal (e.g. 0644) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Absolute path of the file on the remote node |
| ensure | enum | Whether file should be present or absent |
| template? | string | EJS template string |
| variables | record | Template variables passed to EJS |
| owner? | string | File owner |
| group? | string | File group |
| mode? | string | File permissions in octal (e.g. 0644) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Absolute path of the directory |
| ensure | enum | Whether directory should be present or absent |
| owner? | string | Directory owner |
| group? | string | Directory group |
| mode? | string | Directory permissions in octal (e.g. 0755) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Path where the symlink should exist |
| ensure | enum | Whether symlink should be present or absent |
| target? | string | Target the symlink should point to |
| owner? | string | Symlink owner |
| group? | string | Symlink group |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| command | string | The command to execute |
| onlyIf? | string | Guard: only run if this command exits 0 |
| notIf? | string | Guard: skip if this command exits 0 |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| service | string | Service name (e.g. nginx or nginx.service) |
| ensure? | enum | Whether service should be running or stopped |
| enabled? | boolean | Whether the service should be enabled at boot |
| unitFile? | string | Full content of a systemd unit file to deploy |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
| Argument | Type | Description |
|---|---|---|
| lines | number | Number of journal lines to fetch |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| packages | array | Package names to manage |
| ensure | enum | Whether packages should be present or absent |
| version? | string | Pin to a specific package version (e.g. 1.24.0-1.el9). Applies to all packages in the list. |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| packages | array | Package names to manage |
| ensure | enum | Whether packages should be present or absent |
| version? | string | Pin to a specific package version (e.g. 1.24.0-1ubuntu1). Applies to all packages in the list. |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| packages | array | Package names to manage |
| ensure | enum | Whether packages should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| packages | array | Formula names to manage |
| ensure | enum | Whether packages should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Accepted but ignored (brew forbids root) |
| becomeUser | string | Accepted but ignored |
| becomePassword? | string | Accepted but ignored |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Desired system hostname |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| timezone | string | Desired IANA timezone (e.g. America/New_York) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| username | string | Username to manage |
| ensure | enum | Whether user should be present or absent |
| uid? | number | Desired UID |
| gid? | number | Desired primary GID |
| groups? | array | Supplementary groups |
| home? | string | Home directory path |
| shell? | string | Login shell |
| system? | boolean | Create as system user |
| managehome | boolean | Manage home directory (create with useradd -m, remove with userdel -r) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| groupname | string | Group name to manage |
| ensure | enum | Whether group should be present or absent |
| gid? | number | Desired GID |
| members? | array | Group members |
| system? | boolean | Create as system group |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| user | string | User whose authorized_keys file to manage |
| key | string | Full SSH public key line |
| ensure | enum | Whether the key should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| hostname | string | Primary hostname for the /etc/hosts entry |
| ip | string | IP address for the entry |
| aliases? | array | Additional hostname aliases |
| ensure | enum | Whether the entry should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| key | string | Sysctl key (e.g. net.ipv4.ip_forward) |
| value | string | Desired value |
| ensure | enum | Whether the sysctl parameter should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Unique identifier for this cron job |
| ensure | enum | Whether the cron job should be present or absent |
| command | string | Command to run |
| user | string | User whose crontab to manage |
| minute | string | Minute (0-59 or *) |
| hour | string | Hour (0-23 or *) |
| day | string | Day of month (1-31 or *) |
| month | string | Month (1-12 or *) |
| weekday | string | Day of week (0-7 or *) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Mount point path |
| device | string | Device or remote filesystem to mount |
| fstype | string | Filesystem type (e.g. ext4, nfs, tmpfs) |
| options | string | Mount options (e.g. defaults,noatime) |
| ensure | enum | Desired mount state: mounted=fstab+mounted, unmounted=fstab+not mounted, present=fstab only, absent=remove fstab+unmount |
| dump | number | fstab dump field |
| pass | number | fstab pass field |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| port | number | Port number |
| protocol | enum | Protocol (tcp or udp) |
| action | enum | Firewall action for the rule |
| direction | enum | Traffic direction |
| source? | string | Source CIDR (e.g. 10.0.0.0/8) |
| ensure | enum | Whether the rule should be present or absent |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| mode? | enum | Desired SELinux mode (mutually exclusive with boolean) |
| boolean? | string | SELinux boolean name (mutually exclusive with mode) |
| booleanValue? | enum | Desired boolean value |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| image | string | Docker image name with tag (e.g. nginx:1.25) |
| ensure | enum | Whether image should be present or absent |
| force | boolean | Force pull even if image is already present |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Container name |
| image | string | Docker image (e.g. nginx:1.25) |
| ensure | enum | Desired container state |
| ports? | array | Port mappings (e.g. ["8080:80", "443:443"]) |
| environment? | array | Environment variables (e.g. ["FOO=bar"]) |
| volumes? | array | Volume mounts (e.g. ["/host:/container"]) |
| restart? | enum | Restart policy |
| command? | string | Override container command |
| network? | string | Docker network to connect to |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
| Argument | Type | Description |
|---|---|---|
| lines | number | Number of log lines to fetch |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Local path for the repository |
| repo | string | Git repository URL |
| revision | string | Branch, tag, or commit hash (default HEAD = default branch) |
| ensure | enum | Whether the repository should be present or absent |
| depth? | number | Shallow clone depth |
| owner? | string | Repository owner |
| group? | string | Repository group |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| source | string | Path to the archive file on the remote node |
| dest | string | Extraction destination directory |
| format | enum | Archive format (auto-detected from extension by default) |
| creates? | string | Idempotency guard: skip extraction if this path exists |
| owner? | string | Owner for extracted files |
| group? | string | Group for extracted files |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Absolute path of the file on the remote node |
| regexp | string | Regular expression to match the target line. First match is used. |
| line? | string | The line to insert or replace. Required when ensure is present. |
| ensure | enum | Whether the matching line should be present or absent |
| insertAfter? | string | Regex pattern — insert the line after the last match of this pattern if regexp has no match. Defaults to EOF. |
| insertBefore? | string | Regex pattern — insert the line before the first match of this pattern if regexp has no match |
| createFile | boolean | Create the file if it does not exist (ensure=present only) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| source | string | Path to the local source file. Resolved relative to the repository root if not absolute. |
| path | string | Absolute path of the file on the remote node |
| ensure | enum | Whether file should be present or absent |
| owner? | string | File owner |
| group? | string | File group |
| mode? | string | File permissions in octal (e.g. 0644) |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| url | string | URL to download |
| path | string | Absolute path where the downloaded file should be placed on the remote node |
| checksum? | string | Expected checksum of the file (e.g. sha256:abc123...). Used for idempotency. |
| checksumType | enum | Checksum algorithm to use (md5 is deprecated, prefer sha256) |
| owner? | string | File owner |
| group? | string | File group |
| mode? | string | File permissions in octal (e.g. 0755) |
| force | boolean | Re-download even if the file already exists and checksum matches |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Repository identifier used for the .list/.sources filename (e.g. docker, nodesource) |
| ensure | enum | Whether the repository should be present or absent |
| uris? | array | Repository URIs (e.g. ['https://download.docker.com/linux/ubuntu']). For DEB822 format. |
| suites? | array | Repository suites (e.g. ['noble']). For DEB822 format. |
| components? | array | Repository components (e.g. ['stable']). For DEB822 format. |
| architectures? | array | Architectures to enable (e.g. ['amd64']). For DEB822 format. |
| signedBy? | string | Path to the GPG keyring file on the remote node (e.g. /usr/share/keyrings/docker.gpg) |
| gpgKeyUrl? | string | URL to download the GPG key from. Will be dearmored and saved to signedBy path. |
| sourceLine? | string | Legacy one-line format: 'deb [options] uri suite component...' — written to /etc/apt/sources.list.d/<name>.list. Mutually exclusive with uris/suites/components. |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Repository ID used as the [section] name and .repo filename (e.g. docker-ce-stable) |
| ensure | enum | Whether the repository should be present or absent |
| description? | string | Human-readable repository name (e.g. 'Docker CE Stable') |
| baseurl? | string | Base URL of the repository (e.g. https://download.docker.com/linux/fedora/$releasever/$basearch/stable) |
| metalink? | string | Metalink URL (alternative to baseurl) |
| mirrorlist? | string | Mirror list URL (alternative to baseurl) |
| enabled | boolean | Whether the repository is enabled |
| gpgcheck | boolean | Whether GPG signature checking is enabled |
| gpgkey? | string | URL of the GPG key for the repository (e.g. https://download.docker.com/linux/fedora/gpg) |
| sslverify? | boolean | Whether to verify SSL certificates |
| repo_gpgcheck? | boolean | Whether to verify repository metadata GPG signatures |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Kernel module name (e.g. br_netfilter, overlay) |
| ensure | enum | Whether the module should be loaded or unloaded |
| params? | string | Module parameters (e.g. 'option1=value1 option2=value2') |
| persist | boolean | Persist the module across reboots via /etc/modules-load.d/ |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| timeout | number | Maximum seconds to wait for the host to come back after reboot |
| message | string | Broadcast message before reboot |
| testCommand | string | Command to run after reconnection to verify the host is healthy |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| command | string | The command to execute on the remote host |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| path | string | Absolute path of the file to read on the remote node |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
Global Arguments
| Argument | Type | Description |
|---|---|---|
| name | string | Certificate name — used as a label in state output |
| certContent | string | PEM-encoded certificate content |
| keyContent | string | PEM-encoded private key content |
| chainContent? | string | PEM-encoded certificate chain (intermediate + root CAs) |
| certPath | string | Absolute path for the certificate file on the remote node |
| keyPath | string | Absolute path for the private key file on the remote node |
| chainPath? | string | Absolute path for the chain file on the remote node |
| owner? | string | Owner for all certificate files |
| group? | string | Group for all certificate files |
| certMode | string | Permissions for the certificate file |
| keyMode | string | Permissions for the private key file (default: restricted) |
| chainMode | string | Permissions for the chain file |
| validate | boolean | Validate that the certificate and key match using openssl |
| nodeHost | string | Hostname or IP of the remote node |
| nodeUser | string | SSH username |
| nodePort | number | SSH port |
| nodeIdentityFile? | string | Path to SSH private key |
| become | boolean | Enable sudo privilege escalation |
| becomeUser | string | User to become via sudo |
| becomePassword? | string | Password for sudo -S |
Resources
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 36 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/template** — Render EJS templates and deploy to remote hosts. Uses `<%= var %>` for plain string interpolation (HTML escaping is disabled). Whitespace control: `-%>` strips the trailing newline (use on loop/conditional lines to avoid blank lines in output), `<%_ %>` strips leading whitespace, `_%>` strips all trailing whitespace. - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/line** — Edit individual lines in files using regex matching - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL (with version pinning) - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu (with version pinning) - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/apt_repository** — Manage apt sources and GPG keys - **@adam/cfgmgmt/dnf_repository** — Manage dnf/yum repository files - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/kernel_module** — Load/unload kernel modules with persistence - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently - **@adam/cfgmgmt/copy_file** — Copy a local file to remote hosts via SCP - **@adam/cfgmgmt/fetch** — Download files from URLs with checksum verification - **@adam/cfgmgmt/reboot** — Reboot hosts and wait for SSH reconnection - **@adam/cfgmgmt/debug_exec** — Run a command on a remote host and capture stdout, stderr, and exit code as data - **@adam/cfgmgmt/debug_file** — Fetch a remote file's content and store it as data - **@adam/cfgmgmt/certificate** — Deploy SSL/TLS certificates with validation Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 34 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/template** — Render EJS templates and deploy to remote hosts. Uses `<%= var %>` for plain string interpolation (HTML escaping is disabled). Whitespace control: `-%>` strips the trailing newline (use on loop/conditional lines to avoid blank lines in output), `<%_ %>` strips leading whitespace, `_%>` strips all trailing whitespace. - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/line** — Edit individual lines in files using regex matching - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL (with version pinning) - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu (with version pinning) - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/apt_repository** — Manage apt sources and GPG keys - **@adam/cfgmgmt/dnf_repository** — Manage dnf/yum repository files - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/kernel_module** — Load/unload kernel modules with persistence - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently - **@adam/cfgmgmt/copy_file** — Copy a local file to remote hosts via SCP - **@adam/cfgmgmt/fetch** — Download files from URLs with checksum verification - **@adam/cfgmgmt/reboot** — Reboot hosts and wait for SSH reconnection - **@adam/cfgmgmt/certificate** — Deploy SSL/TLS certificates with validation Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 33 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/template** — Render EJS templates and deploy to remote hosts. Uses `<%= var %>` for plain string interpolation (HTML escaping is disabled). Whitespace control: `-%>` strips the trailing newline (use on loop/conditional lines to avoid blank lines in output), `<%_ %>` strips leading whitespace, `_%>` strips all trailing whitespace. - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/line** — Edit individual lines in files using regex matching - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL (with version pinning) - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu (with version pinning) - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/apt_repository** — Manage apt sources and GPG keys - **@adam/cfgmgmt/dnf_repository** — Manage dnf/yum repository files - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/kernel_module** — Load/unload kernel modules with persistence - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently - **@adam/cfgmgmt/fetch** — Download files from URLs with checksum verification - **@adam/cfgmgmt/reboot** — Reboot hosts and wait for SSH reconnection - **@adam/cfgmgmt/certificate** — Deploy SSL/TLS certificates with validation Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 26 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/template** — Render EJS templates and deploy to remote hosts. Uses `<%= var %>` for plain string interpolation (HTML escaping is disabled). Whitespace control: `-%>` strips the trailing newline (use on loop/conditional lines to avoid blank lines in output), `<%_ %>` strips leading whitespace, `_%>` strips all trailing whitespace. - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 25 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Convergence failures propagate as step failures so workflow orchestration can detect and react to errors. Includes 25 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS - **@adam/cfgmgmt/hostname** — Set system hostname - **@adam/cfgmgmt/timezone** — Set system timezone - **@adam/cfgmgmt/user** — Manage system users - **@adam/cfgmgmt/group** — Manage system groups - **@adam/cfgmgmt/authorized_key** — Manage SSH authorized keys - **@adam/cfgmgmt/host_entry** — Manage /etc/hosts entries - **@adam/cfgmgmt/sysctl** — Manage kernel parameters - **@adam/cfgmgmt/cron** — Manage cron jobs - **@adam/cfgmgmt/mount** — Manage filesystem mounts and fstab - **@adam/cfgmgmt/firewall** — Manage firewall rules (ufw/firewalld/iptables) - **@adam/cfgmgmt/selinux** — Manage SELinux mode and booleans - **@adam/cfgmgmt/docker_image** — Manage Docker images - **@adam/cfgmgmt/docker_container** — Manage Docker containers - **@adam/cfgmgmt/git** — Manage git repository checkouts - **@adam/cfgmgmt/archive** — Extract archives idempotently Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.
SSH-based configuration management for Linux and macOS. Manage remote systems over SSH using the check/apply pattern — every model is idempotent and reports whether resources are compliant, non-compliant, applied, or failed. Includes 10 model types: - **@adam/cfgmgmt/node** — Gather system facts (OS, arch, package managers) - **@adam/cfgmgmt/file** — Create, update, or remove files - **@adam/cfgmgmt/directory** — Create or remove directories - **@adam/cfgmgmt/link** — Manage symbolic links - **@adam/cfgmgmt/exec** — Run commands with onlyIf/notIf guards - **@adam/cfgmgmt/systemd** — Manage systemd services and unit files - **@adam/cfgmgmt/dnf** — Manage packages on Fedora/RHEL - **@adam/cfgmgmt/apt** — Manage packages on Debian/Ubuntu - **@adam/cfgmgmt/pacman** — Manage packages on Arch Linux - **@adam/cfgmgmt/homebrew** — Manage packages on macOS Every model is a factory across hosts — a single definition can target multiple hosts via workflow forEach, with per-host data stored separately. Connections are multiplexed via OpenSSH ControlMaster sockets. All models (except node and homebrew) support sudo privilege escalation.