Skip to main content

Ansible modules to configure Solace PubSub+ event brokers with SEMP(v2).

Project description

Ansible Modules for Solace PubSub+ Event Brokers SEMP(v2) REST API

Ansible modules to configure Solace PubSub+ event brokers with SEMP v2.

Release Notes

QUICKSTART

Install

Install ansible & python3. Check that python points to the right version:

python -V   # ==> must be >=3.6

Install / upgrade ansible-solace:

pip3 install ansible-solace

Package location:

Get the location of the package:

pip3 show ansible-solace

Name: ansible-solace
...
Location: {your-install-path}/site-packages
...

If your Ansible install location is different to the ansible-solace package, you have to tell Ansible about these modules. You can find a description here: Adding modules and plugins locally or you can set the ANSIBLE_MODULE_UTILS and ANSIBLE_LIBRARY environment variables:

export ANSIBLE_MODULE_UTILS={your-install-path}/ansible/module_utils
export ANSIBLE_LIBRARY={your-install-path}/ansible/modules

# check:
ansible-doc -l | grep solace

Note: You can also have a look at set-ansible-env.sh.

Python interpreter:

Depending on your OS/environment, you may have to set the python interpreter explicitly. For example, set the ANSIBLE_PYTHON_INTERPRETER variable:

# find the location of your python installation
brew info python
# or
which python
# set the location
# e.g.
export ANSIBLE_PYTHON_INTERPRETER=/usr/local/bin/python

Run the Example

Pre-requisites

  • a Solace PubSub+ Broker (Cloud or Software)
  • credentials for the admin (sempv2) interface

Configure the Inventory

Copy the example below to brokers.inventory.json and enter the values:

{
  "all": {
    "hosts": {
      "{your broker name}": {
        "ansible_connection": "local",
        "sempv2_host": "{host, e.g. xxxx.messaging.solace.cloud}",
        "sempv2_port": 943,
        "sempv2_is_secure_connection": true,
        "sempv2_username": "{admin user name}",
        "sempv2_password": "{admin user password}",
        "sempv2_timeout": "60",
        "vpn": "{message vpn}"
      }
    }
  }
}

Copy the example below to setup-queue.playbook.yml:

-
  name: Setup A Queue with a Subscription

  hosts: all

  module_defaults:
    solace_queue_subscription:
      host: "{{ sempv2_host }}"
      port: "{{ sempv2_port }}"
      secure_connection: "{{ sempv2_is_secure_connection }}"
      username: "{{ sempv2_username }}"
      password: "{{ sempv2_password }}"
      timeout: "{{ sempv2_timeout }}"
      msg_vpn: "{{ vpn }}"
    solace_queue:
      host: "{{ sempv2_host }}"
      port: "{{ sempv2_port }}"
      secure_connection: "{{ sempv2_is_secure_connection }}"
      username: "{{ sempv2_username }}"
      password: "{{ sempv2_password }}"
      timeout: "{{ sempv2_timeout }}"
      msg_vpn: "{{ vpn }}"

  tasks:

    - name: Add / update the queue
      solace_queue:
        name: "my-queue"
        settings:
          egressEnabled: true
          ingressEnabled: true
          permission: "consume"
        state: present

    - name: Create subscription on queues
      solace_queue_subscription:
        queue: "my-queue"
        name: "my/subscription/topic"
        state: present

Run the playbook

ansible-playbook -i brokers.inventory.json setup-queue.playbook.yml

MODULES

Status of the solace_* modules:

Module SEMP Endpoint Type Status Example
solace_get_facts about/... Query :sunny: :page_facing_up:
solace_acl_profile aclProfile Action :sunny: :page_facing_up:
solace_acl_client_connect_exception aclProfile Action :sunny: :page_facing_up:
solace_acl_publish_topic_exception aclProfile Action :sunny: :page_facing_up:
solace_acl_subscribe_topic_exception aclProfile Action :sunny: :page_facing_up:
solace_bridge bridge Action :sunny: :page_facing_up:
solace_bridge_remote_subscription bridge Action :sunny: :page_facing_up:
solace_bridge_remote_vpn bridge Action :sunny: :page_facing_up:
solace_bridge_tls_cn bridge Action :sunny: :page_facing_up:
solace_cert_authority certAuthority Action :sunny: :page_facing_up:
solace_get_client_usernames clientUsername Query :sunny: :page_facing_up:
solace_client_username clientUsername Action :sunny: :page_facing_up:
solace_client_profile clientProfile Action :sunny:
solace_dmr_bridge dmrBridge Action :sunny: :page_facing_up:
solace_dmr_cluster dmrCluster Action :sunny: :page_facing_up:
solace_dmr_cluster_link dmrCluster Action :sunny: :page_facing_up:
solace_dmr_cluster_link_remote_address dmrCluster Action :sunny: :page_facing_up:
solace_dmr_cluster_link_trusted_cn dmrCluster Action :sunny: :page_facing_up:
solace_get_queues queue Query :sunny: :page_facing_up:
solace_queue queue Action :sunny: :page_facing_up: :page_facing_up:
solace_queue_subscription queue Action :sunny: :page_facing_up:
solace_rdp restDeliveryPoint Action :sunny: :page_facing_up:
solace_rdp_rest_consumer restDeliveryPoint Action :sunny: :page_facing_up:
solace_rdp_rest_consumer_trusted_cn restDeliveryPoint Action :sunny: :page_facing_up:
solace_rdp_queue_binding restDeliveryPoint Action :sunny: :page_facing_up:
solace_topic_endpoint topicEndpoint Action :sunny:
solace_vpn msgVpn Action :sunny: :page_facing_up:

Writing New Modules

See Guide to Creating new Modules.

Enhancements

See Potential Enhancements.


The End.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansible-solace-0.3.1.tar.gz (25.7 kB view hashes)

Uploaded Source

Built Distribution

ansible_solace-0.3.1-py2.py3-none-any.whl (85.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page