google.cloud.gcp_cloudscheduler_job 模块 – 创建一个 GCP 作业

注意

此模块是 google.cloud 集合(版本 1.4.1)的一部分。

如果您使用的是 ansible 包,您可能已经安装了这个集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install google.cloud。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求

要在剧本中使用它,请指定: google.cloud.gcp_cloudscheduler_job

注意

由于违反 Ansible 包含要求,google.cloud 集合将从 Ansible 12 中删除。该集合有 未解决的健全性测试失败。有关更多信息,请参阅讨论主题

概要

  • 一个计划的作业,可以使用 crontab 格式字符串,每 X 个时间间隔发布一个 pubsub 消息或一个 http 请求。

  • 要使用 Cloud Scheduler,您的项目必须包含一个位于支持区域之一的 App Engine 应用。如果您的项目没有 App Engine 应用,则必须创建一个。

要求

执行此模块的主机需要以下要求。

  • python >= 2.6

  • requests >= 2.18.4

  • google-auth >= 1.3.0

参数

参数

注释

access_token

字符串

如果凭据类型为 accesstoken,则为 OAuth2 访问令牌。

app_engine_http_target

字典

App Engine HTTP 目标。

如果作业提供 App Engine HTTP 目标,则 cron 将向服务实例发送请求。

app_engine_routing

字典

作业的 App Engine 路由设置。

instance

字符串

App 实例。

默认情况下,作业将发送到尝试作业时可用的实例。

service

字符串

App 服务。

默认情况下,作业将发送到尝试作业时作为默认服务的服务。

version

字符串

App 版本。

默认情况下,作业将发送到尝试作业时作为默认版本的版本。

body

字符串

HTTP 请求正文。仅当 HTTP 方法为 POST 或 PUT 时才允许请求正文。在具有不兼容 HttpMethod 的作业上设置正文会导致无效参数错误。

一个 base64 编码的字符串。

headers

字典

HTTP 请求头。

此映射包含头字段名称和值。可以在创建作业时设置头。

http_method

字符串

用于请求的 HTTP 方法。

relative_uri

字符串 / 必需

相对 URI。

attempt_deadline

字符串

作业尝试的截止时间。如果请求处理程序未在此截止时间前响应,则请求将被取消,并且该尝试将标记为 DEADLINE_EXCEEDED 失败。可以在执行日志中查看失败的尝试。Cloud Scheduler 将根据 RetryConfig 重试作业。

此截止时间允许的持续时间为: * 对于 HTTP 目标,介于 15 秒到 30 分钟之间。

* 对于 App Engine HTTP 目标,介于 15 秒到 24 小时之间。

* **注意**:对于 PubSub 目标,此字段将被忽略 - 设置它将引入一个不可解析的差异。

一个持续时间,以秒为单位,最多有九个小数位,并以“s”结尾。示例:“3.5s”。

默认值: "180s"

auth_kind

字符串 / 必需

使用的凭据类型。

选择

  • "application"

  • "machineaccount"

  • "serviceaccount"

  • "accesstoken"

description

字符串

作业的人工可读描述。此字符串的字符数不得超过 500 个。

env_type

字符串

指定您在此模块中运行的 Ansible 环境。

除非您知道自己在做什么,否则不应设置此项。

这只会更改任何 API 请求的 User Agent 字符串。

http_target

字典

HTTP 目标。

如果作业提供 http_target,则 cron 将向目标 URL 发送请求。

body

字符串

HTTP 请求正文。仅当 HTTP 方法为 POST、PUT 或 PATCH 时才允许请求正文。在具有不兼容 HttpMethod 的作业上设置正文是一个错误。

一个 base64 编码的字符串。

headers

字典

此映射包含头字段名称和值。不支持重复的头,但头值可以包含逗号。

http_method

字符串

用于请求的 HTTP 方法。

oauth_token

字典

包含生成 OAuth 令牌所需的信息。

当向 GCP 端点发送请求时,应使用此类型的授权。

scope

字符串

用于生成 OAuth 访问令牌的 OAuth 范围。如果未指定,则将使用“https://www.googleapis.com/auth/cloud-platform”

service_account_email

字符串 / 必需

用于生成 OAuth 令牌的服务帐户电子邮件。

服务帐户必须与作业在同一项目内。

oidc_token

字典

包含生成 OpenID Connect 令牌所需的信息。

当向第三方端点或 Cloud Run 发送请求时,应使用此类型的授权。

audience

字符串

生成 OIDC 令牌时要使用的受众。如果未指定,将使用目标中指定的 URI。

service_account_email

字符串 / 必需

用于生成 OAuth 令牌的服务帐户电子邮件。

服务帐户必须与作业在同一项目内。

uri

字符串 / 必需

请求将发送到的完整 URI 路径。

name

字符串 / 必需

作业的名称。

project

字符串

要使用的 Google Cloud Platform 项目。

pubsub_target

字典

