Skip to content

Commit 88c9662

Browse files
kvelarde-itentialsteven-schattenberg-itentialNick-Andreano$GITHUB_ACTORMadias2222
authored
Fixed RabbitMQ installation when using custom variables (#67)
* Ansible lint (#46) * resolved conflicts * Fix ansible-lint issues * Resolved conflict * Os (#45) * Remove yum_update and remove the task to update the current yum packages --------- Co-authored-by: $GITHUB_ACTOR <[email protected]> * Fix ansible lint issues in redis auth role (#48) * Fix lint issues in redis_auth role * Fix ansible lint issues in platform_app_artifact role (#49) * Fix ansible lint issues in python role (#51) * Fix ansible lint issues in rabbitmq_ssl role (#50) * Add RabbitMQ custom configuration tasks * Move rabbitmq cluster role tasks to rabbitmq role Remove rabbitmq cluster role Update docs Fix hard-coded rabbitmq ports in platform role Move rabbitmq ports to common vars role Add ability to set rabbitmq disk_free_limit.absolute * Support non-standard mongo port (#65) * resolved conflicts * Adding port var to mongo tasks to support non-standard ports * Fixed typo * Resolved code review items * Fixed redis installation when using custom variables (#66) * Create redis_varlib.te This file will add SELinux context to add log, data directories in a different place from the default * Update main.yml to support redis_data_dir, redis_log_dir, redis_pid_dir, different port Fix support to: * redis_data_dir, * redis_log_dir, * redis_pid_dir, * different port * Remove user,group and data,log directories creation. Remove user,group and data,log directories creation. Those items now are created in main.yml tasks * Fixed pid dir, and announce port Fixed pid dir, and announce port * Change the installation source from remi_repo to source Change the installation source from remi_repo to source * Added redis_port and sentinel_port variables Added redis_port and sentinel_port variables * Fixed the hardcoded redis ports to variable Fixed the hardcoded redis ports to variable * Fixed source install Fixed source install * Fixed conditions rules for execute directories creation Fixed conditions rules for execute directories creation * Optimize the code in announce items Optimize the code in announce items * Removed sentinel port, moved for common vars Removed sentinel port, moved for common vars * Fixed the hardcoded redis port to a variable Fixed the hardcoded redis port to a variable * Fixed hardcoded ports to variable Fixed hardcoded ports to variable * Fix sentinel variable name Fix sentinel variable name * Fixed trailing spaces Fixed trailing spaces * Fix ansible lint issue in redis * Fix spacing in RabbitMQ guide --------- Co-authored-by: Steven Schattenberg <[email protected]> Co-authored-by: Nick-Andreano <[email protected]> Co-authored-by: $GITHUB_ACTOR <[email protected]> Co-authored-by: Marcos Dias <[email protected]>
1 parent 469b367 commit 88c9662

File tree

22 files changed

+374
-272
lines changed

22 files changed

+374
-272
lines changed

docs/iap_guide.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ The variables in this section may be overridden in the inventory in the `platfor
5555
| :------- | :---- | :--- | :---------- | :------------ | :--------
5656
| `iap_bin_file` | `platform` | String | The name of the IAP bin file. | N/A | Yes*
5757
| `iap_tar_file` | `platform` | String | The name of the IAP tar file. | N/A | Yes*
58+
| `rabbit_svc_url` | `platform` | String | This variable defines the rabbit service url to use when connecting to an externally provided RabbitMQ cluster. It is intended to be used when the architecture demands that rabbit be hosted elsewhere such as when using AmazonMQ or if the demands of an organization require some other external rabbit solution, like a shared service. | N/A | No
59+
| `redis_svc_url` | `platform` | String | This variable defines the redis service url to use when connecting to an externally provided redis cluster. It is intended to be used when the architecture demands that redis be hosted elsewhere such as when using Elasticache or if the demands of an organization require some other external redis solution, like a shared service. | N/A | No
60+
| `mongobdb_svc_url_itential` | `platform` | String | This variable defines the mongodb connection string to use when connecting to the "itential" database. It is intended to be used when the architecture demands that mongo be hosted elsewhere such as when using Mongo Atlas or if the demands of an organization require some other external mongo solution, like a shared service. | N/A | No
61+
| `mongobdb_svc_url_localaaa` | `platform` | String | This variable defines the mongodb connection string to use when connecting to the "LocalAAA" database. It is intended to be used when the architecture demands that mongo be hosted elsewhere such as when using Mongo Atlas or if the demands of an organization require some other external mongo solution, like a shared service. | N/A | No
5862

5963
Either `iap_bin_file` or `iap_tar_file` must be defined in the inventory, but not both.
6064

docs/mongodb_guide.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ The variables in this section are configured in the inventory in the `all` group
4343
| :------- | :---- | :--- | :---------- | :------------ | :---------
4444
| `iap_release` | `all` | Fixed-point | Designates the IAP major version. | N/A | Yes
4545
| `mongo_root_ca_file_source` | `all` | String | The name of the MongoDB Root CA file.| N/A | No
46-
| `mongobdb_svc_url_itential` | `all` | String | This variable defines the mongodb connection string to use when connecting to the "itential" database. It is intended to be used when the architecture demands that mongo be hosted elsewhere such as when using Mongo Atlas or if the demands of an organization require some other external mongo solution, like a shared service. | N/A | No
47-
| `mongobdb_svc_url_localaaa` | `all` | String | This variable defines the mongodb connection string to use when connecting to the "LocalAAA" database. It is intended to be used when the architecture demands that mongo be hosted elsewhere such as when using Mongo Atlas or if the demands of an organization require some other external mongo solution, like a shared service. | N/A | No
4846

4947
The `iap_release` must be defined in the inventory. This variable, along with the OS major version, is used to determine the static variables.
5048

docs/rabbitmq_guide.md

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
The playbook and roles in this section install and configure RabbitMQ for the Itential Automation Platform. There are currently three RabbitMQ-related roles:
44

5-
* `rabbitmq` – Installs RabbitMQ and performs a base configuration.
6-
* `rabbitmq_cluster` – Configures RabbitMQ clustering.
5+
* `rabbitmq` – Installs RabbitMQ, performs a base configuration and configures clustering.
76
* `rabbitmq_ssl` – Configures RabbitMQ SSL.
87

98
**&#9432; Note:**
@@ -15,19 +14,17 @@ This role is used when installing IAP version 2023.1 and older.
1514

1615
The `rabbitmq` role performs a base install of RabbitMQ including any OS packages required. It installs the appropriate version Erlang. It creates the appropriate Linux users, directories, log files, and systemd services. It will create the required RabbitMQ users with a default password (see table). It will start the rabbitmq-server service when complete.
1716

17+
The `rabbitmq` also role performs the steps to run RabbitMQ as a cluster of nodes. It assumes a cluster of 3 and that the first host defined in the inventory will be used as the primary. It will modify the RabbitMQ config file to enable the cluster. It will write the hostname to each RabbitMQ node’s host file (RabbitMQ clustering requires DNS resolution). It creates the required Erlang cookie used by the RabbitMQ nodes to join a cluster. It invokes each RabbitMQ node to join the cluster. It enables queue mirroring. It will restart the rabbitmq-server service when complete.
18+
19+
More info on rabbit cluster: https://www.rabbitmq.com/clustering.html
20+
1821
| User Name | Default Password | Description
1922
| :-------- | :--------------- | :----------
2023
| admin | admin | The admin user with root permissions in this RabbitMQ install.
2124
| itential | itential | The itential user used by IAP to connect.
2225

2326
:::(Warning) (⚠ Warning: ) It is assumed that these default passwords will be changed to meet more rigorous standards. These are intended to be defaults strictly used just for ease of the installation. It is highly recommended that sensitive data be encrypted using Ansible Vault.
2427

25-
## RabbitMQ Cluster
26-
27-
The `rabbitmq_cluster` role performs the steps to run RabbitMQ as a cluster of nodes. It assumes a cluster of 3 and that the first host defined in the inventory will be used as the primary. It will modify the RabbitMQ config file to enable the cluster. It will write the hostname to each RabbitMQ node’s host file (RabbitMQ clustering requires DNS resolution). It creates the required Erlang cookie used by the RabbitMQ nodes to join a cluster. It invokes each RabbitMQ node to join the cluster. It enables queue mirroring. It will restart the rabbitmq-server service when complete.
28-
29-
More info on rabbit cluster: https://www.rabbitmq.com/clustering.html
30-
3128
## RabbitMQ SSL Role
3229

3330
The `rabbitmq_ssl` performs the steps to require TLS when communicating with the RabbitMQ server. It uploads the certificates to the correct location. It is NOT responsible for making the certificates. It will make a number of edits to the RabbitMQ config to enable TLS. It will restart the rabbitmq-server service when complete.
@@ -47,7 +44,6 @@ The variables in this section are configured in the inventory in the `all` group
4744
| Variable | Group | Type | Description | Default Value | Required?
4845
| :------- | :---- | :--- | :---------- | :------------ | :--------
4946
| `iap_release` | `all` | Fixed-point | Designates the IAP major version. | N/A | Yes
50-
| `rabbit_svc_url` | `all` | String | This variable defines the rabbit service url to use when connecting to an externally provided RabbitMQ cluster. It is intended to be used when the architecture demands that rabbit be hosted elsewhere such as when using AmazonMQ or if the demands of an organization require some other external rabbit solution, like a shared service. | N/A | No
5147

5248
The `iap_release` must be defined in the inventory. This variable, along with the OS major version, is used to determine the static variables.
5349

@@ -59,6 +55,8 @@ The following table lists the default variables that are shared between the Rabb
5955

6056
| Variable | Group | Type | Description | Default Value
6157
| :------- | :---- | :--- | :---------- | :------------
58+
| `rabbitmq_port` | `all` | Integer | The RabbitMQ listen port. | `5672`
59+
| `rabbitmq_mgt_console_port` | `all` | Integer | The RabbitMQ management console listen port. | `15672`
6260
| `rabbitmq_vhost` | `all` | String | The name of the RabbitmMQ vhost. | `iap`
6361
| `rabbitmq_ssl` | `all` | Boolean | Flag to enable SSL. <br>`true` - enable HTTPS when connecting to rabbit, disable HTTP. <br>`false` - disable HTTPS when connecting to rabbit, enable HTTP. | `false`
6462

@@ -70,9 +68,10 @@ The following table lists the default variables located in `roles/rabbitmq/defau
7068

7169
| Variable | Group | Type | Description | Default Value
7270
| :------- | :---- | :--- | :---------- | :------------
73-
| `rabbitmq_config` | `rabbitmq` | String | The location of the RabbitMQ configuration file. | `/etc/rabbitmq/rabbitmq.conf`
74-
| `rabbitmq_port` | `rabbitmq` | Integer | The default listen port. | `5672`
75-
| `rabbitmq_mgt_console_port` | `rabbitmq` | Integer | The default management console listen port. | `15672`
71+
| `rabbitmq_home_dir` | `rabbitmq` | String | The RabbitMQ home directory. | `/var/lib/rabbitmq`
72+
| `rabbitmq_log_dir` | `rabbitmq` | String | The RabbitMQ log directory. | `/var/log/rabbitmq`
73+
| `rabbitmq_log_file` | `rabbitmq` | String | The RabbitMQ log file name. | `rabbit.log`
74+
| `rabbitmq_log_file_level` | `rabbitmq` | String | The RabbitMQ log level. | `info`
7675
| `rabbitmq_owner` | `rabbitmq` | String | The RabbitMQ Linux user. | `rabbitmq`
7776
| `rabbitmq_group` | `rabbitmq` | String | The RabbitMQ Linux group. | `rabbitmq`
7877
| `rabbitmq_bind_ipv6` | `rabbitmq` | Boolean | Flag to enable binding to IPv6. | `true`
@@ -81,21 +80,16 @@ The following table lists the default variables located in `roles/rabbitmq/defau
8180
| `rabbitmq_password` | `rabbitmq` | String | The default password for the RabbitMQ user. | `itential`
8281
| `rabbitmq_admin_user` | `rabbitmq` | String | The admin user with root permissions in this RabbitMQ install. | `admin`
8382
| `rabbitmq_admin_password` | `rabbitmq` | String | The default password for the admin user. | `admin`
84-
85-
:::(Warning) (⚠ Warning: ) It is assumed that these default passwords will be changed to meet more rigorous standards. These are intended to be defaults strictly used just for ease of the installation. It is highly recommended that sensitive data be encrypted using Ansible Vault.
86-
87-
## RabbitMQ Cluster Role Variables
88-
89-
The variables in this section may be overridden in the inventory in the `rabbmitmq` group vars.
90-
91-
The following table lists the default variables located in `roles/rabbitmq_cluster/defaults/main.yml`.
92-
93-
| Variable | Group | Type | Description | Default Value
94-
| :------- | :---- | :--- | :---------- | :------------
9583
| `rabbitmq_cluster` | `rabbitmq` | Boolean | Flag to enable clustering. | `false`
9684
| `rabbitmq_erlang_cookie` | `rabbitmq` | String | The location of the Erlang cookie file. | `/var/lib/rabbitmq/.erlang.cookie`
9785
| `rabbitmq_cluster_port` | `rabbitmq` | Integer | The default RabbitMQ cluster listen port. | `25672`
9886
| `rabbitmq_epmd_port` | `rabbitmq` | Integer | The default RabbitMQ Erlang Port Mapping Daemon listen port. | `4369`
87+
| `rabbitmq_distribution_buffer_size` | `rabbitmq` | Integer | Inter-node connections use a buffer for data pending to be sent. | N/A
88+
| `rabbit_max_msg_size` | `rabbitmq` | Integer | The largest allowed message payload size in bytes. | N/A
89+
| `rabbit_total_mem_available_override` | `rabbitmq` | Integer | Makes it possible to override the total amount of memory availabl in bytes, as opposed to inferring it from the environment using OS-specific means. | N/A
90+
| `disk_free_limit_absolute` | `rabbitmq` | Integer | Disk free limit in bytes. | N/A
91+
92+
:::(Warning) (⚠ Warning: ) It is assumed that these default passwords will be changed to meet more rigorous standards. These are intended to be defaults strictly used just for ease of the installation. It is highly recommended that sensitive data be encrypted using Ansible Vault.
9993

10094
## RabbitMQ SSL Role Variables
10195

@@ -194,7 +188,6 @@ ansible-playbook itential.deployer.rabbitmq -i <inventory>
194188
You can also run select RabbitMQ roles by using the following tags:
195189

196190
* `rabbitmq_install`
197-
* `rabbitmq_cluster`
198191
* `rabbitmq_ssl`
199192

200193
To execute only the `rabbitmq` role (skipping the RabbitMQ Cluster and RabbitMQ SSL roles), run the `itential.deployer.rabbitmq` playbook with the `rabbitmq_install` tag:
@@ -203,12 +196,6 @@ To execute only the `rabbitmq` role (skipping the RabbitMQ Cluster and RabbitMQ
203196
ansible-playbook itential.deployer.rabbitmq -i <inventory> --tags rabbitmq_install
204197
```
205198

206-
To execute only the RabbitMQ Cluster role (skipping the RabbitMQ and RabbitMQ SSL roles), run the `itential.deployer.rabbitmq` playbook with the `rabbitmq_cluster` tag:
207-
208-
```
209-
ansible-playbook itential.deployer.rabbitmq -i <inventory> --tags rabbitmq_cluster
210-
```
211-
212199
To execute only the RabbitMQ SSL role (skipping the RabbitMQ and RabbitMQ Cluster roles), run the `itential.deployer.rabbitmq` playbook with the `rabbitmq_ssl` tag:
213200

214201
```

docs/redis_guide.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ The variables in this section are configured in the inventory in the `all` group
4646
| Variable | Group | Type | Description | Default Value | Required?
4747
| :------- | :---- | :--- | :---------- | :------------ | :--------
4848
| `iap_release` | `all` | Fixed-point | Designates the IAP major version. | N/A | Yes
49-
| `redis_svc_url` | `all` | String | This variable defines the redis service url to use when connecting to an externally provided redis cluster. It is intended to be used when the architecture demands that redis be hosted elsewhere such as when using Elasticache or if the demands of an organization require some other external redis solution, like a shared service. | N/A | No
5049

5150
The `iap_release` must be defined in the inventory. This variable, along with the OS major version, is used to determine the static variables.
5251

playbooks/install_active_standby.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,6 @@
3939
- rabbitmq
4040
- rabbitmq_install
4141

42-
# Add on any Rabbit features, HA, auth, etc...
43-
# Configure Rabbit in a cluster
44-
# https://www.rabbitmq.com/clustering.html
45-
- role: itential.deployer.rabbitmq_cluster
46-
when: rabbitmq_cluster | bool
47-
tags:
48-
- rabbitmq
49-
- rabbitmq_cluster
50-
5142
# Configure rabbit to only accept SSL connections
5243
- role: itential.deployer.rabbitmq_ssl
5344
when: rabbitmq_ssl | bool

playbooks/rabbitmq.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,6 @@
1515
- rabbitmq
1616
- rabbitmq_install
1717

18-
# Add on any Rabbit features, HA, auth, etc...
19-
# Configure Rabbit in a cluster
20-
# https://www.rabbitmq.com/clustering.html
21-
- role: itential.deployer.rabbitmq_cluster
22-
when: rabbitmq_cluster | bool
23-
tags:
24-
- rabbitmq
25-
- rabbitmq_cluster
26-
2718
# Configure rabbit to only accept SSL connections
2819
- role: itential.deployer.rabbitmq_ssl
2920
when: rabbitmq_ssl | bool

roles/common_vars/defaults/main/rabbitmq.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Copyright (c) 2024, Itential, Inc
22
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
33
---
4+
# The RabbitMQ port
5+
rabbitmq_port: "{{ rabbitmq_default_port }}"
6+
7+
# The RabbitMQ management console port
8+
rabbitmq_mgt_console_port: "{{ rabbitmq_default_mgt_console_port }}"
9+
410
# The name of the vhost to use so we do not use the default rabbitmq vhost
511
rabbitmq_vhost: iap
612

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright (c) 2024, Itential, Inc
2+
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
3+
---
4+
# The RabbitMQ port defaults
5+
rabbitmq_default_port: 5672
6+
rabbitmq_default_mgt_console_port: 15672

roles/platform/templates/profile.j2

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,17 @@
99
{% set rabbit_hosts = [] %}
1010
{% if rabbit_svc_url is defined %}
1111
{{ rabbit_hosts.append(rabbit_svc_url) }}
12-
{% set rabbit_port = 5671 %}
1312
{% set rabbit_protocol = "amqps" %}
1413
{% set rabbit_certPath = "" %}
1514
{% set rabbit_keyPath = "" %}
1615
{% set rabbit_passphrase = "guest" %}
1716
{% set rabbit_caPath = "" %}
1817
{% elif groups["rabbitmq"] is defined and groups["rabbitmq"] | length > 0 %}
19-
{% set rabbit_port = 5672 %}
2018
{% set rabbit_protocol = "amqp" %}
2119
{% for rabbit in groups[vars.rabbit_group_name] %}
2220
{{ rabbit_hosts.append( hostvars[ rabbit ].inventory_hostname ) }}
2321
{% endfor %}
2422
{% if rabbitmq_ssl | bool -%}
25-
{% set rabbit_port = 5671 %}
2623
{% set rabbit_protocol = "amqps" %}
2724
{% set rabbit_certPath = "" %}
2825
{% set rabbit_keyPath = "" %}
@@ -200,7 +197,7 @@
200197
},
201198
{% if rabbit_hosts is defined and rabbit_hosts | length > 0 -%}
202199
"rabbitmq": {
203-
"adminPort": 15672,
200+
"adminPort": {{ rabbitmq_mgt_console_port }},
204201
"caPath": "",
205202
"certPath": "",
206203
"frameMax": 0,
@@ -210,7 +207,7 @@
210207
"locale": "en_US",
211208
"passphrase": "guest",
212209
"password": "{{ rabbitmq_password }}",
213-
"port": {{ rabbit_port }},
210+
"port": {{ rabbitmq_port }},
214211
"protocol": "{{ rabbit_protocol }}",
215212
"username": "{{ rabbitmq_user }}",
216213
"vhost": "{{ rabbitmq_vhost }}"

roles/rabbitmq/defaults/main.yml

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
# Copyright (c) 2024, Itential, Inc
22
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
33
---
4-
# The Location of the config rabbitmq config file
5-
rabbitmq_config: /etc/rabbitmq/rabbitmq.conf
4+
# The RabbitMQ home directory
5+
rabbitmq_home_dir: "{{ rabbitmq_default_home_dir }}"
66

7-
# The default rabbitmq port
8-
rabbitmq_port: 5672
9-
10-
# The default rabbitmq mgt console port
11-
rabbitmq_mgt_console_port: 15672
12-
13-
# The default rabbitmq user and group
7+
# The default RabbitMQ user and group
148
rabbitmq_owner: rabbitmq
159
rabbitmq_group: rabbitmq
1610

1711
# Flag to enable/disable IPv6
1812
rabbitmq_bind_ipv6: true
1913

20-
# The hostnames and/or IP address on which rabbitmq should listen for
14+
# The hostnames and/or IP address on which RabbitMQ should listen for
2115
# client connections.
2216
rabbitmq_bind_addr: 127.0.0.1
2317

18+
# Log settings
19+
rabbitmq_log_dir: /var/log/rabbitmq
20+
rabbitmq_log_file: rabbit.log
21+
rabbitmq_log_file_level: info
22+
23+
# Inter-node connections use a buffer for data pending to be sent. Temporary throttling on
24+
# inter-node traffic is applied when the buffer is at max allowed capacity. The limit is
25+
# controlled via the RABBITMQ_DISTRIBUTION_BUFFER_SIZE environment variable in kilobytes.
26+
# Default value is 128 MB (128000 kB).
27+
#
28+
# In clusters with heavy inter-node traffic increasing this value may have a positive effect
29+
# on throughput. Values lower than 64 MB are not recommended.
30+
# rabbitmq_distribution_buffer_size: 128000
31+
2432
# The largest allowed message payload size in bytes. Messages of larger size will be
2533
# rejected with a suitable channel exception. Default: 134217728, Max value: 536870912
2634
# rabbit_max_msg_size: 536870911
@@ -35,6 +43,24 @@ rabbitmq_bind_addr: 127.0.0.1
3543
# Default: undefined (not set or used).
3644
# rabbit_total_mem_available_override: 8GB
3745

46+
# Set disk free limit (in bytes). Once free disk space reaches this
47+
# lower bound, a disk alarm will be set - see the documentation
48+
# listed above for more details.
49+
#
50+
# Absolute watermark will be ignored if relative is defined!
51+
# disk_free_limit_absolute: 50MB
52+
53+
# Feature flags that can be overriden in the hosts file
54+
# Essentially, a default installation will not have clustering
55+
rabbitmq_cluster: false
56+
57+
# The location of the Erlang cookie file
58+
rabbitmq_erlang_cookie: "{{ rabbitmq_home_dir }}/.erlang.cookie"
59+
60+
## The RabbitMQ cluster ports
61+
rabbitmq_cluster_port: "{{ rabbitmq_default_cluster_port }}"
62+
rabbitmq_epmd_port: "{{ rabbitmq_default_epmd_port }}"
63+
3864
# Offline install settings
3965
# Refer to the offline variables in common_vars for additional settings
4066
packages_path: "{{ itential_packages_path }}/{{ iap_release }}/rabbitmq"

0 commit comments

Comments
 (0)