Get desktop application:
View/edit binary Protocol Buffers messages
OS Config agent endpoint API.
Stream established by client to receive Task notifications.
A request message to receive task notifications.
Required. This is the Compute Engine instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
Required. The version of the agent making the request.
The streaming rpc message that notifies the agent when it has a task that it needs to perform on the VM instance.
(message has no fields)
Signals the start of a task execution and returns the task info.
A request message for signaling the start of a task execution.
Required. This is the Compute Engine instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
A response message that contains the details of the task to work on.
The details of the task that should be worked on. Can be empty if there is no new task to work on.
Signals an intermediary progress checkpoint in task execution.
A request message for reporting the progress of current task.
Required. This is the Compute Engine instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
Required. Unique identifier of the task this applies to.
Required. The type of task to report progress on. Progress must include the appropriate message based on this enum as specified below: APPLY_PATCHES = ApplyPatchesTaskProgress EXEC_STEP = Progress not supported for this type. APPLY_CONFIG_TASK = ApplyConfigTaskProgress
Intermediate progress of the current task.
Details about the progress of the apply patches task.
Details about the progress of the exec step task.
The response message after the agent reported the current task progress.
Instructs agent to continue or not.
Signals that the task execution is complete and optionally returns the next task.
A request message for signaling the completion of a task execution.
Required. This is the Compute Engine instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
Required. Unique identifier of the task this applies to.
Required. The type of task to report completed. The output must include the appropriate message based on the following enum values: APPLY_PATCHES = ApplyPatchesTaskOutput EXEC_STEP = ExecStepTaskOutput APPLY_CONFIG_TASK = ApplyConfigTaskOutput
Descriptive error message if the task execution ended in error.
Final output details of the current task.
Final output details of the apply patches task;
Final output details of the exec step task;
The response message after the agent signaled the current task complete.
(message has no fields)
Lookup the effective guest policy that applies to a VM instance. This lookup merges all policies that are assigned to the instance ancestry.
A request message for getting effective policy assigned to the instance.
Required. This is the GCE instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
Short name of the OS running on the instance. The OS Config agent only provideS this field for targeting if OS Inventory is enabled for that instance.
Version of the OS running on the instance. The OS Config agent only provide this field for targeting if OS Inventory is enabled for that VM instance.
Architecture of OS running on the instance. The OS Config agent only provide this field for targeting if OS Inventory is enabled for that instance.
The effective guest policy assigned to the instance.
List of package configurations assigned to the VM instance.
List of package repository configurations assigned to the VM instance.
List of recipes assigned to the VM instance.
Registers the agent running on the VM.
The request message for registering the agent.
Required. This is the Compute Engine instance identity token described in https://cloud.google.com/compute/docs/instances/verifying-instance-identity where the audience is 'osconfig.googleapis.com' and the format is 'full'.
Required. The version of the agent.
Required. The capabilities supported by the agent. Supported values are: PATCH_GA GUEST_POLICY_BETA CONFIG_V1
The operating system long name. For example 'Debian GNU/Linux 9' or 'Microsoft Window Server 2019 Datacenter'.
The operating system short name. For example, 'windows' or 'debian'.
The version of the operating system.
The system architecture of the operating system.
The response message after the agent registered.
(message has no fields)
Message which instructs agent to apply patches.
Used in:
Specific information about how patches should be applied.
If true, the agent will report its status as it goes through the motions but won't actually run any updates or perform any reboots.
Information reported from the agent about applying patches execution.
Used in:
Required. The final state of this task.
The final states of applying patches.
Used in:
Unspecified is invalid.
Applying patches completed successfully.
Applying patches completed successfully, but a reboot is required.
Applying patches failed.
Information reported from the agent about applying patches execution.
Used in:
Required. The current state of this patch execution.
The intermediate states of applying patches.
Used in:
Unspecified is invalid.
The agent has started the patch task.
The agent is currently downloading patches.
The agent is currently applying patches.
The agent is currently rebooting the VM instance.
Represents a single Apt package repository. This repository is added to a repo file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`.
Used in:
Type of archive files in this repository. The default behavior is DEB.
URI for this repository.
Distribution of this repository.
List of components for this repository. Must contain at least one item.
URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing all the keys in any applied guest policy.
Type of archive.
Used in:
Unspecified.
DEB indicates that the archive contains binary files.
DEB_SRC indicates that the archive contains source files.
Apt patching will be performed by executing `apt-get update && apt-get upgrade`. Additional options can be set to control how this is executed.
Used in:
By changing the type to DIST, the patching will be performed using `apt-get dist-upgrade` instead.
List of packages to exclude from update.
An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields.
Apt patch type.
Used in:
By default, upgrade will be performed.
Runs `apt-get dist-upgrade`.
Runs `apt-get upgrade`.
The desired state that the OS Config agent will maintain on the VM.
Used in:
,The default is to ensure the package is installed.
The agent ensures that the package is installed.
The agent ensures that the package is installed and periodically checks for and install any updates.
The agent ensures that the package is not installed and uninstall it if detected.
A guest policy package including its source.
Used in:
Name of the guest policy providing this config.
A software package to configure on the VM instance.
A guest policy package repository including its source.
Used in:
Name of the guest policy providing this config.
A software package repository to configure on the VM instance.
A guest policy recipe including its source.
Used in:
Name of the guest policy providing this config.
A software recipe to configure on the VM instance.
A step that runs an executable for a PatchJob.
Used in:
,The ExecStepConfig for all Linux VMs targeted by the PatchJob.
The ExecStepConfig for all Windows VMs targeted by the PatchJob.
Common configurations for an ExecStep.
Used in:
Location of the executable.
An absolute path to the executable on the VM.
A GCS object containing the executable.
Defaults to [0]. A list of possible return values that the execution can return to indicate a success.
The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with shebang lines. [Wikipedia shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)).
The interpreter used to execute the a file.
Used in:
Deprecated, defaults to NONE for compatibility reasons.
Invalid for a Windows ExecStepConfig. For a Linux ExecStepConfig, the interpreter will be parsed from the shebang line of the script if unspecified.
Indicates that the script will be run with /bin/sh on Linux and cmd on windows.
Indicates that the file will be run with PowerShell.
Message which instructs agent to execute the following command.
Used in:
Details of the exec step to run.
Information reported from the agent about the exec step execution.
Used in:
Required. The final state of the exec step.
Required. The exit code received from the script which ran as part of the exec step.
The final states of exec steps.
Used in:
Unspecified is invalid.
The exec step completed normally.
The exec step was terminated because it took too long.
The exec step task was cancelled before it started.
Information reported from the agent about the exec step execution.
Used in:
Required. The current state of this exec step.
The intermediate states of exec steps.
Used in:
Unspecified is invalid.
The agent has started the exec step task.
GCS object representation.
Used in:
Bucket of the GCS object.
Name of the GCS object.
Generation number of the GCS object. This is used to ensure that the ExecStep specified by this PatchJob does not change.
Represents a Goo package repository. These is added to a repo file that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.
Used in:
The name of the repository.
The url of the repository.
Googet patching is performed by running `googet update`.
Used in:
(message has no fields)
Package is a reference to the software package to be installed or removed. The agent on the VM instance uses the system package manager to apply the config. These are the commands that the agent uses to install or remove packages. Apt install: `apt-get update && apt-get -y install package1 package2 package3` remove: `apt-get -y remove package1 package2 package3` Yum install: `yum -y install package1 package2 package3` remove: `yum -y remove package1 package2 package3` Zypper install: `zypper install package1 package2 package3` remove: `zypper rm package1 package2` Googet install: `googet -noconfirm install package1 package2 package3` remove: `googet -noconfirm remove package1 package2 package3`
Used in:
The name of the package. A package is uniquely identified for conflict validation by checking the package name and the manager(s) that the package targets.
The desired_state the agent should maintain for this package. The default is to ensure the package is installed.
Type of package manager that can be used to install this package. If a system does not have the package manager, the package is not installed or removed no error message is returned. By default, or if you specify `ANY`, the agent attempts to install and remove this package using the default package manager. This is useful when creating a policy that applies to different types of systems. The default behavior is ANY.
Types of package managers that may be used to manage this package.
Used in:
The default behavior is ANY.
Apply this package config using the default system package manager.
Apply this package config only if Apt is available on the system.
Apply this package config only if Yum is available on the system.
Apply this package config only if Zypper is available on the system.
Apply this package config only if GooGet is available on the system.
A package repository.
Used in:
A specific type of repository.
An Apt Repository.
A Yum Repository.
A Zypper Repository.
A Goo Repository.
Patch configuration specifications. Contains details on how to apply patches to a VM instance.
Used in:
Post-patch reboot settings.
Retry strategy can be defined to have the agent retry patching during the window if patching fails. If omitted, the agent will use its default retry strategy.
Apt update settings. Use this override the default apt patch rules.
Yum update settings. Use this override the default yum patch rules.
Goo update settings. Use this override the default goo patch rules.
Zypper update settings. Use this override the default zypper patch rules.
Windows update settings. Use this override the default windows patch rules.
The ExecStep to run before the patch update.
The ExecStep to run after the patch update.
Allows the patch job to run on Managed instance groups (MIGs).
Post-patch reboot settings.
Used in:
The default behavior is DEFAULT.
The agent decides if a reboot is necessary by checking signals such as registry keys on Windows or `/var/run/reboot-required` on APT based systems. On RPM based systems, a set of core system package install times are compared with system boot time.
Always reboot the machine after the update completes.
Never reboot the machine after the update completes.
The strategy for retrying failed patches during the patch window.
Used in:
If true, the agent will continue to try and patch until the window has ended.
A software recipe is a set of instructions for installing and configuring a piece of software. It consists of a set of artifacts that are downloaded, and a set of steps that install, configure, and/or update the software. Recipes support installing and updating software from artifacts in the following formats: Zip archive, Tar archive, Windows MSI, Debian package, and RPM package. Additionally, recipes support executing a script (either defined in a file or directly in this api) in bash, sh, cmd, and powershell. Updating a software recipe If a recipe is assigned to an instance and there is a recipe with the same name but a lower version already installed and the assigned state of the recipe is `INSTALLED_KEEP_UPDATED`, then the recipe is updated to the new version. Script Working Directories Each script or execution step is run in its own temporary directory which is deleted after completing the step.
Used in:
Unique identifier for the recipe. Only one recipe with a given name is installed on an instance. Names are also used to identify resources which helps to determine whether guest policies have conflicts. This means that requests to create multiple recipes with the same name and version are rejected since they could potentially have conflicting assignments.
The version of this software recipe. Version can be up to 4 period separated numbers (e.g. 12.34.56.78).
Resources available to be used in the steps in the recipe.
Actions to be taken for installing this recipe. On failure it stops executing steps and does not attempt another installation. Any steps taken (including partially completed steps) are not rolled back. Install steps must be specified and are used on first installation.
Actions to be taken for updating this recipe. On failure it stops executing steps and does not attempt another update for this recipe. Any steps taken (including partially completed steps) are not rolled back. Upgrade steps are not mandatory and are only used when upgrading.
Default is INSTALLED. The desired state the agent should maintain for this recipe. INSTALLED: The software recipe is installed on the instance but won't be updated to new versions. UPDATED: The software recipe is installed on the instance. The recipe is updated to a higher version, if a higher version of the recipe is assigned to this instance. REMOVE: Remove is unsupported for software recipes and attempts to create or update a recipe to the REMOVE state is rejected.
Specifies a resource to be used in the recipe.
Used in:
Id of the artifact, which the installation and update steps of this recipe can reference. Artifacts in a recipe cannot have the same id.
A specific type of artifact.
A generic remote artifact.
A Cloud Storage artifact.
Defaults to false. When false, recipes are subject to validations based on the artifact type: Remote: A checksum must be specified, and only protocols with transport-layer security are permitted. GCS: An object generation number must be specified.
Specifies an artifact available as a Cloud Storage object.
Used in:
Bucket of the Cloud Storage object. Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `my-bucket`.
Name of the Cloud Storage object. As specified [here] (https://cloud.google.com/storage/docs/naming#objectnames) Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `foo/bar`.
Must be provided if allow_insecure is false. Generation number of the Cloud Storage object. `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `1234567`.
Specifies an artifact available via some URI.
Used in:
URI from which to fetch the object. It should contain both the protocol and path following the format {protocol}://{location}.
Must be provided if `allow_insecure` is `false`. SHA256 checksum in hex format, to compare to the checksum of the artifact. If the checksum is not empty and it doesn't match the artifact then the recipe installation fails before running any of the steps.
An action that can be taken as part of installing or updating a recipe.
Used in:
A specific type of step.
Copies a file onto the instance.
Extracts an archive into the specified directory.
Installs an MSI file.
Installs a deb file via dpkg.
Installs an rpm file via the rpm utility.
Executes an artifact or local file.
Runs commands in a shell.
Copies the artifact to the specified path on the instance.
Used in:
The id of the relevant artifact in the recipe.
The absolute path on the instance to put the file.
Whether to allow this step to overwrite existing files. If this is false and the file already exists the file is not overwritten and the step is considered a success. Defaults to false.
Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4
Executes an artifact or local file.
Used in:
Location of the file to execute.
The id of the relevant artifact in the recipe.
The absolute path of the file on the local filesystem.
Arguments to be passed to the provided executable.
Defaults to [0]. A list of possible return values that the program can return to indicate a success.
Extracts an archive of the type specified in the specified directory.
Used in:
The id of the relevant artifact in the recipe.
Directory to extract archive to. Defaults to `/` on Linux or `C:\` on Windows.
The type of the archive to extract.
Specifying the type of archive.
Used in:
Indicates that the archive type isn't specified.
Indicates that the archive is a tar archive with no encryption.
Indicates that the archive is a tar archive with gzip encryption.
Indicates that the archive is a tar archive with bzip encryption.
Indicates that the archive is a tar archive with lzma encryption.
Indicates that the archive is a tar archive with xz encryption.
Indicates that the archive is a zip archive.
Installs a deb via dpkg.
Used in:
The id of the relevant artifact in the recipe.
Installs an MSI file.
Used in:
The id of the relevant artifact in the recipe.
The flags to use when installing the MSI defaults to ["/i"] (i.e. the install flag).
Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
Installs an rpm file via the rpm utility.
Used in:
The id of the relevant artifact in the recipe.
Runs a script through an interpreter.
Used in:
The shell script to be executed.
Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]
The script interpreter to use to run the script. If no interpreter is specified the script is executed directly, which likely only succeed for scripts with [shebang lines](https://en.wikipedia.org/wiki/Shebang_(Unix)).
The interpreter used to execute a script.
Used in:
Default value for ScriptType.
Indicates that the script is run with `/bin/sh` on Linux and `cmd` on windows.
Indicates that the script is run with powershell.
A unit of work to be performed by the agent.
Used in:
Unique task id.
The type of task to perform. Task details must include the appropriate message based on this enum as specified below: APPLY_PATCHES = ApplyPatchesTask EXEC_STEP = ExecStepTask;
Current directive to the agent.
Specific details about the current task to perform.
Details about the apply patches task to perform.
Details about the exec step task to perform.
Labels describing the task. Used for logging by the agent.
Specifies the current agent behavior.
Used in:
,Unspecified is invalid.
The task should continue to progress.
Task should not be started, or if already in progress, should stop at first safe stopping point. Task should be considered done and will never repeat.
Specifies the type of task to perform.
Used in:
, ,Unspecified is invalid.
The apply patches task.
The exec step task.
Windows patching is performed using the Windows Update Agent.
Used in:
Only apply updates of these windows update classifications. If empty, all updates will be applied.
List of KBs to exclude from update.
An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations.
Microsoft Windows update classifications as defined in [1] https://support.microsoft.com/en-us/help/824684/description-of-the-standard-terminology-that-is-used-to-describe-micro
Used in:
Invalid. If classifications are included, they must be specified.
"A widely released fix for a specific problem that addresses a critical, non-security-related bug." [1]
"A widely released fix for a product-specific, security-related vulnerability. Security vulnerabilities are rated by their severity. The severity rating is indicated in the Microsoft security bulletin as critical, important, moderate, or low." [1]
"A widely released and frequent software update that contains additions to a product’s definition database. Definition databases are often used to detect objects that have specific attributes, such as malicious code, phishing websites, or junk mail." [1]
"Software that controls the input and output of a device." [1]
"New product functionality that is first distributed outside the context of a product release and that is typically included in the next full product release." [1]
"A tested, cumulative set of all hotfixes, security updates, critical updates, and updates. Additionally, service packs may contain additional fixes for problems that are found internally since the release of the product. Service packs my also contain a limited number of customer-requested design changes or features." [1]
"A utility or feature that helps complete a task or set of tasks." [1]
"A tested, cumulative set of hotfixes, security updates, critical updates, and updates that are packaged together for easy deployment. A rollup generally targets a specific area, such as security, or a component of a product, such as Internet Information Services (IIS)." [1]
"A widely released fix for a specific problem. An update addresses a noncritical, non-security-related bug." [1]
Represents a single Yum package repository. This repository is added to a repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.
Used in:
A one word, unique name for this repository. This is the `repo id` in the Yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for guest policy conflicts.
The display name of the repository.
The location of the repository directory.
URIs of GPG keys.
Yum patching will be performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms.
Used in:
Adds the `--security` flag to `yum update`. Not supported on all platforms.
Will cause patch to run `yum update-minimal` instead.
List of packages to exclude from update. These packages will be excluded by using the yum `--exclude` flag.
An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields.
Represents a single Zypper package repository. This repository is added to a repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.
Used in:
A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for guest policy conflicts.
The display name of the repository.
The location of the repository directory.
URIs of GPG keys.
Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual.
Used in:
Adds the `--with-optional` flag to `zypper patch`.
Adds the `--with-update` flag, to `zypper patch`.
Install only patches with these categories. Common categories include security, recommended, and feature.
Install only patches with these severities. Common severities include critical, important, moderate, and low.
List of patches to exclude from update.
An exclusive list of patches to be updated. These are the only patches that will be installed using 'zypper patch patch:<patch_name>' command. This field must not be used with any other patch configuration fields.