Pub/Sub 目标。如果作业提供 Pub/Sub 目标,则 cron 将向提供的主题发布消息。

attributes

字典

PubsubMessage 的属性。

Pubsub 消息必须包含非空数据,或至少包含一个属性。

data

字符串

PubsubMessage 的消息有效负载。

Pubsub 消息必须包含非空数据,或至少包含一个属性。

一个 base64 编码的字符串。

topic_name

字符串 / 必需

Cloud Pub/Sub 主题的完整资源名称,当传递作业时,消息将发布到该主题。~>**注意:**主题名称必须与 PubSub 的 PublishRequest.name 所需的格式相同,例如 `projects/my-project/topics/my-topic`。

region

字符串 / 必需

调度器作业所在的区域。

retry_config

字典

默认情况下,如果作业未成功完成,这意味着未收到来自处理程序的确认,则会根据设置使用指数退避重试。

max_backoff_duration

字符串

作业失败后重试作业前要等待的最大时间量。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

max_doublings

整数

重试之间的时间将翻倍 maxDoublings 次。

作业的重试间隔从 minBackoffDuration 开始,然后翻倍 maxDoublings 次,然后线性增加,最后以 maxBackoffDuration 的间隔重试,直到达到 retryCount 次。

max_retry_duration

字符串

重试失败作业的时间限制,从首次尝试执行时开始计算。如果指定了 retryCount,则将重试该作业,直到达到这两个限制。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

min_backoff_duration

字符串

作业失败后,在重试之前等待的最短时间。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

retry_count

整数

系统将使用 maxDoublings 描述的指数退避过程运行作业的尝试次数。

不允许大于 5 和负值。

schedule

字符串

描述作业的执行计划。

scopes

列表 / 元素=字符串

要使用的作用域数组

service_account_contents

json参数

服务帐户 JSON 文件的内容,可以是字典形式,也可以是表示它的 JSON 字符串。

service_account_email

字符串

如果选择 machineaccount 并且用户不希望使用默认电子邮件,则可选的服务帐户电子邮件地址。

service_account_file

路径

如果选择 serviceaccount 作为类型,则为服务帐户 JSON 文件的路径。

state

字符串

给定的对象是否应该存在于 GCP 中

选择

  • "present" ← (默认)

  • "absent"

time_zone

字符串

指定用于解释计划的时区。

此字段的值必须是 tz 数据库中的时区名称。

默认值: "Etc/UTC"

注释

注意

  • API 参考:https://cloud.google.com/scheduler/docs/reference/rest/

  • 官方文档:https://cloud.google.com/scheduler/

  • 对于身份验证,您可以使用 GCP_SERVICE_ACCOUNT_FILE 环境变量设置 service_account_file。

  • 对于身份验证,您可以使用 GCP_SERVICE_ACCOUNT_CONTENTS 环境变量设置 service_account_contents。

  • 对于身份验证,您可以使用 GCP_SERVICE_ACCOUNT_EMAIL 环境变量设置 service_account_email。

  • 对于身份验证,您可以使用 GCP_ACCESS_TOKEN 环境变量设置 access_token。

  • 对于身份验证,您可以使用 GCP_AUTH_KIND 环境变量设置 auth_kind。

  • 对于身份验证,您可以使用 GCP_SCOPES 环境变量设置 scopes。

  • 仅当未设置剧本值时,才会使用环境变量值。

  • service_account_emailservice_account_file 选项是互斥的。

示例

- name: create a job
  google.cloud.gcp_cloudscheduler_job:
    name: job
    region: us-central1
    schedule: "*/4 * * * *"
    description: test app engine job
    time_zone: Europe/London
    attempt_deadline: 320s
    app_engine_http_target:
      http_method: POST
      app_engine_routing:
        service: web
        version: prod
        instance: my-instance-001
      relative_uri: "/ping"
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

返回值

通用返回值记录在 这里,以下是此模块特有的字段

描述

appEngineHttpTarget

复杂

App Engine HTTP 目标。

如果作业提供 App Engine HTTP 目标,则 cron 将向服务实例发送请求。

返回值:成功

appEngineRouting

复杂

作业的 App Engine 路由设置。

返回值:成功

instance

字符串

App 实例。

默认情况下,作业将发送到尝试作业时可用的实例。

返回值:成功

service

字符串

App 服务。

默认情况下,作业将发送到尝试作业时作为默认服务的服务。

返回值:成功

version

字符串

App 版本。

默认情况下,作业将发送到尝试作业时作为默认版本的版本。

返回值:成功

body

字符串

HTTP 请求正文。仅当 HTTP 方法为 POST 或 PUT 时才允许请求正文。在具有不兼容 HttpMethod 的作业上设置正文会导致无效参数错误。

一个 base64 编码的字符串。

返回值:成功

headers

字典

HTTP 请求头。

此映射包含头字段名称和值。可以在创建作业时设置头。

返回值:成功

