community.general.gcpubsub (1.3.14) — module

Create and Delete Topics/Subscriptions, Publish and pull messages on PubSub

Authors: Tom Melendez (@supertom) <tom@supertom.com>

Install collection

Install with ansible-galaxy collection install community.general:==1.3.14


Add to requirements.yml

  collections:
    - name: community.general
      version: 1.3.14

Description

Create and Delete Topics/Subscriptions, Publish and pull messages on PubSub. See U(https://cloud.google.com/pubsub/docs) for an overview.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# (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.general.gcpubsub:
    topic: ansible-topic-example
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Subscriptions associated with topic are not deleted.
- name: Delete Topic
  community.general.gcpubsub:
    topic: ansible-topic-example
    state: absent
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Setting absent will keep the messages from being sent
- name: Publish multiple messages, with attributes (key:value available with the message)
  community.general.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
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Create Subscription (pull)
  community.general.gcpubsub:
    topic: ansible-topic-example
    subscription:
    - name: mysub
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# pull is default, ack_deadline is not required
- name: Create Subscription with ack_deadline and push endpoint
  community.general.gcpubsub:
    topic: ansible-topic-example
    subscription:
    - name: mysub
      ack_deadline: "60"
      push_endpoint: http://pushendpoint.example.com
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Setting push_endpoint to "None" converts subscription to pull.
- name: Subscription change from push to pull
  community.general.gcpubsub:
    topic: ansible-topic-example
    subscription:
      name: mysub
      push_endpoint: "None"
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
### Topic will not be deleted
- name: Delete subscription
  community.general.gcpubsub:
    topic: ansible-topic-example
    subscription:
    - name: mysub
    state: absent
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# only pull keyword is required.
- name: Pull messages from subscription
  community.general.gcpubsub:
    topic: ansible-topic-example
    subscription:
      name: ansible-topic-example-sub
      pull:
        message_ack: yes
        max_messages: "100"

Inputs

    
state:
    choices:
    - absent
    - present
    default: present
    description:
    - State of the topic or queue.
    - Applies to the most granular resource.
    - If subscription isspecified we remove it.
    - If only topic is specified, that is what is removed.
    - NOTE - A topic can be removed without first removing the subscription.
    type: str

topic:
    description:
    - GCP pubsub topic name.
    - Only the name, not the full path, is required.
    required: true
    type: str

publish:
    description:
    - List of dictionaries describing messages and attributes to be published.  Dictionary
      is in message(str):attributes(dict) format. Only message is required.
    type: list

project_id:
    description:
    - your GCE project ID
    type: str

subscription:
    description:
    - Dictionary containing a subscription name associated with a topic (required), along
      with optional ack_deadline, push_endpoint and pull. For pulling from a subscription,
      message_ack (bool), max_messages (int) and return_immediate are available as subfields.
      See subfields name, push_endpoint and ack_deadline for more information.
    suboptions:
      ack_deadline:
        description:
        - Subfield of subscription. Not required. Default deadline for subscriptions to
          ACK the message before it is resent. See examples.
      name:
        description:
        - Subfield of subscription. Required if subscription is specified. See examples.
      pull:
        description:
        - Subfield of subscription. Not required. If specified, messages will be retrieved
          from topic via the provided subscription name. max_messages (int; default None;
          max number of messages to pull), message_ack (bool; default False; acknowledge
          the message) and return_immediately (bool; default True, don't wait for messages
          to appear). If the messages are acknowledged, changed is set to True, otherwise,
          changed is False.
      push_endpoint:
        description:
        - Subfield of subscription.  Not required.  If specified, message will be sent
          to an endpoint. See U(https://cloud.google.com/pubsub/docs/advanced#push_endpoints)
          for more information.
    type: dict

credentials_file:
    description:
    - path to the JSON file associated with the service account email
    type: str

service_account_email:
    description:
    - service account email
    type: str

Outputs

publish:
  description: List of dictionaries describing messages and attributes to be published.  Dictionary
    is in message(str):attributes(dict) format. Only message is required.
  returned: Only when specified
  sample: 'publish: [''message'': ''my message'', attributes: {''key1'': ''value1''}]'
  type: list
pulled_messages:
  description: list of dictionaries containing message info.  Fields are ack_id, attributes,
    data, message_id.
  returned: Only when subscription.pull is specified
  sample:
  - ack_id: XkASTCcYREl...
    attributes:
      '...': null
      key1: val1
    data: this is message 1
    message_id: '49107464153705'
  - ..
  type: list
state:
  description: The state of the topic or subscription. Value will be either 'absent'
    or 'present'.
  returned: Always
  sample: present
  type: str
subscription:
  description: Name of subscription.
  returned: When subscription fields are specified
  sample: mysubscription
  type: str
topic:
  description: Name of topic.
  returned: Always
  sample: mytopic
  type: str