Infrastructure-as-code for ephemeral AWS ParallelCluster environments for bioinformatics
Project description
Daylily Ephemeral Cluster
Daylily stands up a short-lived AWS ParallelCluster, finishes the headnode configuration after pcluster itself reports success, gives the operator a validated Session Manager login shell as ubuntu, stages laptop-side inputs into the FSx-backed data plane, launches the workflow repo in tmux, exports results back to the backing S3 repository, and then tears the cluster down when the run is complete.
The bucket is durable. The cluster is ephemeral. Export before delete.
Supported Operator Contract
The supported path is:
source ./activatedaylily-ec preflightdaylily-ec createbin/daylily-ssh-into-headnodebin/daylily-stage-samples-from-local-to-headnodebin/daylily-run-omics-analysis-headnodedaylily-ec export --target-uri analysis_results/ubuntudaylily-ec delete
Supported remote access is AWS Systems Manager Session Manager landing directly in the ubuntu login shell. The repo hard-checks the Session Manager document and the effective remote user before supported command payloads run.
A cluster is not "ready" when CloudFormation or ParallelCluster first says the infrastructure exists. The supported readiness point is when
daylily-ec createreturns successfully after the post-create headnode configuration and bootstrap validation steps complete.
One Copy-Pasteable Lifecycle
source ./activate
export AWS_PROFILE=daylily-service-lsmc
export REGION=us-west-2
export REGION_AZ=us-west-2d
export CLUSTER_NAME=day-demo-$(date +%Y%m%d%H%M%S)
export DAY_EX_CFG="$HOME/.config/daylily/daylily_ephemeral_cluster.yaml"
export REF_BUCKET=s3://lsmc-dayoa-omics-analysis-us-west-2
export ANALYSIS_SAMPLES=etc/analysis_samples_template.tsv
export STAGE_CFG_DIR="$PWD/tmp-stage-config/$CLUSTER_NAME"
export EXPORT_DIR="$PWD/tmp-export/$CLUSTER_NAME"
daylily-ec preflight \
--profile "$AWS_PROFILE" \
--region-az "$REGION_AZ" \
--config "$DAY_EX_CFG"
daylily-ec create \
--profile "$AWS_PROFILE" \
--region-az "$REGION_AZ" \
--config "$DAY_EX_CFG"
bin/daylily-ssh-into-headnode \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME"
bin/daylily-stage-samples-from-local-to-headnode \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--reference-bucket "$REF_BUCKET" \
--config-dir "$STAGE_CFG_DIR" \
"$ANALYSIS_SAMPLES"
# Use the "Remote FSx stage directory" printed by the staging helper.
bin/daylily-run-omics-analysis-headnode \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--stage-dir "/fsx/data/staged_sample_data/remote_stage_<timestamp>" \
--destination dayoa \
--aligners sent \
--dedupers dppl \
--snv-callers sentd
daylily-ec export \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster-name "$CLUSTER_NAME" \
--target-uri analysis_results/ubuntu \
--output-dir "$EXPORT_DIR"
cat "$EXPORT_DIR/fsx_export.yaml"
daylily-ec delete \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster-name "$CLUSTER_NAME"
fsx_export.yaml is the machine-readable export receipt. A successful run writes status: success and the resolved S3 destination.
Architecture At A Glance
daylily-ecis the control-plane CLI. It handles preflight, create, cluster inspection, export, delete, environment introspection, runtime checks, and pricing snapshots.- The create flow renders the cluster configuration, calls ParallelCluster, then runs Daylily headnode configuration over Session Manager.
- The durable data plane is the S3 bucket plus the FSx for Lustre filesystem attached to the cluster. Laptop-side staging writes into the bucket-backed FSx namespace.
- The supported connect path is
bin/daylily-ssh-into-headnode. The name is historical; the behavior is Session Manager into theubuntulogin shell. - Workflow launch happens from the operator machine through
bin/daylily-run-omics-analysis-headnode, which creates a run directory at/home/ubuntu/daylily-runs/<session>/, writeslaunch.sh,tmux.log, andstatus.json, and starts the run inside tmux. - Export uses the FSx data repository task API and writes
fsx_export.yamllocally so the operator has a concrete export receipt before teardown.
What This Repo Ships
environment.yamlpluspyproject.toml: theDAY-ECenvironment contractactivate: checkout bootstrap that creates or repairsDAY-EC, installs the repo editable with dev extras, and validates the local toolchainbin/daylily-ssh-into-headnode: interactive Session Manager shell launcher withubuntu-only validationbin/daylily-stage-samples-from-local-to-headnode: translator and staging helper that turnsanalysis_samples.tsvinto workflow-readysamples.tsvandunits.tsvbin/daylily-run-omics-analysis-headnode: remote launcher that creates the run-state directory and starts the workflowbin/daylily-cfg-headnode: explicit headnode configuration helper for repair or manual rerunsdaylily_ec/ssh_to_ssm_e2e_runner.py: AWS-backed end-to-end runner that exercises the supported lifecycle through the repo CLI/helpers
AWS And Local Prerequisites
At minimum, the operator account needs:
- a working named AWS profile
- permission for STS identity lookup, IAM inspection/bootstrap, Service Quotas reads, S3 bucket discovery/access, EC2/VPC inspection, FSx, SSM, and ParallelCluster operations
- a reference bucket in the target region that will back the cluster FSx filesystem
- Session Manager document
SSM-SessionManagerRunShellconfigured to run shell sessions asubuntuand source a login shell - enough regional quota for the requested cluster shape
Local toolchain for the supported path:
- Conda
daylily-ecawspclustersession-manager-pluginjq,yq,rclone,node, and the rest of theDAY-ECConda layer
If any of this is missing, cluster creation will fail in annoying ways. Run daylily-ec preflight first and read the failures instead of guessing.
Cost, Time, And Failure Notes
daylily-ec createcan take a long time. The ParallelCluster build alone can take tens of minutes, and Daylily still has headnode bootstrap work to finish after that.- The cluster is disposable; the export target is not. Do not delete until you have checked
fsx_export.yaml. - The supported remote user is
ubuntu. Any path that would land you as another user is a defect, not a supported fallback. - Session Manager misconfiguration is a hard stop. The repo does not tell operators to connect first and then switch users manually.
Read This Next
- docs/ultra_rapid_start.md: the shortest happy path
- docs/quickest_start.md: a guided walkthrough with sanity checks
- docs/operations.md: connect, stage, run, monitor, export, and delete
- docs/aws_setup.md: AWS prerequisites, IAM expectations, quotas, and Session Manager requirements
- docs/cli_reference.md: command reference grounded in current
--helpoutput - docs/testing_and_debugging.md: test commands, E2E runner usage, and failure triage
- docs/monitoring_and_troubleshooting.md: runtime and operational debugging
- docs/DAY_EC_ENVIRONMENT.md:
DAY-ECcheckout environment contract - docs/pip_install.md: pip-install path and external prerequisites
- docs/archive/README.md: historical material, pre-rewrite snapshot, and unsupported legacy appendix
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daylily_ephemeral_cluster-2.0.1.tar.gz.
File metadata
- Download URL: daylily_ephemeral_cluster-2.0.1.tar.gz
- Upload date:
- Size: 31.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e893048ef12d20fc30d3fb939be599e7214841fea8bb9fe6c07a15a65ea33aca
|
|
| MD5 |
3041a6faa2ec9204fd2c9ccde75f13f1
|
|
| BLAKE2b-256 |
d7be2ead113d42901489d601e5e6f8472f132c5f2102a01eb3eb83758f7f9a8c
|
File details
Details for the file daylily_ephemeral_cluster-2.0.1-py3-none-any.whl.
File metadata
- Download URL: daylily_ephemeral_cluster-2.0.1-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26bde8b136c1fce7ca836cd2ec812372078e670d2ed405f724fdd96e09a1e762
|
|
| MD5 |
7117796287d943907e3a025eeda1deb1
|
|
| BLAKE2b-256 |
0d89407eb07f00a1131c165594dfa487497cce40cde320e93baa7c66e5d83e9a
|