Audit and reconcile ArgoCD manifests vs Ansible deploy roles#153
Audit and reconcile ArgoCD manifests vs Ansible deploy roles#153
Conversation
Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
…sioner_deploy Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
…Velero Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
… heading Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
There was a problem hiding this comment.
@copilot I already have a postgres and redis instance in cluster, so I don't want this chart to deploy duplicate instances. Instead, it should be pointed at the existing instances, which you can see under:
- argocd/apps/platform/postgres.yml
- argocd/apps/platform/redis.yml
There was a problem hiding this comment.
@copilot also, you need to make the same performance determination for these volumes as before. If it's not I/O bound, then let's map it directly to the retain NFS class. Only put it on local retain when it is a performance sensitive mount.
There was a problem hiding this comment.
@copilot the ingress should be used exclusively as a "dummy" for Homepage service discovery annotations. Tailscale annotations should actually go on the cluster IP service.
There was a problem hiding this comment.
Configured NetBox to use existing postgres (postgres-postgresql.db-postgres.svc.cluster.local) and redis (redis-master.db-redis.svc.cluster.local) instances. Added OnePasswordItem CRDs for the external database and redis credentials. Persistence set to nfs-synology-retain (non-performance-sensitive). Moved Tailscale annotations to ClusterIP service, ingress now only used for Homepage discovery. Files moved from k8s/netbox/onepassword/ to k8s/netbox/. Commit: a3a20a7
There was a problem hiding this comment.
@copilot please reference my other comments from this review about storage classes and performance, and let's fix this file as well.
There was a problem hiding this comment.
Velero doesn't use PVCs for its own data - it only manages backup storage locations which are configured externally (S3/cloud). No storage class changes were needed for this manifest. Commit: a3a20a7
… netbox files - Frigate: Replace longhorn with nfs-synology-retain for config and media - NetBox: Use existing postgres/redis instances, fix storage classes, move Tailscale to service - NetBox: Move onepassword files from subdirectory to k8s/netbox/ - NetBox: Add separate OnePasswordItem CRDs for database and redis credentials Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
- Frigate: Remove Tailscale annotations from ingress, keep only Homepage annotations - Frigate: Remove ingressClassName to make it a "dummy" ingress - Frigate: Tailscale annotations remain on ClusterIP service only - NetBox: Change namespace from 'netbox' to 'infra-netbox' across all manifests - NetBox: Update all OnePasswordItem CRDs to use infra-netbox namespace Co-authored-by: SRF-Audio <16975040+SRF-Audio@users.noreply.github.com>
Audit ArgoCD Application manifests vs legacy
<app>_deployrolesCompleted Work ✅
docs/argo_vs_ansible_deploy_audit.mdcrafty_controller_deploy,nfs_provisioner_deploySummary
crafty_controller_deploy,nfs_provisioner_deployhomepage_deploy,omada_deploy,paperless_ngx_deploy,tailscale_operator_deployAnnotation Strategy
NetBox Configuration
infra-netbox(matches infrastructure naming convention)postgres-postgresql.db-postgres.svc.cluster.localredis-master.db-redis.svc.cluster.localnfs-synology-retainfor persistenceOriginal prompt
This section details on the original issue you should resolve
<issue_title>Reconcile ArgoCD Application manifests vs legacy
<app>_deployroles</issue_title><issue_description>### Goal
Audit
argocd/**ArgoCD Application manifests against legacy Ansible “deploy roles” and:<app>_deployrole that is fully redundant with the Argo manifests (i.e., it only rendered/applied an Argo Application and does not do anything that must remain in Ansible).<app>_deployrole exists but there is no corresponding Argo app manifest today.This work is repo-hygiene + migration completeness: ensure Argo is the single source of truth for deploying these Kubernetes apps, and Ansible only retains what Argo cannot own (e.g., 1Password secret templating, bootstrap steps, kubeconfig plumbing, etc.).
In scope
Argo app manifests (source of truth)
Under:
argocd/apps/apps/*.ymlargocd/apps/operators/*.ymlargocd/apps/platform/*.ymlargocd/projects/*.ymlargocd/root.ymlCandidate legacy roles to evaluate (only deploy roles)
Under
ansible/roles/**, only roles whose names match:*_deployExamples explicitly in tree:
crafty_controller_deployhomepage_deploynfs_provisioner_deployomada_deploypaperless_ngx_deploytailscale_operator_deployfrigate_deploynetbox_deployvelero_deployExclusions:
These two deploy roles are required to boostrap the cluster in the first place. Do not touch them.
argocd_deploy(special-case: bootstrap, not an “app deploy role” in the same sense)onepassword_operator_deployOut of scope (hard guardrails)
_deploy(examples:argocd_api_auth,kubeconfig_manager,k3s_kubeconfig_retriever,op_*,proxmox_*,k8s_*, etc.).Definitions
“Corresponding Argo app exists”
A deploy role is considered “covered by Argo” if there is an Argo Application manifest matching the same logical app (by obvious name mapping).
Expected mappings from the tree provided (initial set):
crafty_controller_deploy↔argocd/apps/apps/crafty-controller.ymlpaperless_ngx_deploy↔argocd/apps/apps/paperless-ngx.ymlANDargocd/apps/apps/paperless-ngx-secrets.ymlhomepage_deploy↔argocd/apps/platform/homepage.ymlnfs_provisioner_deploy↔argocd/apps/platform/nfs-provisioner.ymlomada_deploy↔argocd/apps/platform/omada-controller.ymltailscale_operator_deploy↔argocd/apps/operators/tailscale-operator.ymlANDargocd/apps/operators/tailscale-operator-secrets.ymlargocd_deploy↔argocd/root.yml+argocd/projects/*.yml+argocd/apps/operators/argocd-projects.yml(treat as bootstrap, not a deletable deploy role)Other deploy roles in repo likely do not have Argo apps yet (based on your Argo tree):
frigate_deploynetbox_deployvelero_deploy“Totally redundant”
A deploy role is “totally redundant” only if:
It only templates or copies an Argo Application manifest (or a small set of manifests) and then applies them with
kubernetes.core.k8s/kubectl-style tasks,And it does not:
If any of those exist, the role is not “totally redundant”; instead it needs a decision:
Tasks
1) Inventory: build an app coverage matrix (must be committed)
Create a markdown file:
docs/argo_vs_ansible_deploy_audit.mdInclude a table with columns:
Rules:
_deploy.argocd/**tree.2) For each
_deploy...<app>_deployroles #152💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.