Conan, Ansible Galaxy, Terraform, Swift, and Emerging Repository Formats: Concepts, Architecture, and Mental Model
Adopt emerging Nexus formats safely by starting with each client protocol, package identity, metadata contract, repository-type support, authentication method, release floor, and operational limitations instead of assuming Maven-like behavior.
Learning objectives
- Explain why “format supported” is only the first question when adopting a new repository ecosystem.
- Map Conan, Ansible Galaxy, Terraform, and Swift package identity to their client protocols and Nexus repository types.
- Recognize release floors for newly introduced proxy/hosted/group capabilities and authentication changes.
- Separate runtime support from export/import, migration, staging, replication, and other operational tooling.
- Inspect version, edition, recipes, realms, repository types, and client assumptions before changing state.
Pinned baseline. This chapter uses Nexus Repository 3.95.2, released 2026-08-21, as the concrete lab baseline. Sonatype currently lists Ansible, Conan, Swift, and Terraform in the self-hosted format matrix for Community and Pro. However, individual protocol generations and enterprise operations can have older or narrower entitlement/version boundaries. Treat recipe visibility on the pinned instance plus current format documentation as the authoritative preflight, not an old blog post.
1. The adoption problem: “Nexus supports it” is not an operating model
An organization sees a new recipe in the Nexus UI and concludes that onboarding is finished. That conclusion skips the questions that actually determine whether builds will be reproducible: What is the package identity? Which HTTP/API protocol does the client speak? Does Nexus support proxy, hosted, and group for this exact protocol generation? Which realm or credential mechanism does the client require? Which metadata does Nexus generate? Can the content be moved, exported, imported, cleaned up, searched, and backed up with the same tools used for older formats?
Emerging formats change faster than mature ones. A feature can arrive in stages—proxy first, then hosted, then group, then improved authentication or new upstream compatibility. The safe operator habit is therefore capability discovery before configuration.
2. A five-gate mental model for every unfamiliar format
flowchart TD C[Client protocol + version] --> I[Package identity + metadata] I --> R[Repository types supported] R --> A[Authentication + authorization] A --> O[Operations: search backup migration cleanup] O --> D[Adopt / pilot / defer]
The gates are sequential. If a client speaks the wrong protocol generation, no amount of repository privilege tuning will fix it. If hosted support exists but group support does not, one-endpoint client designs must change. If runtime storage works but export/import is unavailable or Pro-only, migration and disaster-recovery plans need another path.
3. Current capability map at the 3.95.2 baseline
| Format | Identity / protocol | Proxy | Hosted | Group | Current release floor / caveat |
|---|---|---|---|---|---|
| Conan | Recipe reference, package ID, revisions; Conan 1.x and 2.x are distinct protocols | Yes | Yes | Conan 2: yes; Conan 1: no | Conan 2 support arrived in 3.76. Current format matrix lists Conan in CE and Pro, but older Conan-2-specific release notes used a Pro-only label. Verify the exact recipe/license on your instance before making Conan 2 mandatory. |
| Ansible Galaxy |
namespace.collection + collection version;
Galaxy v3 API
|
Yes | Yes | Yes | New in 3.93.0; current docs explicitly list CE, Pro, and Cloud and ansible-galaxy 2.9+ compatibility. |
| Terraform | Registry modules and providers with namespace/name/provider/version/platform semantics | 3.88+ | 3.89+ | 3.90+ | 3.94 adds OpenTofu/Coder upstreams; 3.95 adds non-URL bearer authentication. |
| Swift |
Swift Package Registry identifiers such as
scope.name, semantic versions and source
archives
|
3.89+ | 3.90+ | 3.91+ | CE and Pro; SPM 5.7+ required, 5.9+ recommended. Windows can consume but current Nexus docs say Swift publishing is not supported there. |
A checkmark for a format is not permission to merge protocol
generations. Conan 1 and 2 need separate thinking. Terraform
provider artifacts have platform-specific identities and generated
checksum/signature metadata. Swift can resolve Git URL declarations
through registry replacement but its registry protocol is not a Git
repository. Ansible collections are archives with Galaxy API
metadata, not generic tarballs merely because the file extension is
.tar.gz.
4. Conan: protocol generation is part of repository identity
Conan packages contain recipes and binary variants whose package IDs depend on settings, options, dependencies, and—with Conan 2—package type semantics. Nexus explicitly distinguishes Conan 1.x and Conan 2.0 behavior. Conan 1.x has proxy and hosted support but no group recipe; Conan 2 supports proxy, hosted, and group in current documentation. A Conan 2 client cannot simply be pointed at a Conan 1 proxy and expected to work.
The safest rollout records three independent facts: Nexus version/edition, Nexus recipe protocol generation, and Conan CLI major version. For hosted repositories, enable the Conan Bearer Token Realm only when you actually need client authentication. Keep revisions consistent with the chosen protocol. Do not “fix” compatibility by disabling TLS validation globally or by sharing one repository between Conan generations.
Entitlement caution. Sonatype's current feature matrix lists Conan as available in both CE and Pro, while the 3.76.0 historical release notes described native Conan 2.0 as Pro-only. This chapter does not resolve that discrepancy by assumption. Verify the exact 3.95.2 recipe availability and license state before a live Conan 2 rollout. The mandatory checkpoint uses Ansible and Terraform instead.
5. Ansible Galaxy: collection archives plus Galaxy v3 semantics
An Ansible collection is identified primarily by
namespace.collection and version. The client
communicates with a Galaxy API, not with a generic web directory.
Nexus added Ansible support in 3.93.0 and currently supports proxy,
hosted, and group repositories using the Galaxy v3 API. This is
available in Community and Pro.
Authentication is also protocol-specific. Nexus exposes an Ansible
Galaxy bearer-token realm. Current Sonatype examples encode
username:password as Base64 for the client token field.
Base64 is not encryption; it remains a credential. A
production design should use least-privilege accounts and protected
configuration or secret injection. In this chapter, any such token
exists only in a permission-restricted temporary lab file and is
deleted afterward.
6. Terraform: a registry is service discovery, modules, providers, platforms, checksums, and signatures
Terraform's registry protocol separates modules from providers. A module is a versioned source archive. A provider is a versioned executable distribution with operating-system/architecture dimensions and checksum/signature metadata. Nexus classifies those assets and rewrites registry responses so downloads remain inside the repository boundary.
The feature arrived incrementally: proxy in 3.88, hosted in 3.89,
group in 3.90. Nexus 3.94 added OpenTofu plus Coder registry
support, and 3.95 added a non-URL authentication flow using a
TerraformBearerToken obtained from the repository token
endpoint. This is an excellent example of why “Terraform supported
since 3.88” is incomplete operational guidance.
7. Swift: registry protocol, not a Git mirror
Swift Package Manager traditionally consumes Git repositories, but the Swift Package Registry API provides a registry-oriented path. Nexus proxy support arrived in 3.89, hosted in 3.90, and group in 3.91. Current docs list Swift for both CE and Pro, require SPM 5.7 or later, and recommend 5.9+.
Nexus can replace SCM resolution with registry requests using
--replace-scm-with-registry. For proxying, current
Sonatype guidance is unusually specific: because there is no
official public Swift registry, Nexus supports
https://github.com/ as the remote storage URL and
translates compatible package requests. Publishing uses the Swift
package registry command and is currently not supported on Windows,
even though Windows can consume packages.
8. What state changes when a new format is adopted?
| State boundary | Examples | Operator question |
|---|---|---|
| Repository configuration | Recipe, format/type, blob store, upstream URL, group member order | Does the exact type exist on this Nexus version? |
| Database metadata | Components/assets, package attributes, search fields, generated registry metadata | Can search/browse represent the format correctly? |
| Blob content | Collection archives, provider zips, Swift archives, Conan recipes/binaries | Which bytes are authoritative versus cached? |
| Security configuration | Realm, users, roles, content selectors, anonymous policy | What does the native client actually send? |
| Client state |
Remotes, ansible.cfg,
.terraformrc, Swift registries, Conan cache
|
Can a clean client prove Nexus-only routing? |
| External systems | Galaxy, Terraform Registry/OpenTofu/Coder, GitHub, ConanCenter | What happens during upstream failure or rate limiting? |
9. Runtime support is not migration support
A format can be perfectly usable for upload/download while surrounding operational tooling lags. Sonatype's current self-hosted feature matrix marks Export Assets and Import External Files as Pro-only. Even with Pro, operators must verify format coverage and task semantics before planning migrations around those tasks. Configuration migration, instance migration, repository export/import, blob/database backup, and client repointing solve different problems.
For Community Edition, this means an adoption decision must include a supported backup/restore and migration strategy that does not quietly depend on Pro-only export/import. Chapter 25 will handle full backup/recovery; here the principle is simply to record the gap before production adoption.
10. Read-only inspection before creating anything
export NX_URL="http://127.0.0.1:8081"
export LAB="${TMPDIR:-/tmp}/nexus-ch12-inspect"
rm -rf "$LAB" && mkdir -p "$LAB"
curl -fsS "$NX_URL/service/rest/v1/status" > "$LAB/status.txt"
curl -fsS "$NX_URL/service/rest/v1/repositories" > "$LAB/repositories.json"
curl -fsS "$NX_URL/service/rest/swagger.json" > "$LAB/swagger.json"
grep -Eo '/v1/repositories/(ansible|terraform|swift|conan)[^" ]*' "$LAB/swagger.json" | sort -u > "$LAB/emerging-repository-endpoints.txt" || true
cat "$LAB/emerging-repository-endpoints.txt"
The Swagger document is evidence from the running instance. A missing endpoint is more actionable than a screenshot from a different release. The command is read-only; it does not activate realms or create repositories.
11. Why this matters in DevOps
New ecosystems usually arrive because a team needs them now: an Ansible automation group, an infrastructure platform using Terraform providers, an iOS team adopting Swift registry semantics, or a C++ group migrating to Conan 2. Repository operators can either make that adoption evidence-driven or create a hidden supply-chain bypass. A precise format onboarding process creates a controlled endpoint, scoped credentials, reproducible client configuration, visible metadata, and a documented upgrade/migration boundary.
12. Knowledge check
Why is “Nexus supports Terraform” not a complete compatibility statement?
Because proxy, hosted, group, upstream compatibility, and authentication arrived in different Nexus releases. The exact Nexus version and required operation must be stated.
Can a Conan 1 group repository be assumed because Conan 2 supports groups?
No. Current Sonatype documentation states Conan 1.x has no group support, while Conan 2 supports proxy/hosted/group.
Does Base64 encoding an Ansible token make it safe to commit?
No. Base64 is reversible representation, not encryption. Treat it as a credential and keep it in protected temporary or secret-managed configuration.
Why can runtime format support still be insufficient for an enterprise migration?
Because migration/export/import, replication, staging, backup, and other operational tools have separate format and license coverage.
What is the safest first artifact when evaluating a newly added format?
A compatibility record: Nexus version/edition, client version, protocol generation, supported repository types, auth mechanism, and known operational gaps.
13. Summary and next step
Emerging-format adoption is a compatibility exercise before it is a repository-creation exercise. Conan, Ansible, Terraform, and Swift each encode identity and client behavior differently, and their Nexus capabilities arrived over different release lines.
Lesson 2 turns that model into a disposable workflow: one native Ansible collection path, one Terraform registry fixture/upload path, and inspection fixtures for Conan and Swift.
Official references and version notes
- Sonatype: Download and 3.95.0–3.95.2 release notes.
- Sonatype: Self-Hosted feature matrix.
- Sonatype: Conan Repositories.
- Sonatype: Ansible Repositories, repository creation, and client configuration.
- Sonatype: Terraform Repositories, repository creation, client configuration, and CLI usage.
- Sonatype: Swift Repositories, repository creation, and SPM configuration.
- Sonatype: Nexus Repository API Reference.
- Sonatype: Repository Export and Repository Import — verify current Pro entitlement and format coverage before adoption.
Version-sensitive statements were rechecked on 2026-08-26. The mandatory lab pins Nexus Repository 3.95.2, which Sonatype's current download page lists as the latest downloadable self-hosted release and whose release notes date it to 2026-08-21. Java 21 remains the current Nexus runtime requirement. The mandatory path uses Community-compatible Ansible Galaxy and Terraform behavior and avoids depending on Pro-only export/import, user-token, staging, HA, or content-replication features.
Keep the academy open
Support free, practical DevOps education.
Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0
Send only Ethereum/ERC-20 compatible assets to this
address.