Skip to content

OS Policy Assignment template still missing debian:13 (trixie) inventoryFilter #2294

Description

@blackgnezdo

Summary

The Google-managed Ops Agent OS Policy Assignment template still does not include a debian:13 (trixie) inventoryFilter, six months after a Google engineer indicated work was in progress in the closing comment on #2060:

"We are working on the OS policy support for Debian 13 right now... Will update here once ready." — @LujieDuan, 2025-11-04

Because the auto-provisioned goog-ops-agent-policy has allowNoResourceGroupMatch: true, trixie VMs that carry the goog-ops-agent-policy label silently report COMPLIANT while no agent is ever installed. This is a particularly nasty failure mode: the operator looks at the OS Config compliance UI, sees green, and assumes the agent is healthy.

Filing a narrow, OS-policy-only follow-up since #2060 itself is closed (the binary side shipped in 2.61.0).

Reproduction

  1. Create a Compute Engine VM from debian-cloud/debian-13.
  2. Apply the documented label: goog-ops-agent-policy=v2-x86-template-1-4-0 (or =true).
  3. Wait for OS Config to converge.
  4. SSH to the VM:
    $ systemctl is-active google-cloud-ops-agent
    inactive
    $ dpkg -l | grep -E 'ops-agent|stackdriver|fluentd'
    (none)
    $ systemctl is-active google-osconfig-agent
    active
    
  5. Check OS-Config compliance:
    $ gcloud alpha compute os-config instance-os-policies-compliances describe <vm> \
        --location=<zone> --project=<proj> \
        --format=json | jq '.osPolicyCompliances[] | select(.osPolicyId=="goog-ops-agent-policy")'
    {
      "osPolicyAssignment": ".../osPolicyAssignments/goog-ops-agent-v2-x86-template-1-4-0-<region>@...",
      "osPolicyId": "goog-ops-agent-policy",
      "state": "COMPLIANT"
    }
    

What the policy actually contains

Dumped via gcloud compute os-config os-policy-assignments describe goog-ops-agent-v2-x86-template-1-4-0-<region> — the osPolicies[0].resourceGroups[] cover:

  • centos:8, rocky:8.*, rhel:8.*
  • rocky:9.*, rhel:9.*
  • sles:12.*
  • sles:15.*, opensuse-leap:15.*
  • debian:11 (distribution google-cloud-ops-agent-bullseye-2)
  • debian:12 (distribution google-cloud-ops-agent-bookworm-2)
  • ubuntu:18.04, 20.04, 22.04, 24.04, 24.10
  • windows:10.*, windows:6.*

No debian:13. Combined with allowNoResourceGroupMatch: true on the policy, trixie matches no resource group and is reported COMPLIANT-with-no-action.

What is already in place upstream

  • Agent binary supports trixie since 2.61.0 (Debian 13 support #2083, 2025-10-14).
  • Apt repository already exists: https://packages.cloud.google.com/apt dists/google-cloud-ops-agent-trixie-2/Release returns 200, and packages such as google-cloud-ops-agent 2.66.0-trixie are available there.

So the only remaining gap is the auto-provisioned OS Policy template — Google has everything it needs to add a debian:13 resourceGroup mirroring the existing debian:12 one.

Workaround (verified)

A custom OS Policy Assignment scoped to osShortName=debian, osVersion=13 works. Example resource group:

resources:
  - id: add-repo
    repository:
      apt:
        archiveType: DEB
        uri: https://packages.cloud.google.com/apt
        distribution: google-cloud-ops-agent-trixie-2
        components: [main]
        gpgKey: https://packages.cloud.google.com/apt/doc/apt-key.gpg
  - id: install-pkg
    pkg:
      desiredState: INSTALLED
      apt:
        name: google-cloud-ops-agent

Verified end-to-end on a fleet of 27 personal Compute Engine VMs (21 trixie + 6 non-trixie). Within ~12 minutes of creating the assignment, all 21 trixie VMs converged from "no agent installed, COMPLIANT against goog-managed template" to actively reporting agent.googleapis.com/agent/uptime with google-cloud-ops-agent-{logging,metrics}/2.66.0-trixie. On a sample VM:

$ dpkg -l | grep google-cloud-ops-agent
ii  google-cloud-ops-agent           2.66.0~debian13   amd64
$ systemctl is-active google-cloud-ops-agent
active

Strongly recommend removing the goog-ops-agent-policy label from trixie VMs that use a custom policy, since the COMPLIANT-but-no-op behaviour will silently override observability if Google later re-enables it under a label name we already use.

Asks

  1. Bump the goog-managed OS Policy Assignment template to add a debian:13 resourceGroup. The debian:12 group should be a near drop-in template (swap bookworm-2trixie-2).
  2. Independently of the fix: please consider treating "no resourceGroup matches & policy was applied" as NON_COMPLIANT (or at least surface a warning) rather than COMPLIANT. The current behaviour makes "agent never installed" indistinguishable from "agent installed and healthy" in the OS Config UI.

Environment

  • VM image family: debian-cloud/debian-13
  • Google Cloud SDK 566.0.0
  • Region: us-central1
  • Date observed: 2026-05-10

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions