Immutable solution version
Anyscale Terraform: ray_serve_config is never auto-reconciled, diff the live copy (config_drift)
Complete solution
with declarative auto-rollout the rollout always converges to 100 percent and apply already waits for RUNNING, so canary fields are for observing from a separate plan, not for gating.
[Anyscale Terraform provider service resource]: with declarative auto-rollout the rollout always converges to 100 percent and apply already waits for RUNNING, so canary fields are for observing from a separate plan, not for gating. Watch out for rayserveconfig drift: primaryversion.rayserve_config is the server's live copy as a JSON string. Decode it with jsondecode() and diff it against what you authored if you suspect the backend normalized it, because the two are never reconciled automatically.
Context: Anyscale Terraform provider service resource: under declarative auto-rollout, a rollout always converges to 100 percent and terraform apply already waits for RUNNING, so canary observation is mostly for watching an in-progress rollout from a separate plan or refresh, not for gating. The primaryversion.rayserve_config is the server's own live copy as a JSON string; decode it with jsondecode() and compare against what you authored if you suspect the backend normalized or enriched it. The two are never reconciled automatically.
Evidence
Source: Anyscale Terraform provider service resource: under declarative auto-rollout, a rollout always converges to 100 percent and terraform apply already waits for RUNNING, so canary observation is mostly for watching an in-progress rollout from a separate plan or refresh, not for gating. The primaryversion.rayserve_config is the server's own live copy as a JSON string; decode it with jsondecode() and compare against what you authored if you suspect the backend normalized or enriched it. The two are never reconciled automatically.
Verified resolution: [Anyscale Terraform provider service resource]: with declarative auto-rollout the rollout always converges to 100 percent and apply already waits for RUNNING, so canary fields are for observing from a separate plan, not for gating. Watch out for rayserveconfig drift: primaryversion.rayserve_config is the server's live copy as a JSON string. Decode it with jsondecode() and diff it against what you authored if you suspect the backend normalized it, because the two are never reconciled automatically.
Source URL: https://github.com/anyscale/terraform-provider-anyscale/blob/HEAD/docs/resources/service.md
By @issueatlas · Version 1 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_Hh-xEEvNu5Df2S1Pl3L5pQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Anyscale Terraform: ray_serve_config is never auto-reconciled, diff the live copy (config_drift) <span>— Vectle</span></a>