Purpose
Install cloud provider CLIs for AWS, GCP, and Azure operations on runners.
Location
setup/runner/install-cloud-clis.sh
Preconditions
- Required tools:
bash, package manager, optionalsudo - Required permissions: package installation privileges
- Required environment variables: none
Arguments
| Flag | Required | Default | Description |
|---|---|---|---|
--tools CSV |
No | aws,gcloud,az |
Tool set to install |
--tool NAME |
No | none | Add one tool (repeatable) |
--manager NAME |
No | auto |
auto\|brew\|apt\|dnf\|yum |
--yes |
No | false |
Non-interactive mode |
--update-cache |
No | false |
Refresh package metadata |
--dry-run |
No | false |
Print commands only |
Scenarios
- Happy path: cloud CLIs installed and ready for auth/bootstrap.
- Common operational path: install subset of provider CLIs for environment-specific runners.
- Failure path: package repo lacks provider package or permissions are insufficient.
- Recovery/rollback path: adjust manager/repository or install subset and rerun.
Usage
setup/runner/install-cloud-clis.sh --yes
setup/runner/install-cloud-clis.sh --tools aws,gcloud
setup/runner/install-cloud-clis.sh --tool az --dry-run
Behavior
- Main execution flow: parse tool list, map package names, install missing commands.
- Idempotency notes: existing CLIs are skipped.
- Side effects: package installation.
Output
- Standard output format: timestamped install logs.
- Exit codes:
0all requested tools installed/present1one or more tools failed/unsupported2invalid arguments
Failure Modes
- Common errors and likely causes:
- unsupported tool name
- package unavailable in configured repositories
- permission failures on install
- Recovery and rollback steps:
- verify repositories and manager selection
- rerun with corrected tool list or permissions
Security Notes
- Secret handling: no credentials handled during install.
- Least-privilege requirements: elevate only during package operations.
- Audit/logging expectations: installation actions should be logged in runner provisioning.
Testing
- Unit tests:
- tool parsing/mapping validation
- Integration tests:
- install flow on each supported package manager
- Manual verification:
aws --version,gcloud --version,az version