Add GitHub Container Registry authentication to Podman role

- Deploy /etc/containers/auth.json with GHCR credentials
- Support for private container image pulls
- Credentials encrypted in Ansible vault
- Used by devigo and other services pulling from private registries
- Updated documentation with authentication setup
This commit is contained in:
2025-12-16 00:53:42 +01:00
parent 0ecbb84fa5
commit 44584c68f1
3 changed files with 49 additions and 1 deletions

View File

@@ -34,6 +34,27 @@ Podman is deployed as a system-level infrastructure service that provides contai
All registries configured with HTTPS-only, no insecure connections allowed. All registries configured with HTTPS-only, no insecure connections allowed.
### **Private Registry Authentication:**
For private container images (e.g., from GitHub Container Registry), this role deploys authentication credentials:
- **Auth file**: `/etc/containers/auth.json` (system-wide, for root containers)
- **Permissions**: 0600 (root:root only)
- **Credentials**: Stored encrypted in Ansible Vault
- **Automatic**: Quadlet containers automatically use authentication when pulling images
**Configuration:**
```yaml
# In group_vars/production/vault.yml (encrypted)
vault_github_username: "your-username"
vault_github_token: "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# In group_vars/production/main.yml
github_username: "{{ vault_github_username }}"
github_token: "{{ vault_github_token }}"
```
When these variables are defined, the role automatically deploys authentication for ghcr.io.
## Application Integration ## Application Integration
Applications should create service-specific users and manage their own container deployments: Applications should create service-specific users and manage their own container deployments:

View File

@@ -61,6 +61,29 @@
changed_when: false changed_when: false
failed_when: false failed_when: false
# =================================================================
# Container Registry Authentication
# =================================================================
# Deploy system-wide authentication for private container registries
# Currently supports: GitHub Container Registry (ghcr.io)
- name: Deploy GitHub Container Registry authentication
copy:
content: |
{
"auths": {
"ghcr.io": {
"auth": "{{ (github_username + ':' + github_token) | b64encode }}"
}
}
}
dest: /etc/containers/auth.json
mode: '0600'
owner: root
group: root
when: github_username is defined and github_token is defined
no_log: true # Don't log sensitive authentication data
- name: Display Podman infrastructure status - name: Display Podman infrastructure status
debug: debug:
msg: | msg: |
@@ -70,6 +93,7 @@
🔒 Security: Rootless container runtime enabled 🔒 Security: Rootless container runtime enabled
📦 Registries: {{ podman_registries | join(', ') }} 📦 Registries: {{ podman_registries | join(', ') }}
🏗️ Storage: {{ 'overlay' if 'overlay' in podman_system_info.stdout else 'system default' }} 🏗️ Storage: {{ 'overlay' if 'overlay' in podman_system_info.stdout else 'system default' }}
🔑 Auth: {{ 'GitHub Container Registry configured' if (github_username is defined and github_token is defined) else 'No private registry auth' }}
🚀 Ready for containerized applications! 🚀 Ready for containerized applications!

View File

@@ -19,6 +19,9 @@ network_backend = "netavark"
# Default network for new containers # Default network for new containers
default_network = "{{ podman_default_network }}" default_network = "{{ podman_default_network }}"
# For signing into ghcr.io
auth_file = "/etc/containers/auth.json"
# ================================================================= # =================================================================
# Storage Configuration # Storage Configuration
# ================================================================= # =================================================================