httpMethod

字符串

用于请求的 HTTP 方法。

返回值:成功

relativeUri

字符串

相对 URI。

返回值:成功

attemptDeadline

字符串

作业尝试的截止时间。如果请求处理程序未在此截止时间前响应,则请求将被取消,并且该尝试将标记为 DEADLINE_EXCEEDED 失败。可以在执行日志中查看失败的尝试。Cloud Scheduler 将根据 RetryConfig 重试作业。

此截止时间允许的持续时间为: * 对于 HTTP 目标,介于 15 秒到 30 分钟之间。

* 对于 App Engine HTTP 目标,介于 15 秒到 24 小时之间。

* **注意**:对于 PubSub 目标,此字段将被忽略 - 设置它将引入一个不可解析的差异。

一个持续时间,以秒为单位,最多有九个小数位,并以“s”结尾。示例:“3.5s”。

返回值:成功

description

字符串

作业的人工可读描述。此字符串的字符数不得超过 500 个。

返回值:成功

httpTarget

复杂

HTTP 目标。

如果作业提供 http_target,则 cron 将向目标 URL 发送请求。

返回值:成功

body

字符串

HTTP 请求正文。仅当 HTTP 方法为 POST、PUT 或 PATCH 时才允许请求正文。在具有不兼容 HttpMethod 的作业上设置正文是一个错误。

一个 base64 编码的字符串。

返回值:成功

headers

字典

此映射包含头字段名称和值。不支持重复的头,但头值可以包含逗号。

返回值:成功

httpMethod

字符串

用于请求的 HTTP 方法。

返回值:成功

oauthToken

复杂

包含生成 OAuth 令牌所需的信息。

当向 GCP 端点发送请求时,应使用此类型的授权。

返回值:成功

scope

字符串

用于生成 OAuth 访问令牌的 OAuth 范围。如果未指定,则将使用“https://www.googleapis.com/auth/cloud-platform”

返回值:成功

serviceAccountEmail

字符串

用于生成 OAuth 令牌的服务帐户电子邮件。

服务帐户必须与作业在同一项目内。

返回值:成功

oidcToken

复杂

包含生成 OpenID Connect 令牌所需的信息。

当向第三方端点或 Cloud Run 发送请求时,应使用此类型的授权。

返回值:成功

audience

字符串

生成 OIDC 令牌时要使用的受众。如果未指定,将使用目标中指定的 URI。

返回值:成功

serviceAccountEmail

字符串

用于生成 OAuth 令牌的服务帐户电子邮件。

服务帐户必须与作业在同一项目内。

返回值:成功

uri

字符串

请求将发送到的完整 URI 路径。

返回值:成功

name

字符串

作业的名称。

返回值:成功

pubsubTarget

复杂

Pub/Sub 目标。如果作业提供 Pub/Sub 目标,则 cron 将向提供的主题发布消息。

返回值:成功

attributes

字典

PubsubMessage 的属性。

Pubsub 消息必须包含非空数据,或至少包含一个属性。

返回值:成功

data

字符串

PubsubMessage 的消息有效负载。

Pubsub 消息必须包含非空数据,或至少包含一个属性。

一个 base64 编码的字符串。

返回值:成功

topicName

字符串

Cloud Pub/Sub 主题的完整资源名称,当传递作业时,消息将发布到该主题。~>**注意:**主题名称必须与 PubSub 的 PublishRequest.name 所需的格式相同,例如 `projects/my-project/topics/my-topic`。

返回值:成功

region

字符串

调度器作业所在的区域。

返回值:成功

retryConfig

复杂

默认情况下,如果作业未成功完成,这意味着未收到来自处理程序的确认,则会根据设置使用指数退避重试。

返回值:成功

maxBackoffDuration

字符串

作业失败后重试作业前要等待的最大时间量。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

返回值:成功

maxDoublings

整数

重试之间的时间将翻倍 maxDoublings 次。

作业的重试间隔从 minBackoffDuration 开始,然后翻倍 maxDoublings 次,然后线性增加,最后以 maxBackoffDuration 的间隔重试,直到达到 retryCount 次。

返回值:成功

maxRetryDuration

字符串

重试失败作业的时间限制,从首次尝试执行时开始计算。如果指定了 retryCount,则将重试该作业,直到达到这两个限制。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

返回值:成功

minBackoffDuration

字符串

作业失败后,在重试之前等待的最短时间。

一个以秒为单位的持续时间,最多包含九位小数,并以“s”结尾。

返回值:成功

retryCount

整数

系统将使用 maxDoublings 描述的指数退避过程运行作业的尝试次数。

不允许大于 5 和负值。

返回值:成功

schedule

字符串

描述作业的执行计划。

返回值:成功

timeZone

字符串

指定用于解释计划的时区。

此字段的值必须是 tz 数据库中的时区名称。

返回值:成功

作者

  • Google Inc. (@googlecloudplatform)