google.cloud.gcp_cloudscheduler_job – Создаёт задачу GCP
Примечание
Этот плагин входит в коллекцию google.cloud (версия 1.0.2).
Для его установки используйте: 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. Установка тела в задаче с несовместимым HttpMethod приведет к ошибке неверного аргумента. Строка, закодированная в base64. | |||
| headers словарь | Заголовки HTTP-запроса. Этот словарь содержит имена и значения заголовков. Заголовки можно установить при создании задачи. | |||
| http_method строка | Какой HTTP-метод использовать для запроса. | |||
| relative_uri строка / обязательно | Относительный URI. | |||
| attempt_deadline строка | По умолчанию: "180s" | Срок выполнения попытки задачи. Если обработчик запроса не отвечает к этому сроку, запрос отменяется, а попытка отмечается как ошибка DEADLINE_EXCEEDED. Неудачную попытку можно просмотреть в логах выполнения. Cloud Scheduler повторит задачу в соответствии с RetryConfig. Разрешенная продолжительность для этого срока: * Для HTTP-целей — от 15 секунд до 30 минут. * Для HTTP-целей App Engine — от 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. Установка тела в задаче с несовместимым 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, указанный в target. | |||
| service_account_email строка / обязательно | Электронный адрес учетной записи службы, используемой для генерации токена OAuth. Учетная запись службы должна находиться в том же проекте, что и задача. | |||
| uri строка / обязательно | Полный URI-путь, на который будет отправлен запрос. | |||
| name строка / обязательно | Имя задачи. | |||
| project строка | Проект Google Cloud Platform для использования. | |||
| pubsub_target словарь | Целевой ресурс Pub/Sub. Если задача предоставляет целевой ресурс Pub/Sub, планировщик задач опубликует сообщение в указанную тему. | |||
| attributes словарь | Атрибуты для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. | |||
| data строка | Полезная нагрузка сообщения для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. Строка, закодированная в base64. | |||
| topic_name строка / обязательно | Полное имя ресурса темы Cloud Pub/Sub, в которую будут публиковаться сообщения при доставке задачи. ~>**ПРИМЕЧАНИЕ:** Имя темы должно соответствовать формату, требуемому для PublishRequest.name в PubSub, например, `projects/my-project/topics/my-topic`. | |||
| region строка / обязательно | Регион, в котором находится задача планировщика. | |||
| retry_config словарь | По умолчанию, если задача не выполняется успешно, то есть от обработчика не получено подтверждение, она будет повторно выполняться с экспоненциальной задержкой в соответствии с настройками. | |||
| max_backoff_duration строка | Максимальное время ожидания перед повторной попыткой выполнения задачи после её неудачи. Продолжительность в секундах с точностью до девяти знаков после запятой. | |||
| max_doublings целое число | Количество раз, когда время между повторами будет удваиваться. Интервал повтора задачи начинается с minBackoffDuration, затем удваивается maxDoublings раз, затем увеличивается линейно и, наконец, повторяется с интервалами maxBackoffDuration до retryCount раз. | |||
| max_retry_duration строка | Предельное время для повторных попыток выполнения неудачной задачи, измеряемое с момента первой попытки выполнения. Продолжительность в секундах с точностью до девяти знаков после запятой. | |||
| min_backoff_duration строка | Минимальное время ожидания перед повторной попыткой выполнения задачи после её неудачи. Продолжительность в секундах с точностью до девяти знаков после запятой. | |||
| 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. - Значения переменных среды будут использоваться только в том случае, если значения в playбуке не заданы.
- Параметры 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, планировщик задач отправит запрос в экземпляр службы. | ||
| appEngineRouting complex | success | Настройка маршрутизации App Engine для задания. | ||
| instance string | success | Экземпляр приложения. По умолчанию задание отправляется в доступный экземпляр при попытке выполнения задания. | ||
| service string | success | Служба приложения. По умолчанию задание отправляется в службу, которая является службой по умолчанию при попытке выполнения задания. | ||
| version string | success | Версия приложения. По умолчанию задание отправляется в версию, которая является версией по умолчанию при попытке выполнения задания. | ||
| body string | success | Тело HTTP-запроса. Тело запроса разрешено только в случае, если HTTP-метод — POST или PUT. Установка тела в задании с несовместимым HttpMethod приведет к ошибке некорректного аргумента. Строка, закодированная в base64. | ||
| 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_target, планировщик задач отправит запрос по указанному URL. | ||
| body string | success | Тело HTTP-запроса. Тело запроса разрешено только в случае, если HTTP-метод — POST, PUT или PATCH. Установка тела в задании с несовместимым HttpMethod — ошибка. Строка, закодированная в base64. | ||
| 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, планировщик задач опубликует сообщение в указанную тему. | ||
| attributes dictionary | success | Атрибуты для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. | ||
| data string | success | Полезная нагрузка сообщения для PubsubMessage. Сообщение Pubsub должно содержать либо непустые данные, либо хотя бы один атрибут. Строка, закодированная в base64. | ||
| topicName string | success | Полное имя ресурса темы Cloud Pub/Sub, в которую будут публиковаться сообщения при доставке задания. ~>**ПРИМЕЧАНИЕ**: Имя темы должно соответствовать формату, требуемому для параметра name в PublishRequest PubSub, например, `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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/google/cloud/gcp_cloudscheduler_job_module.html