除了按需运行修补作业之外,您可能还需要通过创建补丁程序部署,根据设置的时间安排自动运行修补作业。
您可以为每个补丁程序部署设置一次性时间安排,以在一个特定日期和时间运行修补作业,也可以设置周期性时间安排,以按指定的时间间隔运行修补作业。
您可以通过实例过滤条件同时修补多个实例。这些过滤条件会在每个修补作业运行时应用于该作业。这可确保实时捕获项目中的更改。
例如,假设您创建了补丁程序部署,以在两周后开始将补丁程序应用于 asia-souteast1-b
地区中的所有实例。在创建补丁程序时,您在该地区中部署了 20 个实例,但几天后又向该地区添加了 40 个新实例。由于过滤条件在补丁程序开始时应用,因此所有 60 个实例都会更新。这样一来,您无需更新补丁程序部署时间安排即可添加和移除实例。
准备工作
- 查看 OS Config 配额。
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
roles/osconfig.patchDeploymentAdmin
:包含创建、删除、获取和列出补丁程序部署的权限。roles/osconfig.patchDeploymentViewer
:包含获取和列出补丁程序部署的只读权限。project-id
:项目 ID。user-id
:用户的 Google Workspace 用户名。- 每个名称在项目中必须是唯一的
- 只能包含小写字母、数字和连字符
- 以字母开头
- 以数字或字母结尾
- 长度介于 1 到 63 个字符之间
- 在 Google Cloud 控制台中,转到 Compute Engine > 虚拟机管理器 > 补丁页面。
- 点击新建补丁程序部署。
在目标虚拟机部分,选择包含要修补的虚拟机的地区。您还可以选择所有地区。
例如,要修补所选可用区内的特定虚拟机,请输入类似于以下内容的名称和标签过滤条件:
- 名称前缀:
test-
- 标签:
env=dev
和app=web
- 名称前缀:
在补丁程序配置部分,配置补丁程序。
- 为您的补丁程序指定名称。
- 为您的操作系统选择所需的更新。如需了解详情,请参阅操作系统修补作业包含哪些内容。
在时间安排部分,完成以下操作:
- 选择时间表。您可以安排一次性修补作业或周期性修补作业。
- (可选)设置考量时长或维护期。
在发布选项部分中,配置补丁程序发布选项:
- 选择一次修补一个地区,还是同时修补多个地区。
- 设置中断预算。中断预算是您希望修补过程一次中断某个地区的虚拟机数量或百分比。
(可选)在高级选项部分,您可以完成以下任务:
- 选择重新启动选项。
- 上传修补前脚本和修补后脚本。如需详细了解修补前脚本和修补后脚本,请参阅指定修补前脚本和修补后脚本。
点击部署。
patch-deployment-id
:补丁程序部署的名称。patch-deployment-file
:包含补丁程序部署配置的 YAML 或 JSON 文件的路径。- 开始日期为 2019 年 1 月 9 日晚上 7:30
- 结束日期为 2020 年 1 月 9 日晚上 7:30
- 要使用的时区为“America/Los_Angeles”
- 每个星期二运行一次
project-id
:您的项目 ID。instance-filter
:所需的过滤条件参数。如需详细了解实例过滤条件,请参阅实例过滤条件。schedule
:提供oneTimeSchedule
或recurringSchedule
参数,这些参数详细说明了时间安排参数(如运行修补作业的日期、时间和频率)。- 开始日期为 2019 年 1 月 9 日晚上 7:30
- 结束日期为 2020 年 1 月 9 日晚上 7:30
- 要使用的时区为“America/Los_Angeles”
- 每个星期二运行一次
- 在 Google Cloud 控制台中,转到 Compute Engine > 虚拟机管理器 > 补丁页面。
- 选择计划的部署标签页。
- 在 Google Cloud 控制台中,转到 Compute Engine > 虚拟机管理器 > 补丁页面。
- 选择计划的部署标签页。
- 点击要查看的部署的名称。
project-id
:您的项目 ID。patch-deployment-id
:您的补丁程序部署名称。- 在 Google Cloud 控制台中,转到 Compute Engine > 虚拟机管理器 > 补丁页面。
- 选择计划的部署标签页。
- 点击要删除的部署的名称。
- 点击删除此时间表。
project-id
:您的项目 ID。patch-deployment-id
:您的补丁程序部署名称。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 安排修补作业。
权限
项目的所有者拥有创建和管理补丁程序部署的完全访问权限。 对于所有其他用户,您需要为其授予权限。您可以授予以下其中一种精细角色:
例如,如需向用户管理员授予对补丁程序部署的访问权限,请运行以下命令:
gcloud projects add-iam-policy-binding project-id \ --member user:user-id@gmail.com \ --role roles/osconfig.patchDeploymentAdmin
替换以下内容:
创建补丁程序部署
创建补丁程序部署时,补丁程序部署的名称必须满足以下命名要求:
在 Google Cloud CLI 和 REST 中,补丁程序部署的名称采用
patch-deployment-id
格式。启动补丁程序部署后,您可以使用补丁信息中心监控补丁。在修补作业开始约 30 分钟之后,数据会填充到信息中心内。
控制台
gcloud
使用
os-config patch-deployments create
命令创建补丁程序部署。gcloud compute os-config patch-deployments create patch-deployment-id \ --file patch-deployment-file
替换以下内容:
补丁程序部署 YAML 文件示例
以下示例 YAML 文件可用于为
us-west2-b
和us-west2-c
地区中的所有实例创建周期性时间安排。周期性时间安排具有以下规范:instanceFilter: zones: - us-west2-b - us-west2-c recurringSchedule: frequency: WEEKLY weekly: dayOfWeek: TUESDAY timeOfDay: hours: 19 minutes: 30 timeZone: id: America/Los_Angeles startTime: '2019-09-01T12:00:00Z' endTime: '2020-09-01T12:00:00Z'
REST
在 API 中,创建
POST
请求以创建新的补丁程序部署。 您必须按照patchDeployments.create
API 文档中的说明明确定义所有必需的配置字段。 例如,使用最少必填字段(即仅使用实例过滤条件和时间安排)的补丁程序部署如下所示。将project-id
替换为您的项目 ID。POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute { "instanceFilter": instance-filter // Add one of the following parameters: "recurringSchedule": schedule "oneTimeSchedule": schedule }
替换以下内容:
示例
示例 1:创建一次性时间安排,以在 2020 年 1 月 10 日凌晨 0:00(世界协调时间 (UTC))对
us-west2-b
和us-west2-c
地区中的所有实例运行修补作业。{ "instanceFilter":{ "zones":[ "us-west2-b", "us-west2-c" ] }, "oneTimeSchedule": { "executeTime": "2020-01-10T00:00:00Z" } }
示例 2:为
us-west2-b
和us-west2-c
区域中的所有实例创建周期性时间安排。周期性时间安排具有以下规范:POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments { "instanceFilter":{ "zones":[ "us-west2-b", "us-west2-c" ] }, "recurringSchedule":{ "frequency":"WEEKLY", "weekly":{ "dayOfWeek":"TUESDAY" }, "timeOfDay":{ "hours":19, "minutes":30 }, "timeZone":{ "id":"America/Los_Angeles" }, "startTime":"2019-09-01T12:00:00Z", "endTime":"2020-09-01T12:00:00Z" } }
列出补丁程序部署
控制台
gcloud
使用
os-config patch-deployments list
命令列出补丁程序部署。gcloud compute os-config patch-deployments list
此命令会返回所有补丁程序部署。 输出类似以下内容:
NAME LAST_RUN NEXT_RUN FREQUENCY first-deployment 2019-12-18T00:07:00.738Z --- Once: Scheduled for 2019-12-18T00:07:00.000Z my-deployment1 2020-01-05T14:00:00.228Z 2020-01-12T14:00:00Z Recurring - Weekly my-deployment2 --- 2020-01-15T05:30:00Z Recurring - Monthly on specific date(s)
您可以使用更多标志来限制搜索范围以及设置搜索格式。 例如,如需列出第 2 页中的前 10 个补丁程序部署,请运行以下命令。将
project-id
替换为您的项目 ID。gcloud compute os-config patch-deployments list --limit 10 --page-size 2
REST
在 API 中,创建对
patchDeployments.list
方法的GET
请求。将project-id
替换为您的项目 ID。GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
描述补丁程序部署
控制台
gcloud
使用
os-config patch-deployments describe
命令描述补丁程序部署。将patch-deployment-id
替换为您的补丁程序部署名称。gcloud compute os-config patch-deployments describe patch-deployment-id
REST
在 API 中,创建对
patchDeployments.get
方法的GET
请求。GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id
替换以下内容:
删除补丁程序部署
控制台
gcloud
使用
os-config patch-deployments delete
命令删除补丁程序部署。将patch-deployment-id
替换为您的补丁程序部署名称。gcloud compute os-config patch-deployments delete patch-deployment-id
REST
在 API 中,创建对
patchDeployments.delete
方法的DELETE
请求。DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-