Huawei Cloud KooCLI, Pinned To A Versioned URL
Huawei's hcloud on EL 10 from a versioned path on Huawei's download host (the docs give only latest), refused by get_url unless the tarball's SHA-256 is the pinned one; Huawei's .sha256 names a build-server path, so the live test reads it and asserts its first field is the pin. The privacy statement stays per user; the role accepts it for nobody. Original role, live-tested on Rocky Linux 10.
Verification
Live-testedReally deployed to a container sandbox, proven idempotent (a second run changes nothing), verified against the role’s assertions, then torn down.
Conformance
- Static validation (yamllint · ansible-lint)
Provenance
- SHA-256 checksum
- Signature (pending)
Functional
- Live-tested - applied, verified, destroyed
Last verified 2026-09-20 · podman 4.9.3 · ansible 2.21.4 · how we verify
Documentation
huawei-koocli
The Huawei Cloud CLI (hcloud) on EL 10 from Huawei's OBS download host (the international mirror),
checked against a SHA-256 pinned beside the version, installed as root's
binary in /usr/local/bin. Original role for EL 10, live-tested with
podman on Rocky Linux 10.
No package, and no checksum file to speak of. EL 10 carries no
hcloud. Huawei publishes a .sha256 beside each tarball whose second field is a build-server path (*/devcloud/workspace/j_.../huaweicloud-cli-linux-amd64.tar.gz) rather than the asset's name, so Ansible's get_url cannot match it. The values here are those files' first fields for version 7.2.12, read on 2026-09-20; the live test fetches the vendor's file for the pinned version and asserts it still says so. This role pins the SHA-256 per architecture
beside the version, has Ansible's get_url refuse the asset unless it
matches, and the live test checksums the asset on disk again. A new
release is a new pair, on purpose.
Proven to run. The live test calls hcloud ECS NovaListServers --cli-region=ap-southeast-3 with no
credentials and expects "does not contain profile" - the binary and its
Huawei Cloud client ran; only the credentials were missing.
A versioned URL, though the docs only give latest. Huawei's
install page points at .../cli/latest/; the same host serves
.../cli/<version>/, which is what a pin needs. The role uses the
international mirror (ap-southeast-3); koocli_release_url can point at
the cn-north-1 mirror, which serves the same versioned path.
The privacy statement is per user, and this role does not accept it for
anyone. KooCLI refuses every command, version included, until that
user has run hcloud configure set --cli-agree-privacy-statement=true
(kept in ~/.hcloud). The live test does that in a throwaway home under
/tmp and reads the version and the no-profile error from there.
The binary is called hcloud, and so is Hetzner's. Huawei's docs,
help and examples all say hcloud, so that is the name installed. On a
host that also needs Hetzner's hcloud (the hcloud-cli role in this
catalogue), set koocli_bin_dir to a directory of its own, /opt/koocli/bin
for instance, and add it to the PATH where you want it.
License
Commercial - IaC Bazaar EULA. (c) IaC Bazaar.
Usage code & full reference need an account
The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.
- Variables
- Test