community.google.gcpubsub – Создание и удаление тем/подписок, публикация и получение сообщений в PubSub
Примечание
Этот плагин входит в коллекцию community.google (версия 1.0.0).
Для его установки используйте: ansible-galaxy collection install community.google.
Чтобы использовать его в книге задач, укажите: community.google.gcpubsub.
Обзор
- Создание и удаление тем/подписок, публикация и получение сообщений в PubSub. См. https://cloud.google.com/pubsub/docs для общего обзора.
Требования
Ниже перечислены требования, которые должны быть выполнены на хосте, на котором выполняется данный модуль.
- google-auth >= 0.5.0
- google-cloud-pubsub >= 0.22.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| credentials_file строка | путь к JSON-файлу, связанному с электронным адресом учетной записи службы | ||
| project_id строка | ваш идентификатор проекта GCE | ||
| publish список / элементы=строка | Список словарей, описывающих сообщения и атрибуты, которые нужно опубликовать. Словарь имеет формат message(строка):attributes(словарь). Требуется только сообщение. | ||
| service_account_email строка | электронный адрес учетной записи службы | ||
| state строка |
| Состояние темы или очереди. Применяется к самому детализированному ресурсу. Если указана подписка, она удаляется. Если указана только тема, удаляется она. ПРИМЕЧАНИЕ - Тема может быть удалена без предварительного удаления подписки. | |
| subscription словарь | Словарь, содержащий имя подписки, связанной с темой (обязательно), а также необязательные ack_deadline, push_endpoint и pull. Для извлечения сообщений из подписки доступны подполя message_ack (логическое значение), max_messages (целое число) и return_immediate. См. поля name, push_endpoint и ack_deadline для получения дополнительной информации. | ||
| ack_deadline строка | Подполе подписки. Необязательно. Срок ожидания по умолчанию для подписок, чтобы подтвердить (ACK) сообщение, прежде чем оно будет повторно отправлено. Смотрите примеры. | ||
| name строка | Подполе подписки. Обязательно, если указана подписка. См. примеры. | ||
| pull строка | Подполе подписки. Необязательно. Если указано, сообщения будут извлекаться из темы через указанное имя подписки. max_messages (целое число; значение по умолчанию None; максимальное количество сообщений для извлечения), message_ack (логическое значение; значение по умолчанию False; подтверждение сообщения) и return_immediately (логическое значение; значение по умолчанию True, не ждать появления сообщений). Если сообщения подтверждены, changed устанавливается в True, в противном случае в False. | ||
| push_endpoint строка | Подполе подписки. Необязательно. Если указано, сообщение будет отправлено на конечную точку. См. https://cloud.google.com/pubsub/docs/advanced#push_endpoints для получения дополнительной информации. | ||
| topic строка / обязательно | Имя темы GCP pubsub. Требуется только имя, а не полный путь. | ||
Примечания
Примечание
- Извлечение подписки происходит до публикации. Вы не можете публиковать и извлекать в одной задаче.
Примеры
# (Message will be pushed; there is no check to see if the message was pushed before
- name: Create a topic and publish a message to it
community.google.gcpubsub:
topic: ansible-topic-example
state: present
# Subscriptions associated with topic are not deleted.
- name: Delete Topic
community.google.gcpubsub:
topic: ansible-topic-example
state: absent
# Setting absent will keep the messages from being sent
- name: Publish multiple messages, with attributes (key:value available with the message)
community.google.gcpubsub:
topic: '{{ topic_name }}'
state: present
publish:
- message: this is message 1
attributes:
mykey1: myvalue
mykey2: myvalu2
mykey3: myvalue3
- message: this is message 2
attributes:
server: prod
sla: "99.9999"
owner: fred
- name: Create Subscription (pull)
community.google.gcpubsub:
topic: ansible-topic-example
subscription:
- name: mysub
state: present
# pull is default, ack_deadline is not required
- name: Create Subscription with ack_deadline and push endpoint
community.google.gcpubsub:
topic: ansible-topic-example
subscription:
- name: mysub
ack_deadline: "60"
push_endpoint: http://pushendpoint.example.com
state: present
# Setting push_endpoint to "None" converts subscription to pull.
- name: Subscription change from push to pull
community.google.gcpubsub:
topic: ansible-topic-example
subscription:
name: mysub
push_endpoint: "None"
### Topic will not be deleted
- name: Delete subscription
community.google.gcpubsub:
topic: ansible-topic-example
subscription:
- name: mysub
state: absent
# only pull keyword is required.
- name: Pull messages from subscription
community.google.gcpubsub:
topic: ansible-topic-example
subscription:
name: ansible-topic-example-sub
pull:
message_ack: yes
max_messages: "100"
Возвращаемые значения
Общие возвращаемые значения описаны в разделе, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| publish список / элементы=строка | Только при указании | Список словарей, описывающих сообщения и атрибуты, которые нужно опубликовать. Словарь имеет формат message(строка):attributes(словарь). Требуется только сообщение. Пример: publish: ['message': 'моё сообщение', attributes: {'key1': 'value1'}] |
| pulled_messages список / элементы=строка | Только при указании subscription.pull | Список словарей, содержащих информацию о сообщении. Поля: ack_id, attributes, data, message_id. Пример: [{'ack_id': 'XkASTCcYREl...', 'attributes': {'...': None, 'key1': 'val1'}, 'data': 'это сообщение 1', 'message_id': '49107464153705'}, '..'] |
| state строка | Всегда | Состояние темы или подписки. Значение будет либо 'absent', либо 'present'. Пример: present |
| subscription строка | При указании полей подписки | Имя подписки. Пример: mysubscription |
| topic строка | Всегда | Имя темы. Пример: mytopic |
Авторы
- Tom Melendez (@supertom) <tom@supertom.com>
© 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/community/google/gcpubsub_module.html