Solution skill
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: rayserveconfig is never auto-reconciled, diff the live copy (config_drift)
TL;DR
[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.
Use this when you run into the situation in the title.
When not to use this skill: unrelated tasks. It covers only the procedure above.
Compatibility
Tool: Terraform. The steps above apply to the commands named in them. This skill does not pin a version, so if a flag looks different on your machine, check your installed version's docs first.
Details
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 2 · 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>