google.cloud.gcp_cloudscheduler_job – Создаёт задачу GCP
Примечание
Этот плагин входит в сборку google.cloud (версия 1.0.1).
Для его установки используйте: ansible-galaxy collection install google.cloud.
Для использования в книге задач, укажите: google.cloud.gcp_cloudscheduler_job.
Описание
- Планируемая задача, которая может публиковать сообщение pubsub или HTTP-запрос каждые X интервалов времени, используя строку в формате crontab.
- Для использования Cloud Scheduler в вашем проекте должен быть приложение App Engine, расположенное в одном из поддерживаемых регионов. Если в вашем проекте нет приложения App Engine, вам необходимо создать его.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | ||
|---|---|---|---|---|
| app_engine_http_target словарь | Целевой App Engine HTTP. Если поставщик задач предоставляет целевой App Engine HTTP, планировщик задач отправит запрос на экземпляр службы. | |||
| app_engine_routing словарь | Настройка маршрутизации App Engine для задачи. | |||
| instance строка | Экземпляр приложения. По умолчанию задача отправляется на доступный экземпляр при попытке выполнения задачи. | |||
| service строка | Служба приложения. По умолчанию задача отправляется на службу, являющуюся службой по умолчанию при попытке выполнения задачи. | |||
| version строка | Версия приложения. По умолчанию задача отправляется на версию, являющуюся версией по умолчанию при попытке выполнения задачи. | |||
| body строка | Тело HTTP-запроса. Тело запроса разрешено только в случае, если метод HTTP равен POST или PUT. Установка тела в задаче с несовместимым методом HTTP приведет к ошибке невалидных аргументов. | |||
| headers словарь | Заголовки HTTP-запроса. Этот словарь содержит имена и значения заголовков. Заголовки могут быть установлены при создании задачи. | |||
| http_method строка | Какой метод HTTP использовать для запроса. | |||
| relative_uri строка / обязательно | Относительный URI. | |||
| attempt_deadline строка | По умолчанию: "180s" | Срок выполнения для попыток задач. Если обработчик запроса не отвечает к этому сроку, запрос отменяется, а попытка помечается как ошибка DEADLINE_EXCEEDED. Неудачную попытку можно увидеть в журналах выполнения. Cloud Scheduler повторит задачу в соответствии с RetryConfig. Разрешенное время для этого срока: * Для HTTP-целей - от 15 секунд до 30 минут. * Для App Engine HTTP-целей - от 15 секунд до 24 часов. * **Примечание**: Для целей PubSub это поле игнорируется — его установка приведет к неразрешимой разнице. Продолжительность в секундах с до девятью дробными цифрами, заканчивающаяся на 's'. Пример: "3.5s" . | ||
| auth_kind строка / обязательно |
| Тип используемых учетных данных. | ||
| description строка | Читаемое человеком описание задачи. Эта строка не должна содержать более 500 символов. | |||
| env_type строка | Указывает, в какой среде Ansible выполняется этот модуль. Это не следует устанавливать, если вы не знаете, что делаете. Это изменяет только строку User-Agent для любых запросов к API. | |||
| http_target словарь | HTTP-цель. Если задача предоставляет http_target, планировщик задач отправит запрос на указанный URL. | |||
| body строка | Тело HTTP-запроса. Тело запроса разрешено только в случае, если метод HTTP равен POST, PUT или PATCH. Установка тела в задаче с несовместимым методом HTTP — ошибка. | |||
| 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, указанный в target. | |||
| service_account_email строка / обязательно | Электронная почта учетной записи службы, которая будет использоваться для генерации OAuth-токен. Учетная запись службы должна находиться в том же проекте, что и задача. | |||
| uri строка / обязательно | Полный URI-путь, на который будет отправлен запрос. | |||
| name строка / обязательно | Имя задачи. | |||
| project строка | Проект Google Cloud Platform для использования. | |||
| pubsub_target словарь | Целевая Pub/Sub. Если задача предоставляет целевой Pub/Sub, планировщик задач опубликует сообщение в указанную тему. | |||
| attributes словарь | Атрибуты для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. | |||
| data строка | Загрузка сообщения для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. | |||
| topic_name строка / обязательно | Полное имя ресурса темы Cloud Pub/Sub, в которую будут публиковаться сообщения при доставке задачи. ~>**ПРИМЕЧАНИЕ:** Имя темы должно соответствовать формату, требуемому для PublishRequest.name в PubSub, например, `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 jsonarg | Содержание файла JSON учетной записи службы, представленное либо словарем, либо строкой JSON, которая его представляет. | |||
| service_account_email string | Необязательный адрес электронной почты учетной записи сервиса, если выбран machineaccount и пользователь не хочет использовать адрес по умолчанию. | |||
| service_account_file path | Путь к файлу JSON учетной записи сервиса, если тип serviceaccount выбран как тип. | |||
| state string |
| Указывает, должен ли данный объект существовать в GCP | ||
| time_zone string | Значение по умолчанию: "Etc/UTC" | Указывает часовой пояс, используемый при интерпретации расписания. Значение этого поля должно быть именем часового пояса из базы данных tz. | ||
Примечания
Примечание
- Ссылка на API: https://cloud.google.com/scheduler/docs/reference/rest/
- Официальная документация: https://cloud.google.com/scheduler/
- для аутентификации можно установить service_account_file с помощью переменной среды
gcp_service_account_file. - для аутентификации можно установить service_account_contents с помощью переменной среды
GCP_SERVICE_ACCOUNT_CONTENTS. - Для аутентификации можно установить service_account_email с помощью переменной среды
GCP_SERVICE_ACCOUNT_EMAIL. - Для аутентификации можно установить auth_kind с помощью переменной среды
GCP_AUTH_KIND. - Для аутентификации можно установить scopes с помощью переменной среды
GCP_SCOPES. - Значения переменных окружения будут использоваться только в том случае, если значения в playbook не заданы.
- Параметры service_account_email и service_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 complex | success | Целевой ресурс App Engine HTTP. Если задача указывает целевой ресурс App Engine HTTP, задача Cron отправит запрос экземпляру службы. | ||
| appEngineRouting complex | success | Настройки маршрутизации App Engine для задачи. | ||
| instance string | success | Экземпляр приложения. По умолчанию задача отправляется на доступный экземпляр при попытке выполнения. | ||
| service string | success | Служба приложения. По умолчанию задача отправляется в службу, которая является службой по умолчанию при попытке выполнения. | ||
| version string | success | Версия приложения. По умолчанию задача отправляется в версию, которая является версией по умолчанию при попытке выполнения. | ||
| body string | success | Тело HTTP-запроса. Тело запроса разрешено только в том случае, если HTTP-метод — POST или PUT. Установка тела для задачи с несовместимым HttpMethod приведет к ошибке «некорректный аргумент». | ||
| headers dictionary | success | Заголовки HTTP-запроса. Этот словарь содержит имена и значения заголовков. Заголовки можно задать при создании задачи. | ||
| httpMethod string | success | Какой HTTP-метод использовать для запроса. | ||
| relativeUri string | success | Относительный URI. | ||
| attemptDeadline string | success | Срок выполнения попыток задачи. Если обработчик запроса не отвечает к этому сроку, запрос отменяется, а попытка отмечается как ошибка DEADLINE_EXCEEDED. Ошибка попытки отображается в журналах выполнения. Cloud Scheduler будет повторно пытаться выполнить задачу в соответствии с RetryConfig. Допустимая продолжительность для этого срока: * Для HTTP-целей — от 15 секунд до 30 минут. * Для App Engine HTTP-целей — от 15 секунд до 24 часов. * **Примечание**: Для целей Pub/Sub это поле игнорируется — установка его приведет к неразрешимой разнице. Продолжительность в секундах с точностью до девяти знаков после запятой, завершаемая символом 's'. Пример: "3.5s". | ||
| description string | success | Описание задачи для человека. Это строка не должна содержать более 500 символов. | ||
| httpTarget complex | success | Целевой ресурс HTTP. Если задача указывает целевой ресурс HTTP, задача Cron отправит запрос на указанный URL. | ||
| body string | success | Тело HTTP-запроса. Тело запроса разрешено только в том случае, если HTTP-метод — POST, PUT или PATCH. Установка тела для задачи с несовместимым HttpMethod является ошибкой. | ||
| headers dictionary | success | Этот словарь содержит имена и значения заголовков. Повторные заголовки не поддерживаются, но значение заголовка может содержать запятые. | ||
| httpMethod string | success | Какой HTTP-метод использовать для запроса. | ||
| oauthToken complex | success | Содержит информацию, необходимую для генерации маркера OAuth. Этот тип авторизации следует использовать при отправке запросов на конечную точку GCP. | ||
| scope string | success | Область OAuth, используемая для генерации токена доступа OAuth. Если не указано, будет использоваться "https://www.googleapis.com/auth/cloud-platform". | ||
| serviceAccountEmail string | success | Электронный адрес учетной записи службы, используемой для генерации маркера OAuth. Учетная запись службы должна находиться в том же проекте, что и задача. | ||
| oidcToken complex | success | Содержит информацию, необходимую для генерации токена OpenID Connect. Этот тип авторизации следует использовать при отправке запросов на конечные точки сторонних разработчиков или Cloud Run. | ||
| audience string | success | Аудитория, используемая при генерации токена OIDC. Если не указано, будет использован URI, указанный в целевом ресурсе. | ||
| serviceAccountEmail string | success | Электронный адрес учетной записи службы, используемой для генерации маркера OAuth. Учетная запись службы должна находиться в том же проекте, что и задача. | ||
| uri string | success | Полный URI-путь, на который будет отправлен запрос. | ||
| name string | success | Имя задачи. | ||
| pubsubTarget complex | success | Целевой ресурс Pub/Sub. Если задача указывает целевой ресурс Pub/Sub, задача Cron опубликует сообщение в указанную тему. | ||
| attributes dictionary | success | Атрибуты для PubsubMessage. Сообщение Pub/Sub должно содержать либо непустые данные, либо хотя бы один атрибут. | ||
| data string | success | Полезная нагрузка сообщения для PubsubMessage. Сообщение Pub/Sub должно содержать либо непустые данные, либо хотя бы один атрибут. | ||
| topicName string | success | Полное имя ресурса темы Cloud Pub/Sub, в которую будут публиковаться сообщения при выполнении задачи. ~>**ПРИМЕЧАНИЕ**: Имя темы должно иметь тот же формат, что и требуется для PublishRequest.name в Pub/Sub, например, `projects/my-project/topics/my-topic`. | ||
| region string | success | Регион, где находится задача планировщика. | ||
| retryConfig complex | success | По умолчанию, если задача не завершилась успешно, то есть от обработчика не получено подтверждение, она будет повторно выполнена с экспоненциальной задержкой в соответствии с параметрами. | ||
| maxBackoffDuration string | success | Максимальное время ожидания перед повторной попыткой выполнения задачи после ее завершения с ошибкой. Продолжительность в секундах с точностью до девяти знаков после запятой, завершаемая символом 's'. | ||
| maxDoublings integer | success | Время между повторными попытками будет удваиваться maxDoublings раз. Интервал повторной попытки задачи начинается с minBackoffDuration, затем удваивается maxDoublings раз, затем увеличивается линейно и, наконец, повторные попытки выполняются с интервалами maxBackoffDuration до достижения retryCount раз. | ||
| maxRetryDuration string | success | Предельное время для повторной попытки выполнения задачи после завершения с ошибкой, измеряемое с момента первой попытки выполнения. Если указано с retryCount, задача будет повторно выполняться до тех пор, пока не будут достигнуты оба предела. Продолжительность в секундах с точностью до девяти знаков после запятой, завершаемая символом 's'. | ||
| minBackoffDuration string | success | Минимальное время ожидания перед повторной попыткой выполнения задачи после ее завершения с ошибкой. Продолжительность в секундах с точностью до девяти знаков после запятой, завершаемая символом 's'. | ||
| retryCount integer | success | Количество попыток, которые система предпримет для выполнения задачи с экспоненциальной задержкой, описанной maxDoublings. Значения больше 5 и отрицательные значения запрещены. | ||
| schedule string | success | Описывает расписание, по которому задача будет выполняться. | ||
| timeZone string | success | Указывает часовой пояс, используемый при интерпретации расписания. Значение этого поля должно быть названием часового пояса из базы данных tz. | ||
Авторы
- Google Inc. (@googlecloudplatform)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/google/cloud/gcp_cloudscheduler_job_module.html