Instructions for AI coding agents. For project overview, see README.md. For contribution guidelines, see CONTRIBUTING.md.
| Directory | Purpose |
|---|---|
scripts/ |
Entry point scripts (runironic, rundnsmasq, runhttpd, etc.) |
ironic-config/ |
Jinja2 templates for Ironic/dnsmasq/httpd configuration |
hack/ |
CI scripts (shellcheck, markdownlint) |
| File | Purpose |
|---|---|
Dockerfile |
Main image build definition |
prepare-image.sh |
Image setup (Ironic, dnsmasq, httpd configs) |
configure-nonroot.sh |
Non-root user setup for security |
ironic-packages-list |
Python packages (Ironic, IPA, dependencies) |
upper-constraints.txt |
Python version pins (from OpenStack requirements) |
CI uses GitHub Actions (.github/workflows/). Run locally before PRs:
| Command | Purpose |
|---|---|
make build |
Build container image |
./hack/shellcheck.sh |
Shell script linting |
./hack/markdownlint.sh |
Markdown linting |
- Shell: Use
set -euxo pipefailin scripts - Jinja2: Templates in
ironic-config/render at container runtime
- Edit script in
scripts/ - Run
./hack/shellcheck.sh - Test with
make buildand manual container run
- Edit Jinja2 template in
ironic-config/ - Document new environment variables in
README.md - Test configuration renders correctly at runtime
- Update
ironic-packages-listwith new version - Update
upper-constraints.txt(from OpenStack release) - Run
make buildand test
When reviewing pull requests:
- Security - No hardcoded credentials, proper file permissions
- Consistency - Match existing shell script patterns
- Breaking changes - Flag environment variable or mount changes
Focus on: scripts/, ironic-config/, Dockerfile, prepare-*.sh.
- Read
README.mdfor environment variables and configuration - Make minimal, surgical edits
- Run
./hack/shellcheck.shand./hack/markdownlint.shbefore committing - Document new environment variables in
README.md
This image is deployed by Ironic Standalone Operator (IrSO). IrSO manages the Kubernetes manifests and container configuration.
Read-only root filesystem: Supports read-only root with writable mounts
at /conf, /data, /tmp, and /shared.