empeira 0.1.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +661 -0
- data/README.md +150 -0
- data/bin/empeira +18 -0
- data/config/defaults.yaml +229 -0
- data/docs/addons.md +331 -0
- data/docs/architecture.md +277 -0
- data/docs/configuration.md +1204 -0
- data/docs/development.md +472 -0
- data/docs/hiera-and-eyaml.md +361 -0
- data/docs/installation.md +280 -0
- data/docs/networking.md +362 -0
- data/docs/nodes.md +642 -0
- data/docs/proxy.md +136 -0
- data/docs/troubleshooting.md +361 -0
- data/lib/empeira/addons/environment.rb +82 -0
- data/lib/empeira/addons/error.rb +14 -0
- data/lib/empeira/addons/installation.rb +119 -0
- data/lib/empeira/addons/manifest.rb +112 -0
- data/lib/empeira/addons/service.rb +50 -0
- data/lib/empeira/addons/storage.rb +94 -0
- data/lib/empeira/agent/acquisition.rb +120 -0
- data/lib/empeira/agent/artifact.rb +41 -0
- data/lib/empeira/agent/authentication.rb +122 -0
- data/lib/empeira/agent/cache.rb +122 -0
- data/lib/empeira/agent/cache_storage.rb +82 -0
- data/lib/empeira/agent/download.rb +84 -0
- data/lib/empeira/agent/native_commands.rb +84 -0
- data/lib/empeira/agent/release_sources.rb +64 -0
- data/lib/empeira/agent/target.rb +66 -0
- data/lib/empeira/agent/versions.rb +29 -0
- data/lib/empeira/application.rb +86 -0
- data/lib/empeira/build.json +5 -0
- data/lib/empeira/build_info.rb +46 -0
- data/lib/empeira/cli/addons.rb +45 -0
- data/lib/empeira/cli/base.rb +73 -0
- data/lib/empeira/cli/completion.rb +42 -0
- data/lib/empeira/cli/config.rb +22 -0
- data/lib/empeira/cli/main.rb +114 -0
- data/lib/empeira/cli/node.rb +87 -0
- data/lib/empeira/cli/progress.rb +169 -0
- data/lib/empeira/cli/proxy.rb +36 -0
- data/lib/empeira/cli/update.rb +23 -0
- data/lib/empeira/completion/addons.rb +93 -0
- data/lib/empeira/completion/bash.rb +62 -0
- data/lib/empeira/completion/catalog.rb +170 -0
- data/lib/empeira/configuration/additional_services.rb +74 -0
- data/lib/empeira/configuration/addons.rb +85 -0
- data/lib/empeira/configuration/agent_schema.rb +163 -0
- data/lib/empeira/configuration/agent_values.rb +54 -0
- data/lib/empeira/configuration/bootstrap_guests.rb +42 -0
- data/lib/empeira/configuration/command_mocks.rb +65 -0
- data/lib/empeira/configuration/display.rb +20 -0
- data/lib/empeira/configuration/dns_rewrites.rb +58 -0
- data/lib/empeira/configuration/document.rb +67 -0
- data/lib/empeira/configuration/eyaml.rb +46 -0
- data/lib/empeira/configuration/hiera_modulepath.rb +40 -0
- data/lib/empeira/configuration/hiera_mount_schema.rb +62 -0
- data/lib/empeira/configuration/hiera_mounts.rb +83 -0
- data/lib/empeira/configuration/image_schema.rb +68 -0
- data/lib/empeira/configuration/loader.rb +70 -0
- data/lib/empeira/configuration/merge.rb +48 -0
- data/lib/empeira/configuration/network_redirects.rb +73 -0
- data/lib/empeira/configuration/node_images.rb +64 -0
- data/lib/empeira/configuration/schema.rb +215 -0
- data/lib/empeira/configuration/server_mounts.rb +106 -0
- data/lib/empeira/configuration/service_configuration.rb +40 -0
- data/lib/empeira/configuration/ssh_preferences.rb +83 -0
- data/lib/empeira/configuration/user.rb +46 -0
- data/lib/empeira/configuration/vm_interfaces.rb +147 -0
- data/lib/empeira/control_plane/additional_configurations.rb +106 -0
- data/lib/empeira/control_plane/browser.rb +73 -0
- data/lib/empeira/control_plane/controller.rb +763 -0
- data/lib/empeira/control_plane/discovery.rb +69 -0
- data/lib/empeira/control_plane/environment.rb +101 -0
- data/lib/empeira/control_plane/files.rb +263 -0
- data/lib/empeira/control_plane/health.rb +104 -0
- data/lib/empeira/control_plane/plan.rb +356 -0
- data/lib/empeira/control_plane/storage.rb +48 -0
- data/lib/empeira/errors.rb +9 -0
- data/lib/empeira/execution/console.rb +45 -0
- data/lib/empeira/execution/diagnostics.rb +210 -0
- data/lib/empeira/execution/launch_error.rb +14 -0
- data/lib/empeira/execution/result.rb +11 -0
- data/lib/empeira/execution/runner.rb +235 -0
- data/lib/empeira/execution/terminal.rb +35 -0
- data/lib/empeira/hostname_pattern.rb +14 -0
- data/lib/empeira/images/configuration.rb +44 -0
- data/lib/empeira/images/identity.rb +30 -0
- data/lib/empeira/images/recipe.rb +22 -0
- data/lib/empeira/images/reference.rb +43 -0
- data/lib/empeira/images/source.rb +19 -0
- data/lib/empeira/immutable.rb +19 -0
- data/lib/empeira/infrastructure/cleanup.rb +328 -0
- data/lib/empeira/infrastructure/definition.rb +59 -0
- data/lib/empeira/infrastructure/owned_files.rb +63 -0
- data/lib/empeira/infrastructure/recovery_inventory.rb +53 -0
- data/lib/empeira/infrastructure/service.rb +237 -0
- data/lib/empeira/infrastructure/status.rb +73 -0
- data/lib/empeira/infrastructure/store.rb +274 -0
- data/lib/empeira/modules/events.rb +67 -0
- data/lib/empeira/modules/git_safety.rb +60 -0
- data/lib/empeira/modules/host_git.rb +91 -0
- data/lib/empeira/modules/image.rb +27 -0
- data/lib/empeira/modules/installer.rb +67 -0
- data/lib/empeira/modules/request.rb +68 -0
- data/lib/empeira/modules/state.rb +87 -0
- data/lib/empeira/modules/storage.rb +35 -0
- data/lib/empeira/network/bootstrap_proxy.rb +157 -0
- data/lib/empeira/network/definition.rb +61 -0
- data/lib/empeira/network/direct_egress.rb +133 -0
- data/lib/empeira/network/egress.rb +27 -0
- data/lib/empeira/network/gateway.rb +79 -0
- data/lib/empeira/network/host_policy.rb +53 -0
- data/lib/empeira/network/naming.rb +28 -0
- data/lib/empeira/network/peer/adapter_image.rb +32 -0
- data/lib/empeira/network/peer/allocation.rb +45 -0
- data/lib/empeira/network/peer/attachment.rb +27 -0
- data/lib/empeira/network/peer/backend.rb +108 -0
- data/lib/empeira/network/peer/channel.rb +133 -0
- data/lib/empeira/network/peer/channel_server.rb +71 -0
- data/lib/empeira/network/peer/docker_adapter.rb +165 -0
- data/lib/empeira/network/peer/helper_security.rb +40 -0
- data/lib/empeira/network/peer/layout.rb +55 -0
- data/lib/empeira/network/peer/linux_podman.rb +114 -0
- data/lib/empeira/network/peer/podman_machine.rb +112 -0
- data/lib/empeira/network/policy.rb +39 -0
- data/lib/empeira/network/proxy_bindings.rb +52 -0
- data/lib/empeira/network/proxy_policy.rb +64 -0
- data/lib/empeira/network/redirects.rb +89 -0
- data/lib/empeira/network/resource.rb +50 -0
- data/lib/empeira/node/agent_installer.rb +31 -0
- data/lib/empeira/node/agent_package.rb +125 -0
- data/lib/empeira/node/agent_repository.rb +160 -0
- data/lib/empeira/node/apt_configuration.rb +85 -0
- data/lib/empeira/node/bootstrap.rb +17 -0
- data/lib/empeira/node/certificates.rb +98 -0
- data/lib/empeira/node/command_mock.rb +38 -0
- data/lib/empeira/node/command_mocks.rb +114 -0
- data/lib/empeira/node/container.rb +134 -0
- data/lib/empeira/node/container_agent_bootstrap.rb +43 -0
- data/lib/empeira/node/container_bootstrap.rb +52 -0
- data/lib/empeira/node/container_guest.rb +42 -0
- data/lib/empeira/node/container_lifecycle.rb +145 -0
- data/lib/empeira/node/container_preparation.rb +144 -0
- data/lib/empeira/node/container_state.rb +129 -0
- data/lib/empeira/node/definition.rb +20 -0
- data/lib/empeira/node/diagnostic_command.rb +19 -0
- data/lib/empeira/node/dnf_agent_repository.rb +202 -0
- data/lib/empeira/node/external_fact.rb +21 -0
- data/lib/empeira/node/image.rb +38 -0
- data/lib/empeira/node/interactive_tools.rb +33 -0
- data/lib/empeira/node/interface.rb +18 -0
- data/lib/empeira/node/inventory.rb +143 -0
- data/lib/empeira/node/package_bootstrap.rb +129 -0
- data/lib/empeira/node/package_proxy.rb +102 -0
- data/lib/empeira/node/package_sources.rb +19 -0
- data/lib/empeira/node/puppet_command.rb +12 -0
- data/lib/empeira/node/rpm_configuration.rb +62 -0
- data/lib/empeira/node/run_request.rb +52 -0
- data/lib/empeira/node/runtime_proxy.rb +86 -0
- data/lib/empeira/node/service.rb +72 -0
- data/lib/empeira/node/ssh_client.rb +25 -0
- data/lib/empeira/node/ssh_credentials.rb +78 -0
- data/lib/empeira/node/ssh_endpoint.rb +58 -0
- data/lib/empeira/node/ssh_identity.rb +37 -0
- data/lib/empeira/node/user_ssh.rb +60 -0
- data/lib/empeira/node/vm.rb +89 -0
- data/lib/empeira/node/vm_bootstrap.rb +53 -0
- data/lib/empeira/node/vm_lifecycle.rb +212 -0
- data/lib/empeira/node/vm_preflight.rb +37 -0
- data/lib/empeira/node/vm_preparation.rb +161 -0
- data/lib/empeira/node/vm_state.rb +161 -0
- data/lib/empeira/platform/facts.rb +66 -0
- data/lib/empeira/platform/kvm.rb +91 -0
- data/lib/empeira/platform/locations.rb +51 -0
- data/lib/empeira/platform/resolvers.rb +85 -0
- data/lib/empeira/platform/routes.rb +50 -0
- data/lib/empeira/progress.rb +70 -0
- data/lib/empeira/project_root.rb +47 -0
- data/lib/empeira/providers/lifecycle.rb +96 -0
- data/lib/empeira/providers/registry.rb +21 -0
- data/lib/empeira/providers/resource.rb +32 -0
- data/lib/empeira/providers.rb +55 -0
- data/lib/empeira/runtime/agent_helper.rb +34 -0
- data/lib/empeira/runtime/container.rb +184 -0
- data/lib/empeira/runtime/diagnostic_execution.rb +52 -0
- data/lib/empeira/runtime/docker.rb +87 -0
- data/lib/empeira/runtime/image_metadata.rb +83 -0
- data/lib/empeira/runtime/interface.rb +8 -0
- data/lib/empeira/runtime/mount_probe.rb +57 -0
- data/lib/empeira/runtime/podman.rb +122 -0
- data/lib/empeira/runtime/recipe_build.rb +103 -0
- data/lib/empeira/runtime/registry_diagnostics.rb +23 -0
- data/lib/empeira/runtime/service_arguments.rb +55 -0
- data/lib/empeira/runtime/service_images.rb +118 -0
- data/lib/empeira/runtime/service_inspection.rb +159 -0
- data/lib/empeira/runtime/services.rb +120 -0
- data/lib/empeira/runtime/update_helper.rb +97 -0
- data/lib/empeira/runtime/workspace_network.rb +69 -0
- data/lib/empeira/server/environment_configuration.rb +53 -0
- data/lib/empeira/server/http.rb +38 -0
- data/lib/empeira/server/puppetdb_runtime.rb +74 -0
- data/lib/empeira/server/relay_certificate.rb +76 -0
- data/lib/empeira/server/runtime.rb +90 -0
- data/lib/empeira/services/definition.rb +42 -0
- data/lib/empeira/updates/images.rb +104 -0
- data/lib/empeira/updates/modules.rb +45 -0
- data/lib/empeira/updates/service.rb +45 -0
- data/lib/empeira/version_requirement.rb +23 -0
- data/lib/empeira/vm/agent.rb +66 -0
- data/lib/empeira/vm/bootstrap_requirements.rb +69 -0
- data/lib/empeira/vm/certificate_runtime.rb +30 -0
- data/lib/empeira/vm/cloud_init.rb +171 -0
- data/lib/empeira/vm/disk.rb +136 -0
- data/lib/empeira/vm/guest.rb +123 -0
- data/lib/empeira/vm/guest_channel.rb +110 -0
- data/lib/empeira/vm/guest_network.rb +94 -0
- data/lib/empeira/vm/guest_output.rb +52 -0
- data/lib/empeira/vm/guest_shell.rb +79 -0
- data/lib/empeira/vm/guest_upload.rb +43 -0
- data/lib/empeira/vm/image_cache.rb +77 -0
- data/lib/empeira/vm/image_source.rb +91 -0
- data/lib/empeira/vm/interface.rb +8 -0
- data/lib/empeira/vm/interface_ownership.rb +124 -0
- data/lib/empeira/vm/interface_routes.rb +101 -0
- data/lib/empeira/vm/interfaces.rb +240 -0
- data/lib/empeira/vm/management.rb +73 -0
- data/lib/empeira/vm/prerequisites.rb +42 -0
- data/lib/empeira/vm/qemu.rb +83 -0
- data/lib/empeira/vm/qemu_runtime.rb +404 -0
- data/lib/empeira/vm/removal.rb +30 -0
- data/lib/empeira/vm/root_disk.rb +92 -0
- data/lib/empeira/vm/session_lock.rb +56 -0
- data/lib/empeira/vm/system_ssh.rb +29 -0
- data/lib/empeira/workspace.rb +42 -0
- data/lib/empeira.rb +209 -0
- data/resources/browser/relay.rb +22 -0
- data/resources/gateway/Containerfile +8 -0
- data/resources/gateway/bridge.rb +66 -0
- data/resources/gateway/configure.rb +323 -0
- data/resources/modules/Containerfile +15 -0
- data/resources/modules/Gemfile +5 -0
- data/resources/modules/Gemfile.lock +105 -0
- data/resources/modules/worker.rb +161 -0
- data/resources/network/adapter/Containerfile +13 -0
- data/resources/network/adapter/bridge_linux.go +51 -0
- data/resources/network/adapter/framing.go +45 -0
- data/resources/network/adapter/framing_test.go +53 -0
- data/resources/network/adapter/go.mod +3 -0
- data/resources/network/adapter/main_linux.go +273 -0
- data/resources/network/channel.rb +18 -0
- data/resources/network/ssh_connect.rb +32 -0
- data/resources/nodes/apt_sources.rb +66 -0
- data/resources/nodes/debian/Containerfile +10 -0
- data/resources/nodes/diagnostic_exec.rb +109 -0
- data/resources/nodes/interactive_tools.rb +139 -0
- data/resources/nodes/managed_file.rb +91 -0
- data/resources/nodes/management/guest_agent.py +415 -0
- data/resources/nodes/management/setup.sh +20 -0
- data/resources/nodes/management/shell_rc.sh +12 -0
- data/resources/nodes/management/system_account.sh +24 -0
- data/resources/nodes/management/system_home.sh +15 -0
- data/resources/nodes/rpm/Containerfile +10 -0
- data/resources/nodes/runtime_proxy.rb +244 -0
- data/resources/nodes/ssh/proxy.rb +16 -0
- data/resources/nodes/ssh/sshd_config +15 -0
- data/resources/nodes/ssh/start +6 -0
- data/resources/proxy/Containerfile +10 -0
- data/resources/relay/Containerfile +5 -0
- data/resources/relay/puppetdb.rb +81 -0
- data/resources/relay/server_environment.rb +10 -0
- data/resources/relay/server_start.sh +41 -0
- metadata +326 -0
data/README.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# empeira
|
|
2
|
+
|
|
3
|
+
**Ephemeral Manifest Playground for Exploring Infrastructure, Roles & Automation**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/c8m6/empeira/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/c8m6/empeira/actions/workflows/openvox.yml)
|
|
7
|
+
[](https://github.com/c8m6/empeira/releases)
|
|
8
|
+
[](docs/installation.md)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
|
|
11
|
+
**ἐμπειρία (empeiría)** — experience gained through practice. The name reflects
|
|
12
|
+
learning about infrastructure by experimenting, testing and seeing what happens.
|
|
13
|
+
|
|
14
|
+
empeira gives your local Puppet control repository a disposable, isolated lab with
|
|
15
|
+
real agents, catalogs, Hiera and PuppetDB. Test infrastructure changes against an
|
|
16
|
+
OpenVox environment without connecting to production infrastructure.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
## Edit. Save. Test.
|
|
21
|
+
|
|
22
|
+
**No Git push. No deployment.**
|
|
23
|
+
|
|
24
|
+
Edit your manifests, roles, modules or Hiera data locally. empeira works directly
|
|
25
|
+
with your development files, so there is no need to commit, push or deploy changes
|
|
26
|
+
before testing them. Run `empeira node puppet host1` on a disposable node to compile
|
|
27
|
+
a fresh catalog, apply it and see the results.
|
|
28
|
+
|
|
29
|
+
Saving a file does not start Puppet. Managed servers disable environment caching,
|
|
30
|
+
so the next catalog request reloads live code without a content scan or cache API call. Puppetfile changes
|
|
31
|
+
may require `empeira update modules`; `up` does not synchronize modules. See
|
|
32
|
+
[environment caching](docs/nodes.md#environment-cache-and-live-code) and
|
|
33
|
+
[Puppetfile modules](docs/hiera-and-eyaml.md#puppetfile-modules).
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
OpenVox Server, OpenVoxDB, PostgreSQL and OpenVox Agent are the defaults. Server and
|
|
38
|
+
database OCI images are independently replaceable; agent packages, versions and
|
|
39
|
+
signed repositories or verified package artifacts are selected separately.
|
|
40
|
+
|
|
41
|
+
- Docker or rootless Podman container nodes; accelerated QEMU VM nodes.
|
|
42
|
+
- A workspace CA, certificate enrollment, live control code and Hiera/EYAML mounts.
|
|
43
|
+
- Shared DNS and container/VM networking, isolated by default.
|
|
44
|
+
- Allowlisted HTTP/HTTPS proxy access and explicit TCP egress rules.
|
|
45
|
+
- Node stop/start/destroy, direct shell access and real SSH.
|
|
46
|
+
- An internal Chromium desktop and small additional infrastructure services.
|
|
47
|
+
- Explicit Puppetfile module and image updates.
|
|
48
|
+
|
|
49
|
+
Hosts: Linux, macOS and Windows through WSL2/Linux. Ruby 3.4 is the minimum;
|
|
50
|
+
Ruby 3.4 and 4.0 are supported; CI runs deterministic tests with both versions.
|
|
51
|
+
Podman with Netavark is the default; Docker requires a Linux engine 28+ with
|
|
52
|
+
isolated bridge support. VMs require usable KVM or HVF. Platform setup and
|
|
53
|
+
validation limits are in [installation](docs/installation.md).
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
Until a release is available, install from source with Ruby, Bundler and Git:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git clone https://github.com/c8m6/empeira.git
|
|
61
|
+
cd empeira
|
|
62
|
+
bundle install
|
|
63
|
+
export EMPEIRA_SOURCE="$PWD"
|
|
64
|
+
empeira() { BUNDLE_GEMFILE="$EMPEIRA_SOURCE/Gemfile" bundle exec ruby "$EMPEIRA_SOURCE/bin/empeira" "$@"; }
|
|
65
|
+
empeira --version
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The function lets you invoke the source CLI from your control repository. See
|
|
69
|
+
[installation](docs/installation.md) for runtime prerequisites, release-gem
|
|
70
|
+
installation and Bash completion.
|
|
71
|
+
|
|
72
|
+
## Quickstart
|
|
73
|
+
|
|
74
|
+
Use a dedicated Git control repository and an empty configuration marker:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cd ..
|
|
78
|
+
mkdir control-repo
|
|
79
|
+
cd control-repo
|
|
80
|
+
git init
|
|
81
|
+
touch .empeira.yaml
|
|
82
|
+
mkdir -p manifests
|
|
83
|
+
printf "file { '/tmp/empeira-example': content => 'managed by Puppet\n' }\n" > manifests/site.pp
|
|
84
|
+
|
|
85
|
+
empeira config validate
|
|
86
|
+
empeira up
|
|
87
|
+
empeira node run host1
|
|
88
|
+
empeira node puppet host1
|
|
89
|
+
empeira node exec host1 -- id
|
|
90
|
+
empeira node shell host1
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`node run` creates an Ubuntu 24.04 container, installs the default OpenVox Agent,
|
|
94
|
+
enrolls its certificate and applies the catalog. Inside the shell, inspect
|
|
95
|
+
`/tmp/empeira-example`; `exit` returns to the host. Select Docker with
|
|
96
|
+
`--container-engine docker` when Podman is not installed. Optional workstation
|
|
97
|
+
preferences can set that runtime in `~/.empeira.yaml`.
|
|
98
|
+
|
|
99
|
+
After editing your control code, run `empeira node puppet host1` again. If the
|
|
100
|
+
repository uses a Puppetfile, run `empeira update modules` before `up`.
|
|
101
|
+
|
|
102
|
+
```console
|
|
103
|
+
empeira status
|
|
104
|
+
empeira node list
|
|
105
|
+
empeira browser
|
|
106
|
+
empeira node destroy host1
|
|
107
|
+
empeira destroy
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`destroy` permanently removes the workspace's owned nodes, CA and database data.
|
|
111
|
+
The control repository, module directory and shared image caches are preserved.
|
|
112
|
+
Destroy works independently of release requirements and guest management versions.
|
|
113
|
+
Use `destroy --project-path <former-absolute-git-root>` when the control repository no longer exists.
|
|
114
|
+
`node shell` opens a root terminal; `node console` keeps the VM serial login separate.
|
|
115
|
+
See [diagnostic access and recovery](docs/nodes.md#root-diagnostic-commands-and-interactive-shell).
|
|
116
|
+
|
|
117
|
+
## Documentation
|
|
118
|
+
|
|
119
|
+
- [Configuration](docs/configuration.md): defaults, software selection and overrides.
|
|
120
|
+
- [Standalone addons](docs/addons.md): Git-based helper programs, manifests and environment API.
|
|
121
|
+
- [Nodes](docs/nodes.md): lifecycle, shell/SSH, VM images and bootstrap.
|
|
122
|
+
- [Hiera and EYAML](docs/hiera-and-eyaml.md): local data mounts and Puppetfile modules.
|
|
123
|
+
- [Networking](docs/networking.md) and [proxy policy](docs/proxy.md).
|
|
124
|
+
- [Troubleshooting](docs/troubleshooting.md).
|
|
125
|
+
- [Architecture](docs/architecture.md) and [development](docs/development.md).
|
|
126
|
+
|
|
127
|
+
## Alpha status
|
|
128
|
+
|
|
129
|
+
empeira is being prepared for its first public alpha. Interfaces and inventory
|
|
130
|
+
schemas may change; unsupported inventory fails closed without automatic migration.
|
|
131
|
+
Use synthetic control code and disposable credentials. The shared network is a
|
|
132
|
+
cooperative lab, and its internal PuppetDB API is unauthenticated.
|
|
133
|
+
|
|
134
|
+
Container process mode does not provide a full booted OS. Systemd requires Podman
|
|
135
|
+
and cgroup v2. VM and shared-network support require actual host capabilities;
|
|
136
|
+
macOS/HVF and arm64 runtime validation are manual gates. Native Windows, automatic
|
|
137
|
+
self-update, aggregate `update all` and standalone platform binaries are unavailable.
|
|
138
|
+
The initial release distribution is a Ruby gem.
|
|
139
|
+
|
|
140
|
+
## Community and license
|
|
141
|
+
|
|
142
|
+
[Contributions](CONTRIBUTING.md), [issues](https://github.com/c8m6/empeira/issues)
|
|
143
|
+
and [pull requests](https://github.com/c8m6/empeira/pulls) are welcome. Follow the
|
|
144
|
+
[code of conduct](CODE_OF_CONDUCT.md) and report vulnerabilities through the
|
|
145
|
+
[security policy](SECURITY.md).
|
|
146
|
+
|
|
147
|
+
Project-owned code and documentation are licensed under
|
|
148
|
+
[AGPL-3.0-only](LICENSE). Third-party packages and images retain their own licenses
|
|
149
|
+
and notices and are obtained from upstream; empeira does not bundle them or
|
|
150
|
+
redistribute proprietary Puppet Enterprise software.
|
data/bin/empeira
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative '../lib/empeira'
|
|
5
|
+
require_relative '../lib/empeira/cli/main'
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
Empeira::CLI::Main.start(ARGV)
|
|
9
|
+
rescue Empeira::Addons::Error => e
|
|
10
|
+
$stderr.write "#{e.message}\n"
|
|
11
|
+
exit e.exit_status
|
|
12
|
+
rescue Empeira::Error => e
|
|
13
|
+
# CLI errors must remain visible even when Ruby warnings are disabled.
|
|
14
|
+
$stderr.write "Error: #{e.message}\n"
|
|
15
|
+
exit 1
|
|
16
|
+
rescue Interrupt
|
|
17
|
+
exit 130
|
|
18
|
+
end
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
|
|
3
|
+
# Standalone Git addons; no addon code runs during synchronization or completion.
|
|
4
|
+
addons: {}
|
|
5
|
+
mocks:
|
|
6
|
+
commands: {}
|
|
7
|
+
requirements:
|
|
8
|
+
empeira: null
|
|
9
|
+
runtime:
|
|
10
|
+
container_engine: podman
|
|
11
|
+
modules:
|
|
12
|
+
path: modules
|
|
13
|
+
server:
|
|
14
|
+
mounts: []
|
|
15
|
+
runtime:
|
|
16
|
+
startup:
|
|
17
|
+
entrypoint: /container-entrypoint.sh
|
|
18
|
+
arguments: [foreground]
|
|
19
|
+
eyaml_keys: direct
|
|
20
|
+
paths:
|
|
21
|
+
puppetdb_config: /etc/puppetlabs/puppet/puppetdb.conf
|
|
22
|
+
environment_keys:
|
|
23
|
+
certname: CERTNAME
|
|
24
|
+
dns_alt_names: DNS_ALT_NAMES
|
|
25
|
+
ca_hostname: CA_HOSTNAME
|
|
26
|
+
autosign: AUTOSIGN
|
|
27
|
+
server_hostname: OPENVOXSERVER_HOSTNAME
|
|
28
|
+
environment_timeout: OPENVOXSERVER_ENVIRONMENT_TIMEOUT
|
|
29
|
+
java_args: OPENVOXSERVER_JAVA_ARGS
|
|
30
|
+
max_active_instances: OPENVOXSERVER_MAX_ACTIVE_INSTANCES
|
|
31
|
+
puppetdb_enabled: USE_OPENVOXDB
|
|
32
|
+
storeconfigs: OPENVOX_STORECONFIGS
|
|
33
|
+
reports: OPENVOX_REPORTS
|
|
34
|
+
puppetdb_server_urls: OPENVOXDB_SERVER_URLS
|
|
35
|
+
environment: production
|
|
36
|
+
memory: 1536
|
|
37
|
+
cpus: 2
|
|
38
|
+
timeout: 240
|
|
39
|
+
puppetdb:
|
|
40
|
+
enabled: true
|
|
41
|
+
memory: 768
|
|
42
|
+
runtime:
|
|
43
|
+
entrypoint: /usr/bin/java
|
|
44
|
+
user: '0'
|
|
45
|
+
java_arguments: [-Xms128m, -Xmx256m, -Dlogappender=STDOUT]
|
|
46
|
+
main_arguments: [clojure.main, -m, puppetlabs.puppetdb.cli.services]
|
|
47
|
+
paths:
|
|
48
|
+
jar: /opt/puppetlabs/server/apps/puppetdb/puppetdb.jar
|
|
49
|
+
config: /etc/puppetlabs/puppetdb/conf.d
|
|
50
|
+
bootstrap_config: /etc/puppetlabs/puppetdb/bootstrap.cfg
|
|
51
|
+
data: /opt/puppetlabs/server/data/puppetdb
|
|
52
|
+
network:
|
|
53
|
+
egress: []
|
|
54
|
+
redirects: []
|
|
55
|
+
proxy:
|
|
56
|
+
enabled: false
|
|
57
|
+
global: []
|
|
58
|
+
rules: []
|
|
59
|
+
vm:
|
|
60
|
+
disk: 30
|
|
61
|
+
interfaces: []
|
|
62
|
+
console:
|
|
63
|
+
root_password: empeira
|
|
64
|
+
dns:
|
|
65
|
+
upstream:
|
|
66
|
+
mode: host
|
|
67
|
+
servers: []
|
|
68
|
+
additional_resolver: null
|
|
69
|
+
rewrites: []
|
|
70
|
+
node_defaults:
|
|
71
|
+
os: ubuntu
|
|
72
|
+
version: "24.04"
|
|
73
|
+
init: process
|
|
74
|
+
memory: 1024
|
|
75
|
+
cpus: 2
|
|
76
|
+
hiera:
|
|
77
|
+
mounts: []
|
|
78
|
+
eyaml:
|
|
79
|
+
enabled: false
|
|
80
|
+
private_key: null
|
|
81
|
+
public_key: null
|
|
82
|
+
images:
|
|
83
|
+
registry: null
|
|
84
|
+
network_adapter_builder:
|
|
85
|
+
repository: library/golang
|
|
86
|
+
tag: 1.27.1-alpine3.24
|
|
87
|
+
server:
|
|
88
|
+
repository: ghcr.io/openvoxproject/openvoxserver
|
|
89
|
+
tag: "8.16.0"
|
|
90
|
+
digest: "sha256:17902772813778ed8dabb08b83eec2ddce09e799a993e2ec01a46b5cb7994bd8"
|
|
91
|
+
puppetdb:
|
|
92
|
+
repository: ghcr.io/openvoxproject/openvoxdb
|
|
93
|
+
tag: "8.15.0"
|
|
94
|
+
digest: "sha256:a5e1c400a23392ac772abf27f0312032052c0a296628a7785eb3c3904ef44b5d"
|
|
95
|
+
postgres:
|
|
96
|
+
repository: library/postgres
|
|
97
|
+
tag: "16.13-alpine"
|
|
98
|
+
digest: "sha256:4e6e670bb069649261c9c18031f0aded7bb249a5b6664ddec29c013a89310d50"
|
|
99
|
+
dns:
|
|
100
|
+
repository: coredns/coredns
|
|
101
|
+
tag: "1.14.7"
|
|
102
|
+
r10k:
|
|
103
|
+
build: modules/Containerfile
|
|
104
|
+
relay:
|
|
105
|
+
build: relay/Containerfile
|
|
106
|
+
proxy:
|
|
107
|
+
build: proxy/Containerfile
|
|
108
|
+
direct_egress:
|
|
109
|
+
build: gateway/Containerfile
|
|
110
|
+
nodes:
|
|
111
|
+
ubuntu:
|
|
112
|
+
"22.04":
|
|
113
|
+
repository: library/ubuntu
|
|
114
|
+
tag: "22.04"
|
|
115
|
+
build: nodes/debian/Containerfile
|
|
116
|
+
architectures: [amd64, arm64]
|
|
117
|
+
"24.04":
|
|
118
|
+
repository: library/ubuntu
|
|
119
|
+
tag: "24.04"
|
|
120
|
+
build: nodes/debian/Containerfile
|
|
121
|
+
architectures: [amd64, arm64]
|
|
122
|
+
rocky:
|
|
123
|
+
"8":
|
|
124
|
+
repository: rockylinux/rockylinux
|
|
125
|
+
tag: "8"
|
|
126
|
+
build: nodes/rpm/Containerfile
|
|
127
|
+
architectures: [amd64, arm64]
|
|
128
|
+
"9":
|
|
129
|
+
repository: rockylinux/rockylinux
|
|
130
|
+
tag: "9"
|
|
131
|
+
build: nodes/rpm/Containerfile
|
|
132
|
+
architectures: [amd64, arm64]
|
|
133
|
+
almalinux:
|
|
134
|
+
"8":
|
|
135
|
+
repository: library/almalinux
|
|
136
|
+
tag: "8"
|
|
137
|
+
build: nodes/rpm/Containerfile
|
|
138
|
+
architectures: [amd64, arm64]
|
|
139
|
+
"9":
|
|
140
|
+
repository: library/almalinux
|
|
141
|
+
tag: "9"
|
|
142
|
+
build: nodes/rpm/Containerfile
|
|
143
|
+
architectures: [amd64, arm64]
|
|
144
|
+
oraclelinux:
|
|
145
|
+
"8":
|
|
146
|
+
repository: library/oraclelinux
|
|
147
|
+
tag: "8"
|
|
148
|
+
build: nodes/rpm/Containerfile
|
|
149
|
+
architectures: [amd64, arm64]
|
|
150
|
+
agent:
|
|
151
|
+
cache:
|
|
152
|
+
enabled: true
|
|
153
|
+
package: openvox-agent
|
|
154
|
+
version: "8.29.0"
|
|
155
|
+
install:
|
|
156
|
+
method: repository
|
|
157
|
+
repositories:
|
|
158
|
+
ubuntu22.04:
|
|
159
|
+
url: "https://apt.voxpupuli.org/openvox8-release-ubuntu22.04.deb"
|
|
160
|
+
destinations: [apt.voxpupuli.org]
|
|
161
|
+
sha256: "fb23fa5bcbea3608384ae40cf9a7f705485353c3d81c5dc69f6a4d6e2c94b389"
|
|
162
|
+
suffix: "-1+ubuntu22.04"
|
|
163
|
+
ubuntu24.04:
|
|
164
|
+
url: "https://apt.voxpupuli.org/openvox8-release-ubuntu24.04.deb"
|
|
165
|
+
destinations: [apt.voxpupuli.org]
|
|
166
|
+
sha256: "40b8052bcece23ed707e609504dd14b178dc662652455f2d30e9c8e614955a94"
|
|
167
|
+
suffix: "-1+ubuntu24.04"
|
|
168
|
+
el8:
|
|
169
|
+
url: "https://yum.voxpupuli.org/openvox8-release-el-8.noarch.rpm"
|
|
170
|
+
destinations: [yum.voxpupuli.org]
|
|
171
|
+
sha256: "21ae739f60bdf9f3710ee3f894bf750140b85b3804110641a88561d2d2fdeff3"
|
|
172
|
+
suffix: "-1.el8"
|
|
173
|
+
el9:
|
|
174
|
+
url: "https://yum.voxpupuli.org/openvox8-release-el-9.noarch.rpm"
|
|
175
|
+
destinations: [yum.voxpupuli.org]
|
|
176
|
+
sha256: "ad1a18ce2634cb3a7a5bf3bc5cc3b0d0dbb8cb4411872f2f326d948004a1772b"
|
|
177
|
+
suffix: "-1.el9"
|
|
178
|
+
apt: {}
|
|
179
|
+
dnf: {}
|
|
180
|
+
packages: {}
|
|
181
|
+
bootstrap:
|
|
182
|
+
enabled: false
|
|
183
|
+
scripts: []
|
|
184
|
+
packages:
|
|
185
|
+
install:
|
|
186
|
+
default: []
|
|
187
|
+
debian: []
|
|
188
|
+
redhat: []
|
|
189
|
+
remove:
|
|
190
|
+
default: []
|
|
191
|
+
debian: []
|
|
192
|
+
redhat: []
|
|
193
|
+
guests:
|
|
194
|
+
ubuntu:
|
|
195
|
+
"22.04":
|
|
196
|
+
agent_preinstalled: false
|
|
197
|
+
destinations: [archive.ubuntu.com, security.ubuntu.com, ports.ubuntu.com]
|
|
198
|
+
"24.04":
|
|
199
|
+
agent_preinstalled: false
|
|
200
|
+
destinations: [archive.ubuntu.com, security.ubuntu.com, ports.ubuntu.com]
|
|
201
|
+
rocky:
|
|
202
|
+
"8":
|
|
203
|
+
agent_preinstalled: false
|
|
204
|
+
destinations: [dl.rockylinux.org]
|
|
205
|
+
baseurl: "https://dl.rockylinux.org/pub/rocky/8"
|
|
206
|
+
"9":
|
|
207
|
+
agent_preinstalled: false
|
|
208
|
+
destinations: [dl.rockylinux.org]
|
|
209
|
+
baseurl: "https://dl.rockylinux.org/pub/rocky/9"
|
|
210
|
+
almalinux:
|
|
211
|
+
"8":
|
|
212
|
+
agent_preinstalled: false
|
|
213
|
+
destinations: [repo.almalinux.org]
|
|
214
|
+
baseurl: "https://repo.almalinux.org/almalinux/8"
|
|
215
|
+
"9":
|
|
216
|
+
agent_preinstalled: false
|
|
217
|
+
destinations: [repo.almalinux.org]
|
|
218
|
+
baseurl: "https://repo.almalinux.org/almalinux/9"
|
|
219
|
+
oraclelinux:
|
|
220
|
+
"8":
|
|
221
|
+
agent_preinstalled: false
|
|
222
|
+
destinations: [yum.oracle.com]
|
|
223
|
+
browser:
|
|
224
|
+
start_url: "about:blank"
|
|
225
|
+
image:
|
|
226
|
+
repository: linuxserver/chromium
|
|
227
|
+
tag: "latest"
|
|
228
|
+
containers:
|
|
229
|
+
additional: []
|