Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/m-lab/epoxy
A system for safe boot management over the Internet, based on iPXE.
https://github.com/m-lab/epoxy
platform
Last synced: about 1 month ago
JSON representation
A system for safe boot management over the Internet, based on iPXE.
- Host: GitHub
- URL: https://github.com/m-lab/epoxy
- Owner: m-lab
- License: apache-2.0
- Created: 2015-10-19T13:58:48.000Z (about 9 years ago)
- Default Branch: main
- Last Pushed: 2024-06-23T06:53:46.000Z (6 months ago)
- Last Synced: 2024-10-29T16:12:24.845Z (about 2 months ago)
- Topics: platform
- Language: Go
- Size: 337 KB
- Stars: 3
- Watchers: 10
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
# ePoxy
A system for safe boot management over the Internet.
## Building
To build the ePoxy boot server:
go get github.com/m-lab/epoxy/cmd/epoxy_boot_server
## Deployment
The ePoxy server is designed to run from within a docker container. The M-Lab
deployment targets a stand-alone GCE VM. The cloudbuild.yaml configuration
embeds static zones for specific regional deployments for each GCP project.Before deploying to a new Project complete the following steps in advance:
* Allocate static IP address and register DNS
PROJECT=mlab-sandbox ZONE=us-east1-c setup_epoxy_dns.sh
* Allocate server certificte and key
TODO: add steps to allocate server certs.
* Create GCS bucket `gs://epoxy-${PROJECT}-private` and copy server certificate
& key.gsutil mb -p mlab-sandbox gs://epoxy-mlab-sandbox-private
gsutil cp server-certs.pem server-key.pem gs://epoxy-mlab-sandbox-private## Testing
### Testing Server
The datastore emulator depends on the [Google Cloud
SDK](https://cloud.google.com/sdk/downloads). After installing `gcloud`,
install the datastore emulator component:gcloud components install cloud-datastore-emulator
Next, start the datastore emulator:
gcloud beta emulators datastore start
Look for the `DATASTORE_EMULATOR_HOST` reported on stdout. This environment
variable should be set for all subsequent commands.Add a sample Host record to the Datastore emulator:
TODO(soltesz): create command to add a minimal host record directly to DS.
Start the epoxy server:
export DATASTORE_EMULATOR_HOST=< ... >
export PUBLIC_ADDRESS=localhost:8080
export GCLOUD_PROJECT="my-project"
./bin/epoxy_boot_serverThe ePoxy server is now connected to the local datastore emulator, and can
serve client requests.### Testing Client
After starting the datastore emuulator and a local epoxy boot server, you can
simulate a client request using `curl`.SERVER=localhost:8080
curl --dump-header - --location -XPOST --data-binary "{}" \
https://${SERVER}/v1/boot/mlab4.iad1t.measurement-lab.org/stage1.ipxeIf the host record is found in Datastore, then a stage1 boot script should be
returned. If the host record is not found, then:TODO(soltesz): handle 404 cases with a valid ipxe script.
If developing with the mlab-sandbox GCP, then verify that the deployment was
successful through travis and the AppEngine Cloud Console. Then set the SERVER
address for the boot-api service. For example, for mlab-sandbox, use:SERVER=boot-api-dot-mlab-sandbox.appspot.com