Skip to content

Make build infra‑agnostic: update README, add Packer examples, improve build playbook and docs#1

Open
Mitchob wants to merge 27 commits intoAustralianBioCommons:mainfrom
Sydney-Informatics-Hub:testing-MO
Open

Make build infra‑agnostic: update README, add Packer examples, improve build playbook and docs#1
Mitchob wants to merge 27 commits intoAustralianBioCommons:mainfrom
Sydney-Informatics-Hub:testing-MO

Conversation

@Mitchob
Copy link
Collaborator

@Mitchob Mitchob commented Feb 2, 2026

Summary

  • This PR updates documentation and build tooling to make BioImage infrastructure‑agnostic and easier to build from scratch.
  • Primary aim: verify building the bioimage end‑to‑end using the available scripts and document the process for different OpenStack providers (tested on Nectar and Nirin).

What I changed:

  • README.md: Rewrote and expanded the README to be infra‑agnostic. Added a clear intro to BioImage, step‑by‑step instructions for creating a head VM, obtaining/sourcing OpenStack RC files, activating the environment, and building images. Included example references for Nectar and Nirin (tested on 2026-02-02).
  • .gitignore: added patterns for credentials, logs, and local virtualenvs.
    • build/build-bioimage.yml: reliability fixes and small functional changes:
    • Wait for apt/dpkg locks before operations.
    • Retry apt updates with retries/delay.
    • Install Java 21 and set it as the default java (required for Nextflow).
    • Set Nextflow-related env vars for deterministic checks.
    • Default CVMFS_HTTP_PROXY to 'DIRECT' (increase portability) and removed aggressive probes.
  • Packer configs:
    • Added a generic template: build/openstack-bioimage.pkr.hcl (template requiring user to fill flavor, networks, availability_zone, source_image).
    • Moved/added provider examples:
      • build/examples/openstack-bioimage-nectar.pkr.hcl (example config used for Nectar)
      • build/examples/openstack-bioimage-nirin.pkr.hcl (example config used for Nirin)
    • Provisioner ansible blocks improved to set ansible env vars and avoid host key checking in automated builds.
  • Docs:
    • docs/cvmfs.md: new doc explaining CVMFS usage in BioImage.
    • docs/nirin.md: provider‑specific guidance for Nirin (instance creation, scripts, common tasks).
  • Renames/relocations in build folder to separate examples from template and make it clear which values must be filled per provider.

Testing performed

  • Built the image using the example Packer configs against Nectar and Nirin environments (example configs included).
  • Verified the build playbook handles apt locks and apt update retry behavior and that Nextflow can be interrogated via nextflow -version in the image build step.
  • Confirmed that CVMFS is configured as DIRECT by default (portable across clouds), with instructions for setting cloud-specific proxies if available.

Next steps

  • see if we can move the tasks out of the playbook as they are, and into a separate bioimage role
  • refactor to ensure that anything specifically needed for NCI/Nectar/AWS/anywhere else is templated out into variables
  • Intoduce tests to make sure updates arent breaking things

Mitchob and others added 25 commits December 9, 2025 02:09
… added an introductory explanation of the Bioimage
…n a provider-agnostic OpenStack cloud? Nirin details moved to a nirin document
@Mitchob Mitchob requested a review from georgiesamaha February 2, 2026 05:04
Copy link
Member

@georgiesamaha georgiesamaha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need some clarification before I can do the review. Can't yet follow your instructions for setting up on Nirin.

Comment on lines +3 to +8
### Create Instances and Boot Image
You may follow the [Nirin Quick Start Guide](https://opus.nci.org.au/spaces/Help/pages/152207474/Nirin+-+Quick+Start+Guide) , or use the script to create instances
```
cd bioimage/manage
./openstack/create-instances-with-image.sh
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not really clear what you're expecting me to do here. Am I spinning up a vm first and then running the script? If so, can you explain what flavour etc i need to spin up.

Also provide git clone instruction for this repo before cd bioimage/manage.

Copy link
Collaborator Author

@Mitchob Mitchob Feb 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is old documentation that I am replacing in the main README.md. I have added instructions to direct users to the main readme and labelled the doc deprecated for now

./openstack/create-instances-with-image.sh
```

If instance creation fails using an image, create **bootable volumes** instead:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would the build fail? Is this common or would it only happen if i did something wrong?


2. Launch instances using existing volumes.
To launch instances via dashboard, fill out the required sections: `Details`, `Source`, `Falvour`, and `Key pair`. In the **Source** section, select the option to boot from an existing volume.
![Launch an instance](screenshots/nirin-2.jpg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This image doesnt render

If instance creation fails using an image, create **bootable volumes** instead:

1. In the dashboard, create a volume with "Image" as the source.
![Create a Volume](screenshots/nirin-1.jpg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This image doesnt render

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants