diff --git a/defaults/main.yml b/defaults/main.yml index df8461ea..30bd47cd 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -82,3 +82,32 @@ rabbitmq_management_rates_mode: basic # Precompile RabbitMQ with HiPE rabbitmq_hipe_compile: False + +# RabbitMQ policies +# Used to tune performance characteristics of OpenStack messaging +# +# Example override that uses HA queues only for telemetry and sets message +# expiry for RPC messages +# +# rabbitmq_policies: +# - name: "heat_rpc_expire" +# pattern: '^heat-engine-listener\\.' +# tags: "expires=3600000" +# priority: 1 +# - name: "results_expire" +# pattern: '^results\\.' +# tags: "expires=3600000" +# priority: 1 +# - name: "tasks_expire" +# pattern: '^results\\.' +# tags: "expires=3600000" +# priority: 1 +# - name: "ha-notif" +# pattern: '^(event|metering|notifications)\.' +# tags: "ha-sync-mode=automatic" +# priority: 0 +# +rabbitmq_policies: + - name: "HA" + pattern: '^(?!amq\.).*' + tags: "ha-mode=all" diff --git a/releasenotes/notes/policy-override-522df5699f09c417.yaml b/releasenotes/notes/policy-override-522df5699f09c417.yaml new file mode 100644 index 00000000..0d5fc1d0 --- /dev/null +++ b/releasenotes/notes/policy-override-522df5699f09c417.yaml @@ -0,0 +1,6 @@ +--- +features: + - The ``rabbitmq_server`` role now supports deployer override of the + RabbitMQ policies applied to the cluster. Deployers can + override the ``rabbitmq_policies`` variable, providing a list of + desired policies. diff --git a/tasks/rabbitmq_post_install.yml b/tasks/rabbitmq_post_install.yml index 4b6b1e77..3255ccb4 100644 --- a/tasks/rabbitmq_post_install.yml +++ b/tasks/rabbitmq_post_install.yml @@ -25,10 +25,12 @@ - name: Enable queue mirroring rabbitmq_policy: node: "rabbit@{{ ansible_hostname }}" - name: "HA" - pattern: '^(?!amq\.).*' - tags: "ha-mode=all" + name: "{{ item.name }}" + pattern: "{{ item.pattern }}" + priority: "{{ item.priority | default(0) }}" + tags: "{{ item.tags }}" register: rabbitmq_queue_mirror + with_items: "{{ rabbitmq_policies }}" tags: - rabbitmq-config - rabbitmq-cluster diff --git a/tests/test-rabbitmq-server-functional.yml b/tests/test-rabbitmq-server-functional.yml index d9a8366c..bf2f9374 100644 --- a/tests/test-rabbitmq-server-functional.yml +++ b/tests/test-rabbitmq-server-functional.yml @@ -65,3 +65,12 @@ - name: Ensure expected version of rabbitmq is running assert: that: rabbitmqctl_status.stdout | search ("rabbit,\"RabbitMQ\",\"{{ rabbitmq_release_version }}\"") + - name: Get the policy list + command: rabbitmqctl -q list_policies + register: rabbitmq_policies_output + - debug: + var: rabbitmq_policies.stdout + # Expected policy: "/ HA all ^(?!amq\\.).* {"ha-mode":"all"} 0" + - name: Validate that the expected policies are present + assert: + that: rabbitmq_policies_output.stdout | search("amq")