File ardana-mq-8.0+git.1605176800.52cccfa.obscpio of Package ardana-mq
07070100000000000081A40000000000000000000000015FAD0DE00000007E000000000000000000000000000000000000003000000000ardana-mq-8.0+git.1605176800.52cccfa/.gitreview[gerrit]
host=gerrit.suse.provo.cloud
port=29418
project=ardana/mq-ansible.git
defaultremote=ardana
defaultbranch=stable/pike
07070100000001000081A40000000000000000000000015FAD0DE00000000C000000000000000000000000000000000000003300000000ardana-mq-8.0+git.1605176800.52cccfa/.rsync-filter- ardana-ci
07070100000002000081A40000000000000000000000015FAD0DE00000279F000000000000000000000000000000000000002D00000000ardana-mq-8.0+git.1605176800.52cccfa/LICENSE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
07070100000003000081A40000000000000000000000015FAD0DE0000002A6000000000000000000000000000000000000002F00000000ardana-mq-8.0+git.1605176800.52cccfa/README.md
(c) Copyright 2015 Hewlett Packard Enterprise Development LP
(c) Copyright 2017 SUSE LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
README
======
TODO: Fill in README for rabbitmq playbooks here.
07070100000004000081A40000000000000000000000015FAD0DE000000721000000000000000000000000000000000000003A00000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-change.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Change/update users access for RabbitMQ.
- include: rabbitmq-configure-users.yml
- hosts: FND-RMQ
max_fail_percentage: 0
gather_facts: no
roles:
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/create-working-dirs.yml
# Check whether the user has updated the list of RabbitMQ plugins.
- include: roles/rabbitmq/tasks/check-plugins.yml
# Check whether we are transitioning to TLS.
- include: roles/rabbitmq/tasks/check-tls.yml
# Write TLS certificates to disk.
# Note: We always take details from CP here as during TLS transition in
# particular TLS to 'off' we may not have all cert data required.
- include: roles/rabbitmq/tasks/write-tls-files.yml
when: (rabbitmq_cp.tls_enabled | bool)
# Only one of these will operate depending on the state of
# ardana_notify_rabbitmq_major_change.changed set during configure
# above.
- include: _rabbitmq-minor-change.yml
- include: _rabbitmq-major-change.yml
- hosts: FND-RMQ
max_fail_percentage: 0
gather_facts: no
roles:
- rabbitmq
tasks:
# Clear all persisted facts relating to RabbitMQ.
- include: roles/rabbitmq/tasks/clear-persistant-facts.yml
07070100000005000081A40000000000000000000000015FAD0DE0000013D0000000000000000000000000000000000000004000000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-major-change.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-neutron-setup.yml
# RabbitMQ 3.4.3-3.6.0 workaround rule.
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
- name: rabbitmq | _rabbitmq-major-change | Set fact rabbitmq_major_change
set_fact:
_rabbitmq_major_change: "{{
((ardana_notify_rabbitmq_major_change | default(false)) and
ardana_notify_rabbitmq_major_change.changed) }}"
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to make the cluster go silent to reduce the likelihood of getting an
# Erlang Mnesia held lock (OTP-13284).
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (ardana_notify_rabbitmq_workaround_required | default(false)) and
ardana_notify_rabbitmq_workaround_required.changed and
(_rabbitmq_major_change | bool)
# Take the cluster down to a single node for a major configuration change.
- hosts: FND-RMQ:!{{ rabbitmq_primary_hostname |
default('FND-RMQ--first-member') }}
gather_facts: no
max_fail_percentage: 0
# IMPORTANT: This is performed one host at a time as we must keep quorum as
# we take the cluster down.
serial: 1
roles:
- iptables
- rabbitmq
tasks:
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to do this here to stop traffic entering a node that we are
# reconfiguring. This gives early indication to the proxy to move any vips
# pointing at the node.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (_rabbitmq_major_change | bool)
- include: roles/rabbitmq/tasks/stop.yml
when: (_rabbitmq_major_change | bool)
- hosts: "{{ rabbitmq_primary_hostname |
default('FND-RMQ--first-member') }}"
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to do this here to stop traffic entering a node that we are
# reconfiguring. This gives early indication to the proxy to move any vips
# pointing at the node.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (_rabbitmq_major_change | bool)
# We do not reset the node as it the only node left form a cluster so we
# must maintain its database.
- include: roles/rabbitmq/tasks/stop.yml
vars:
rabbitmq_do_not_reset_node: true
when: (not
((ardana_notify_rabbitmq_restart_required | default(false)) and
ardana_notify_rabbitmq_restart_required.changed)) and
(_rabbitmq_major_change | bool)
# At this point we are in the situation where the only running node is the
# rabbitmq primary.
# Next steps are:
# * Write any new config to the system.
# * Upgrade all nodes by installing the latest packages if required.
# NOTE: This will cause the primary node to be restarted, and perform
# the Erlang Mnesia schema change.
# * Start all nodes - this will trigger join cluster.
# * Remove block on '*_listener' ports.
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/write-configuration.yml
when: (_rabbitmq_major_change | bool)
- include: roles/rabbitmq/tasks/_write-rabbitmq-env-config.yml
when: (_rabbitmq_major_change | bool)
- include: roles/rabbitmq/tasks/install.yml
when: ((ardana_notify_rabbitmq_restart_required | default(false)) and
ardana_notify_rabbitmq_restart_required.changed) and
(_rabbitmq_major_change | bool)
- include: roles/rabbitmq/tasks/start.yml
when: (_rabbitmq_major_change | bool)
# Remove block on '*_listener' ports.
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (_rabbitmq_major_change | bool)
07070100000006000081A40000000000000000000000015FAD0DE0000010C5000000000000000000000000000000000000004000000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-minor-change.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-neutron-setup.yml
# RabbitMQ 3.4.3-3.6.0 workaround rule.
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/write-configuration.yml
when: (not
((ardana_notify_rabbitmq_major_change | default(false)) and
ardana_notify_rabbitmq_major_change.changed))
- include: roles/rabbitmq/tasks/_write-rabbitmq-env-config.yml
when: (not
((ardana_notify_rabbitmq_major_change | default(false)) and
ardana_notify_rabbitmq_major_change.changed))
- name: rabbitmq | _rabbitmq-minor-change | Set fact rabbitmq_minor_change
set_fact:
_rabbitmq_minor_change: "{{
(not
((ardana_notify_rabbitmq_major_change | default(false)) and
ardana_notify_rabbitmq_major_change.changed)) and
(((ardana_notify_rabbitmq_reset_required | default(false)) and
ardana_notify_rabbitmq_reset_required.changed) or
((ardana_notify_rabbitmq_restart_required | default(false)) and
ardana_notify_rabbitmq_restart_required.changed)) }}"
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to make the cluster go silent to reduce the likelihood of getting an
# Erlang Mnesia held lock (OTP-13284).
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (_rabbitmq_minor_change | bool)
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
# IMPORTANT: This is performed one host at a time to keep cluster running.
serial: 1
roles:
- iptables
- rabbitmq
tasks:
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to do this here to stop traffic entering a node that we are
# reconfiguring. This gives early indication to the proxy to move any vips
# pointing at the node.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (_rabbitmq_minor_change | bool)
- include: roles/rabbitmq/tasks/stop.yml
when: (_rabbitmq_minor_change | bool)
- include: roles/rabbitmq/tasks/install.yml
when: (_rabbitmq_minor_change | bool) and
((ardana_notify_rabbitmq_restart_required | default(false)) and
ardana_notify_rabbitmq_restart_required.changed)
- include: roles/rabbitmq/tasks/start.yml
when: (_rabbitmq_minor_change | bool)
# Remove block on '*_listener' ports.
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (not
((ardana_notify_rabbitmq_workaround_required | default(false)) and
ardana_notify_rabbitmq_workaround_required.changed)) and
(_rabbitmq_minor_change | bool)
# RabbitMQ 3.4.3-3.6.0 workaround rule.
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
when: (ardana_notify_rabbitmq_workaround_required | default(false)) and
ardana_notify_rabbitmq_workaround_required.changed and
(_rabbitmq_minor_change | bool)
07070100000007000081A40000000000000000000000015FAD0DE0000002ED000000000000000000000000000000000000004100000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-neutron-setup.yml#
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ:&NEU-*
roles:
- neutron-common
tasks:
- include: roles/neutron-common/tasks/_create_iptables_lockfile.yml
07070100000008000081A40000000000000000000000015FAD0DE0000004DC000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-upgrade-packages.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Validate play and lock any configuration required.
- include: _rabbitmq-validate.yml
- hosts: FND-RMQ
max_fail_percentage: 0
gather_facts: no
roles:
- rabbitmq
tasks:
# Sets-up 'check-upgraded-pkgs' value.
- include: roles/ardana-upgrade-tools/tasks/pkg-query.yml
# based on the result of 'check-upgraded-pkgs'
# ardana_notify_rabbitmq_major_change.changed may be set here to determine
# which upgrade is run in _rabbitmq_change below.
- include: roles/rabbitmq/tasks/check-upgraded-pkgs.yml
# Change the RabbitMQ configuration.
- include: _rabbitmq-change.yml
07070100000009000081A40000000000000000000000015FAD0DE00000036D000000000000000000000000000000000000003C00000000ardana-mq-8.0+git.1605176800.52cccfa/_rabbitmq-validate.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- rabbitmq
- role: validate-cluster-limit
validate_cluster_limit_verb_hosts: "{{ rabbitmq_cp.group_name }}"
tasks:
- include: roles/rabbitmq/tasks/lock_config.yml
0707010000000A000041ED0000000000000000000000045FAD0DE000000000000000000000000000000000000000000000002F00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci0707010000000B000041ED0000000000000000000000035FAD0DE000000000000000000000000000000000000000000000003700000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project0707010000000C000041ED0000000000000000000000035FAD0DE000000000000000000000000000000000000000000000004300000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model0707010000000D000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000004800000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model/data0707010000000E000081A40000000000000000000000015FAD0DE00000092A000000000000000000000000000000000000005A00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model/data/control_plane.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
product:
version: 2
control-planes:
- name: cp1
control-plane-prefix: cp1
failure-zones:
- AZ1
common-service-components:
- lifecycle-manager-target
load-balancers:
- provider: ip-cluster
name: lb
components:
- default
roles:
- internal
- admin
- provider: ip-cluster
name: extlb
external-name: myardana-cp1.test
components:
- default
roles:
- public
clusters:
- name: cluster0
cluster-prefix: c0
server-role:
- SERVER1-ROLE
member-count: 1
allocation-policy: strict
service-components:
- lifecycle-manager-target
- lifecycle-manager
- rabbitmq
- keystone-api
- mysql
- ip-cluster
- name: cp2
uses:
- from: cp1
service-components:
- all
control-plane-prefix: cp2
failure-zones:
- AZ1
- AZ2
- AZ3
common-service-components:
- lifecycle-manager-target
load-balancers:
- provider: ip-cluster
name: lb
components:
- default
roles:
- internal
- admin
clusters:
- name: cluster1
cluster-prefix: c1
server-role:
- SERVER2-ROLE
- SERVER3-ROLE
- SERVER4-ROLE
member-count: 3
allocation-policy: strict
service-components:
- ntp-server
- rabbitmq
- ip-cluster
0707010000000F000081A40000000000000000000000015FAD0DE00000051E000000000000000000000000000000000000005B00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model/data/network_groups.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
product:
version: 2
network-groups:
- name: ARDANA
hostname-suffix: ardana
component-endpoints:
- lifecycle-manager
- lifecycle-manager-target
- name: MANAGEMENT
hostname-suffix: mgmt
hostname: true
tags:
- neutron.networks.vxlan
- neutron.networks.vlan:
provider-physical-network: physnet1
# tls-component-endpoints:
# - barbican-api
component-endpoints:
- default
# routes:
# - default
load-balancers:
- lb
- extlb
- name: EXTERNAL-VM
tags:
- neutron.l3_agent.external_network_bridge
07070100000010000081A40000000000000000000000015FAD0DE000000378000000000000000000000000000000000000005400000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model/data/regions.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
product:
version: 2
regions:
- name: region1
includes:
- control-plane: cp1
services:
- all
- name: region2
includes:
- control-plane: cp2
services:
- all
07070100000011000081A40000000000000000000000015FAD0DE0000006C9000000000000000000000000000000000000005400000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/project/input-model/data/servers.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
product:
version: 2
baremetal:
netmask: 255.255.255.0
subnet: 192.168.110.0
server-interface: eth2
servers:
- id: server1
ip-addr: 192.168.110.3
role: SERVER1-ROLE
server-group: RACK1
mac-addr: a4:93:0c:4f:7c:73
nic-mapping: VAGRANT
ilo-ip: 192.168.109.3
ilo-password: password
ilo-user: admin
- id: server2
ip-addr: 192.168.110.4
role: SERVER2-ROLE
server-group: RACK1
mac-addr: b2:72:8d:ac:7c:6f
nic-mapping: VAGRANT
ilo-ip: 192.168.109.4
ilo-password: password
ilo-user: admin
- id: server3
ip-addr: 192.168.110.5
role: SERVER3-ROLE
server-group: RACK2
mac-addr: 8a:8e:64:55:43:76
nic-mapping: VAGRANT
ilo-ip: 192.168.109.5
ilo-password: password
ilo-user: admin
- id: server4
ip-addr: 192.168.110.6
role: SERVER4-ROLE
server-group: RACK3
mac-addr: 9a:9e:64:55:43:67
nic-mapping: VAGRANT
ilo-ip: 192.168.109.5
ilo-password: password
ilo-user: admin
07070100000012000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000003500000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests07070100000013000081ED0000000000000000000000015FAD0DE0000004A8000000000000000000000000000000000000004D00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/change-input-model.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
cd ~/ardana-ci-tests
if [ -d ardana-input-model ]; then
cd ardana-input-model
git checkout $1
cd ../
else
git clone -b $1 http://git.suse.provo.cloud/ardana/ardana-input-model
fi
cp -r ardana-input-model/2.0/services/ ~/openstack/ardana/services/
cd ~/ardana
git add -A
git commit -m "My config"
cd ~/openstack/ardana/ansible/
ansible-playbook -i hosts/localhost config-processor-run.yml -e encrypt="" \
-e rekey=""
ansible-playbook -i hosts/localhost ready-deployment.yml
cd ~/scratch/ansible/next/ardana/ansible
07070100000014000081A40000000000000000000000015FAD0DE0000004D3000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/change-repo.yml#
# (c) Copyright 2016-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ
tasks:
- name: create 192_168_10_3_79_ardana_sources.list
become: yes
file:
path: /etc/apt/sources.list.d/192_168_10_3_79_ardana_sources.list
state: touch
- name: change apt-repo
become: yes
lineinfile:
dest: /etc/apt/sources.list.d/192_168_10_3_79_ardana_sources.list
line: "deb [arch=amd64] http://apt.suse.provo.cloud/apt/hlinux-deejay.us.rdlabs.hpecorp.net/hLinuxArchive/{{ repo }} cattleprod main contrib non-free"
- name: install aptitude
become: yes
apt:
name: aptitude
update_cache: yes
07070100000015000081A40000000000000000000000015FAD0DE0000005C4000000000000000000000000000000000000005000000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/check-persistent-cache.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ
roles:
- rabbitmq
tasks:
- name: ardana-ci | check-persistent-state | fail if facts are defined
fail:
msg: "fact cache hasnt been cleared"
when: (ardana_notify_rabbitmq_reset_required is defined and
ardana_notify_rabbitmq_reset_required.changed) or
(ardana_notify_rabbitmq_restart_required.changed and
ardana_notify_rabbitmq_restart_required is defined) or
(ardana_notify_rabbitmq_stop_forced is defined and
ardana_notify_rabbitmq_stop_forced.changed) or
(ardana_notify_rabbitmq_major_change is defined and
ardana_notify_rabbitmq_major_change.changed) or
(ardana_notify_rabbitmq_workaround_required is defined and
ardana_notify_rabbitmq_workaround_required.changed)
07070100000016000081ED0000000000000000000000015FAD0DE0000002BD000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/check-user.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
sudo rabbitmqctl list_users | grep stack
exit $?
07070100000017000081ED0000000000000000000000015FAD0DE00000036A000000000000000000000000000000000000003F00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/copy.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
cp ~/ardana-ci-tests/$1 ~/scratch/ansible/next/ardana/ansible
if [ -n "$2" ]
then
ansible-playbook -i hosts/verb_hosts $1 -e $2
else
ansible-playbook -i hosts/verb_hosts $1
fi
rm ~/scratch/ansible/next/ardana/ansible/$1
07070100000018000081A40000000000000000000000015FAD0DE00000033E000000000000000000000000000000000000004800000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/pwd_change_cp1.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
rmq_keystone_password:
value: "mynewpassword"
metadata:
- clusters:
- cluster0
component: keystone
consumes: rabbitmq
consuming-cp: cp1
cp: cp1
version: '2.0'
07070100000019000081A40000000000000000000000015FAD0DE000000355000000000000000000000000000000000000004800000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/pwd_change_cp2.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
rmq_keystone_password:
rmq_keystone_password:
value: "mynewpassword"
metadata:
- clusters:
- cluster1
component: keystone
consumes: rabbitmq
consuming-cp: cp2
cp: cp2
version: '2.0'
0707010000001A000081ED0000000000000000000000015FAD0DE000000359000000000000000000000000000000000000004800000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/remove-rabbit.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
cd ~/scratch/ansible/next/ardana/ansible
ansible-playbook rabbitmq-remove.yml --limit *cp1*
ansible-playbook rabbitmq-remove.yml --limit *cp2*
source ~/ardana-ci-tests/copy.bash remove-sources.list.yml
0707010000001B000081A40000000000000000000000015FAD0DE0000002F6000000000000000000000000000000000000004D00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/remove-sources.list.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ
tasks:
- name: delete sources.list
become: yes
shell: rm -f /etc/apt/sources.list.d/*
0707010000001C000081A40000000000000000000000015FAD0DE000004AD9000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/test-plan.yaml#
# (c) Copyright 2016-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: remove-rabbit
logfile: testsuite-remove.log
prefix: remove
exec:
- remove-rabbit.bash
- name: Update conf file change
logfile: test6-update-conf-all.log
prefix: update-conf-all
exec:
- update-conf.bash '/rabbitmq_top/{s/^/#/}' ./rabbitmq/main.yml
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=hos2.0.2_ga-0
### TODO: Although Ardana doesn't have mitaka release, we keep this section for
### futher investigation in the future.
# currently dont have a way to use old service defs
# due to older changes not being compatible with multi-cp
# in future comment this out and set mitaka release
#- name: change service definitions
# logfile: testsuite-upgrade.log
# prefix: update-service-def
# exec:
# - change-input-model.bash kilo_release_branch
- name: deploy rabbit 3.4.3
logfile: testsuite-upgrade.log
prefix: deploy-3.4
playbooks:
- rabbitmq-deploy.yml
- name: create-user
logfile: testsuite-upgrade.log
prefix: create-user
exec:
- sudo rabbitmqctl add_user stack stack
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2015/hos3.0_alpha-0
- name: test major upgrade limit 3.5.4
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml --limit *cp1*
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
# can only run bash scripts on one hosts current
- name: test rabbitmq-server version
logfile: testsuite-upgrade.log
prefix: upgrade
exec:
- validate-upgrade.bash 3.5.4-3.1
# workaround: can not run full upgrade after running with limit
- name: remove-rabbit
logfile: testsuite-remove.log
prefix: remove
exec:
- remove-rabbit.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos2.0.2_ga-0
- name: deploy rabbit 3.4.3
logfile: testsuite-upgrade.log
prefix: deploy-3.4
playbooks:
- rabbitmq-deploy.yml
- name: create-user
logfile: testsuite-upgrade.log
prefix: create-user
exec:
- sudo rabbitmqctl add_user stack stack
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2015/hos3.0_alpha-0
#########
- name: test major upgrade 3.5.4 no errlang change
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos2.1.6_ga-0
- name: test major upgrade 3.6.1 - errlang major
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml --limit *cp1*
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
- name: test rabbitmq-server version
logfile: testsuite-upgrade.log
prefix: upgrade
exec:
- validate-upgrade.bash 3.6.1-1+hlinux2
# workaround: can not run full upgrade after running with limit
- name: remove-rabbit
logfile: testsuite-remove.log
prefix: remove
exec:
- remove-rabbit.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2015/hos3.0_alpha-0
- name: deploy rabbit 3.5.4
logfile: testsuite-upgrade.log
prefix: deploy-3.5
playbooks:
- rabbitmq-deploy.yml
- name: create-user
logfile: testsuite-upgrade.log
prefix: create-user
exec:
- sudo rabbitmqctl add_user stack stack
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos2.1.6_ga-0
########
- name: test major upgrade 3.6.1
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos4.0_beta-3
- name: test minor upgrade no erlang change
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml --limit *cp1*
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
- name: test rabbitmq-server version
logfile: testsuite-upgrade.log
prefix: upgrade
exec:
- validate-upgrade.bash 3.6.3-1+hpelinux1
# workaround: can not run full upgrade after running with limit
- name: remove-rabbit
logfile: testsuite-remove.log
prefix: remove
exec:
- remove-rabbit.bash
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos2.1.6_ga-0
- name: deploy rabbit 3.6.1
logfile: testsuite-upgrade.log
prefix: deploy-3.6.1
playbooks:
- rabbitmq-deploy.yml
- name: create-user
logfile: testsuite-upgrade.log
prefix: create-user
exec:
- sudo rabbitmqctl add_user stack stack
- name: update apt repo
logfile: testsuite-upgrade.log
prefix: remove
exec:
- copy.bash change-repo.yml repo=2016/hos4.0_beta-3
- name: Update conf file change
logfile: test6-update-conf-all.log
prefix: update-conf-all
exec:
- update-conf.bash '/rabbitmq_top/{s/^#//}' ./rabbitmq/main.yml
#########
- name: test minor upgrade no erlang change
logfile: testsuite-upgrade.log
prefix: upgrade
playbooks:
- rabbitmq-upgrade.yml
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Singleton Tests
# Test stop start/ one rabbit /singleton cluster
- name: Test stop one rabbit on singleton Cluster
logfile: test1-stop.log
prefix: stop-rabbit-one-singleton
playbooks:
- rabbitmq-stop.yml --limit=project-cp1-c0-m1-mgmt
- name: Validate rabbit Down
logfile: test1-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Test start one node
logfile: test1-start-one.log
prefix: start-rabbit-one-singleton
playbooks:
- rabbitmq-start.yml --limit=project-cp1-c0-m1-mgmt
- name: Validate rabbit up
logfile: test1-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test stop start/ one rabbit /Multi node cluster
- name: Test stop one rabbit on Multi-Node Cluster
logfile: test2-stop-one-multi.log
prefix: stop-rabbit-one-multi
playbooks:
- rabbitmq-stop.yml --limit=project-cp2-c1-m1-mgmt
- name: Test start one rabbit on Multi-Node Cluster
logfile: test2-start-one-multi.log
prefix: start-rabbit-one-multi
playbooks:
- rabbitmq-start.yml --limit=project-cp2-c1-m1-mgmt
- name: Validate rabbit Up
logfile: test2-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test stop start/ all rabbits in single cp /Multi node cluster
# Must add flag as default case is stop on one host only
# default stop will give "unsafe to stop on all hosts at once"
- name: Test stop all rabbits on Multi-Node Cluster
logfile: test3-stop-all-multi.log
prefix: stop-rabbit-all-multi
playbooks:
- rabbitmq-stop.yml --limit=*cp2* -e "rabbitmq_do_not_reset_node=true"
- name: Validate rabbit Down
logfile: test3-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Test start all rabbits on Multi-Node Cluster
logfile: test3-start-all-multi.log
prefix: start-rabbit-all-multi
playbooks:
- rabbitmq-start.yml --limit=*cp2*
- name: Validate rabbit Up
logfile: test3-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test stop start/ all rabbits in all control planes
- name: Test stop all rabbits on all control planes
logfile: test4-stop-all-cps.log
prefix: stop-rabbit-all
playbooks:
- rabbitmq-stop.yml -e "rabbitmq_do_not_reset_node=true"
- name: Validate rabbit Down
logfile: test4-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Test start all rabbits in all control planes
logfile: test4-start-all-cps.log
prefix: start-rabbit-all
playbooks:
- rabbitmq-start.yml
- name: Validate rabbit Up
logfile: validate-rabbit-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test Noop Reconfigure
- name: Test Noop reconfigure
logfile: test5-reconfigure-noop.log
prefix: reconfigure-noop
playbooks:
- rabbitmq-reconfigure.yml
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
# Test rabbit is up - This should test that rabbit has not restarted (TBD)
- name: Validate rabbit
logfile: test5-validate-up
prefix: validate-rabbit
exec:
- validate-rabbit-up.bash
- name: Update conf file change
logfile: test6-update-conf-all.log
prefix: update-conf-all
exec:
- update-conf.bash 's/{disk_free_limit, {{ rabbitmq_config.disk_free_limit }}}/{disk_free_limit, 500000000}/g' ./rabbitmq/rabbitmq.config.j2
- name: Test reconfigure conf file change
logfile: test6-reconfigure-all.log
prefix: reconfigure-conf-all
playbooks:
- rabbitmq-reconfigure.yml
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
- name: Test Conf File change
logfile: test7-test-conf.log
prefix: test-rabbit-conf
exec:
- test-rabbit-conf.bash cp1 disk_free_limit 500000000
- name: Update conf file change for limit test
logfile: test8-update-conf-limit.log
prefix: update-conf-limited
exec:
- update-conf.bash 's/{disk_free_limit, 500000000}/{disk_free_limit, {{ rabbitmq_config.disk_free_limit }}}/g' ./rabbitmq/rabbitmq.config.j2
- name: Test reconfigure conf Limit to Single Control Plane
logfile: test8-reconfigure-limit.log
prefix: reconfigure-conf-limited
playbooks:
- rabbitmq-reconfigure.yml --limit=*cp1*
- name: Validate cache is clear
logfile: testsuite-clear-cache
prefix: validate-cache
exec:
- copy.bash check-persistent-cache.yml
- name: Validate db exists
logfile: testsuite-upgrade
prefix: validate-db
exec:
- check-user.bash
# Currently exec only runs on the deployer so the second exec cannot
# actually check the state of cp2 here . TBD we need a way to
# run command on multiple hosts in the cluster not just on deployer
# ideally this should be part of the test harness
- name: Test Conf File change
logfile: test8-test-conf-limited.log
prefix: test-conf-limited
exec:
- test-rabbit-conf.bash cp1 disk_free_limit 1000000000
- test-rabbit-conf.bash cp2 disk_free_limit 500000000
- name: Test - Reset to original disk_free_limit on all cps
logfile: test8-reconfigure-all.log
prefix: reconfigure-conf-limited
playbooks:
- rabbitmq-reconfigure.yml
- name: Update password for single control plane
logfile: test9-update-pwd-change.log
prefix: update-pwd
exec:
- update-pwd.bash ~/ardana-ci-tests/pwd_change_cp1.yml
# Confirm with Nick what the difference is with
# configure users
- name: Test reconfigure password change
logfile: test9-reconfigure-pwd-change.log
prefix: reconfigure-password-change
playbooks:
- rabbitmq-reconfigure-credentials.yml
- name: Test Password Change Result - Validate Rabbit up
logfile: test9-validate-rabbit-up.log
prefix: test-conf-limited
exec:
- validate-rabbit-up.bash
- name: Test Pasword change Result - Validate access to keystone
logfile: test9-test-rmq-access.log
prefix: test-conf-limited
exec:
- test-rmq-access.bash cp1 rmq_keystone_user mynewpassword
# TBD - We need to configure another service on the second
# control plane to do this testing
#
# Currently only have user on one control plane because
# only have a rabbit service ( ie keystone ) on one control plane
#
# - name: Update password for all control planes
# logfile: testsuite-reconfigure-pwd-change.log
# prefix: update-pwd
# exec:
# - update-pwd.bash ~/ardana-ci-tests/pwd_change_cp1.yml
# - update-pwd.bash ~/ardana-ci-tests/pwd_change_cp2.yml
#- name: Test reconfigure password change
# logfile: testsuite-reconfigure-pwd-change.log
# prefix: reconfigure-password-change-all
# playbooks:
# - rabbitmq-reconfigure-credentials.yml --limit=*cp2*
#- name: Test Password change Result - Access to keystone
# logfile: testsuite-reconfigure-pwd-change.log
# prefix: test-conf-limited
# exec:
# - validate-rabbit-up.bash
# Currently exec only runs this on the deplouyer so this does not really
# check cp2
#- name: Test Password change Result - Password on control planes
# logfile: testsuite-reconfigure-conf-change.log
# prefix: test-conf-limited
# exec:
# - test-rmq-access.bash cp2 rmq_keystone_user mynewpassword
# Reboot Tests - Single Host reboots TBD check if test harness has
# long enough sleep as next test failing occassionally without sleep
- name: Test reboot server2
logfile: test10-reboot.log
prefix: reboot-server2
vms:
- reboot: server2
- name: Test reboot server2
logfile: test10-sleep.log
prefix: sleep-for-1
exec:
- sleep 60
# Note here rabbit does not start on reboot so you have to explictly
# start it
- name: Test we are down
logfile: test10-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Start rabbit on server2
logfile: test10-start-rabbit-limit.log
prefix: start-on-server2
playbooks:
- rabbitmq-start.yml --limit=project-cp2-c1-m1-mgmt
# This is the same as the previous test just
# is testing a 2nd server reboot in sequence
# with the first one which can sometimes be a useful test
- name: Test reboot server3
logfile: test11-reboot.log
prefix: reboot-server3
vms:
- reboot: server3
- name: Test reboot server3
logfile: test11-sleep.log
prefix: sleep-for-1
exec:
- sleep 60
# Note here rabbit does not start on reboot so you have to explictly
# start it
- name: Test we are down
logfile: test11-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Start rabbit on server3
logfile: test11-start-rabbit.log
prefix: start-on-server3
playbooks:
- rabbitmq-start.yml --limit=project-cp2-c1-m2-mgmt
- name: Test we are up
logfile: test11-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
- name: Test reboot - Singleton rabbit cluster reboot server here
logfile: test12-reboot-singleton.log
prefix: reboot-singleton
vms:
- reboot: server1
- name: Test reboot server1
logfile: test12-sleep.log
prefix: sleep-for-1
exec:
- sleep 60
# Note here rabbit does not start on reboot so you have to explictly
# start it
- name: Test we are down
logfile: test12-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Start rabbit on server1
logfile: test12-start-limited.log
prefix: start-on-server1
playbooks:
- rabbitmq-start.yml --limit=project-cp1-c0-m1-mgmt
- name: Test we are up
logfile: test12-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test remove node
- name: Test remove rabbit on server2
logfile: test13-remove.log
prefix: remove-rabbit-one
playbooks:
- rabbitmq-remove.yml --limit=project-cp2-c1-m1-mgmt
# TBD this needs to test rabbit ok on other 2 hosts
- name: Test we are down on that host
logfile: test13-validate-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Test depooy rabbit on server2
logfile: test13-deploy-one-limit.log
prefix: deploy-rabbit-one
playbooks:
- rabbitmq-deploy.yml --limit=project-cp2-c1-m1-mgmt
- name: Test we are up on that host
logfile: test13-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# Test Blow away/disaster recovery
- name: Test stop all rabbits on all control planes
logfile: test13-stop-permit-multi.log
prefix: stop-rabbit-all
playbooks:
- rabbitmq-stop.yml --limit=*cp2* -e "rabbitmq_permit_multi_stop=true"
- name: Validate rabbit Down
logfile: test13-validate-rabbit-down.log
prefix: validate-rabbit-down
exec:
- validate-rabbit-down.bash
- name: Validate rabbit Up on cp1
logfile: test13-validate-rabbit-up.log
prefix: validate-rabbit-up
playbooks:
- rabbitmq-status.yml --limit=*cp1*
- name: Test disaster recovery in one control planes
logfile: test13-disaster-recovery.log
prefix: start-rabbit-all
playbooks:
- rabbitmq-disaster-recovery.yml --limit=*cp2*
- name: Validate rabbit Up
logfile: test13-validate-up.log
prefix: validate-rabbit-up
exec:
- validate-rabbit-up.bash
# TBD - lots more tests to be done, would be useful
# to be able to add upgrade in here e.g.
# Test more rabbit operations
# Test no op upgrade
# Test upgrade
# Test configure Monasca
# Also we need to be able to add a pattern for checking
# all hosts not just the deployer host in tests...need a mechanism
# for this in the test harness
0707010000001D000081ED0000000000000000000000015FAD0DE000000515000000000000000000000000000000000000004B00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/test-rabbit-conf.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# e.g
# test-rabbit-conf cp1 slow_query_log ON
# tests if slow_query_log is set ON on cp1 and
# NOT set ON elsewhere if this is run elsewhere
# Currently only run on the deployer
set -vx
echo " $1 $2 $3"
cnfstatus=0
if [[ $(hostname) == *"$1"* ]]
then
sudo rabbitmqctl status 2>/dev/null | awk '/$2/ {match($0, /[0-9]+/); print substr( $0, RSTART, RLENGTH )} | grep $3'
if [[ $? == 1 ]]
then
cnfstatus=1
fi
fi
if [[ $(hostname) != *"$1"* ]]
then
sudo rabbitmqctl status 2>/dev/null | awk '/$2/ {match($0, /[0-9]+/); print substr( $0, RSTART, RLENGTH )} | grep $3'
if [[ $? == 0 ]]
then
cnfstatus=1
fi
fi
exit $cnfstatus
0707010000001E000081ED0000000000000000000000015FAD0DE0000004BF000000000000000000000000000000000000004A00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/test-rmq-access.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Usage: test-rmq-access.bash cp1 rmq_keystone_user mynewpassword
set -vx
echo " $1 $2 $3"
cnfstatus=0
if [[ $(hostname) == *"$1"* ]]
then
sudo rabbitmqctl authenticate_user $2 $3 | grep Success
if [[ $? == 1 ]]
then
cnfstatus=1
fi
fi
# This test currently doesnt actually run but its
# setup to assume if user is on a different cp
# it wont have the same creds. (may not be what we want)
if [[ $(hostname) != *"$1"* ]]
then
sudo rabbitmqctl authenticate_user $2 $3 | grep Success
if [[ $? == 0 ]]
then
cnfstatus=1
fi
fi
exit $cnfstatus
0707010000001F000081ED0000000000000000000000015FAD0DE000000402000000000000000000000000000000000000004600000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/update-conf.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
set -vxe
echo "Changing $1 in $2"
pushd ~/openstack/my_cloud/config
sed -e "$1" -i "$2" --follow-symlinks
git add -A
git commit --allow-empty -m "My Config Change"
pushd ~/openstack/ardana/ansible/
ansible-playbook -i hosts/localhost config-processor-run.yml -e encrypt="" \
-e rekey=""
ansible-playbook -i hosts/localhost ready-deployment.yml
popd
popd
07070100000020000081ED0000000000000000000000015FAD0DE000000401000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/update-pwd.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
set -evx
cp $1 ~/ardana/change_credentials/
pushd ~/openstack/ardana/ansible/
# Next two lines should not be necessary but are, checking why
git add -A
git commit --allow-empty -m "My Config Change"
ansible-playbook -i hosts/localhost config-processor-run.yml -e encrypt="" \
-e rekey=""
ansible-playbook -i hosts/localhost ready-deployment.yml
popd
07070100000021000081ED0000000000000000000000015FAD0DE000000373000000000000000000000000000000000000004F00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/validate-rabbit-down.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
ansible-playbook -i hosts/verb_hosts rabbitmq-status.yml
rabbit_test_status=$?
echo "Rabbit Test Status is $rabbit_test_status"
if [ $rabbit_test_status -eq 0 ]
then
echo "Fail, Expected Rabbit Down!"
exit 1
else
echo "OK"
fi
07070100000022000081ED0000000000000000000000015FAD0DE00000035C000000000000000000000000000000000000004D00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/validate-rabbit-up.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
ansible-playbook -i hosts/verb_hosts rabbitmq-status.yml
rabbit_test_status=$?
echo "Rabbit Test Status is $rabbit_test_status"
if [ $rabbit_test_status -eq 0 ]
then
echo "Ok"
else
echo "Fail"
exit 1
fi
07070100000023000081ED0000000000000000000000015FAD0DE000000332000000000000000000000000000000000000004B00000000ardana-mq-8.0+git.1605176800.52cccfa/ardana-ci/tests/validate-upgrade.bash#!/bin/bash
#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
set -vx
version=`sudo dpkg -l | grep rabbitmq-server | awk '{print $3}'`
if [[ $version == $1 ]]
then
upgradestatus=0
else
upgradestatus=1
fi
exit $upgradestatus
07070100000024000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000002C00000000ardana-mq-8.0+git.1605176800.52cccfa/config07070100000025000081A40000000000000000000000015FAD0DE0000004A4000000000000000000000000000000000000004000000000ardana-mq-8.0+git.1605176800.52cccfa/config/rabbit-symlinks.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# The following relative symlinks are created under the
# my_cloud/config directory.
---
symlinks:
rabbitmq/erlang.cookie.j2: roles/rabbitmq/templates/erlang.cookie.j2
rabbitmq/rabbitmq.config.j2: roles/rabbitmq/templates/rabbitmq.config.j2
rabbitmq/rabbitmq-env.conf.j2: roles/rabbitmq/templates/rabbitmq-env.conf.j2
rabbitmq/rabbitmq-server.logrotate.j2: roles/rabbitmq/templates/rabbitmq-server.logrotate.j2
rabbitmq/main.yml: roles/rabbitmq/defaults/main.yml
rabbitmq-monasca/main.yml: roles/rabbitmq-monasca/defaults/main.yml
07070100000026000081A40000000000000000000000015FAD0DE000000354000000000000000000000000000000000000004200000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-configure-users.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Configure the RabbitMQ uses that can access RabbitMQ and there user rights.
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/configure-users.yml
07070100000027000081A40000000000000000000000015FAD0DE000000AF7000000000000000000000000000000000000003900000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-deploy.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-neutron-setup.yml
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/pre-configure.yml
- include: roles/rabbitmq/tasks/create-working-dirs.yml
# Write TLS certificates to disk.
# Note: We always take details from CP here.
- include: roles/rabbitmq/tasks/write-tls-files.yml
when: (rabbitmq_cp.tls_enabled | bool)
- include: roles/rabbitmq/tasks/write-configuration.yml
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to do this here as the installation of RabbitMQ starts the service before
# the cluster has been formed.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/install.yml
# In deploy we check if the pre-configuration has changed if it has (by
# checking 'ardana_notify_rabbitmq_reset_required.changed' or
# 'ardana_notify_rabbitmq_stop_forced.changed') then we 'force_reset' to
# make sure we are clean on a new run, so we remove all messages and DB
# config non-gracefully.
- include: roles/rabbitmq/tasks/stop.yml
vars:
rabbitmq_reset_option: force_reset
when: ardana_notify_rabbitmq_reset_required.changed or
ardana_notify_rabbitmq_stop_forced.changed
- include: roles/rabbitmq/tasks/start.yml
# Set-up users access for RabbitMQ.
- include: rabbitmq-configure-users.yml
# Set-up Monasca agent for RabbitMQ.
- include: rabbitmq-monasca-configure.yml
- hosts: FND-RMQ
gather_facts: no
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
# Remove block on '*_listener' ports.
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/status.yml
# Clear all persisted facts relating to RabbitMQ.
- include: roles/rabbitmq/tasks/clear-persistant-facts.yml
07070100000028000081A40000000000000000000000015FAD0DE0000003DB000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-disaster-recovery.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# During a disaster recovery of RabbitMQ we leave in-place the current
# Monasca set-up so monitoring can see RabbitMQ state.
# Note: This conviantly models the state were Monasca is not used.
- include: rabbitmq-remove.yml
vars:
rabbitmq_monasca_remove: false
- include: rabbitmq-deploy.yml
vars:
rabbitmq_monasca_configure: false
07070100000029000081A40000000000000000000000015FAD0DE0000003D8000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-monasca-configure.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Configure the RabbitMQ Monasca agent.
- hosts: FND-RMQ:&MON-AGN
max_fail_percentage: 0
roles:
- rabbitmq-monasca
tasks:
- include: roles/rabbitmq-monasca/tasks/remove.yml
when: (rabbitmq_monasca_configure | bool)
- include: roles/rabbitmq-monasca/tasks/configure.yml
when: (rabbitmq_monasca_configure | bool)
0707010000002A000081A40000000000000000000000015FAD0DE00000036B000000000000000000000000000000000000004100000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-monasca-remove.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Configure the RabbitMQ Monasca agent.
- hosts: FND-RMQ:&MON-AGN
max_fail_percentage: 0
roles:
- rabbitmq-monasca
tasks:
- include: roles/rabbitmq-monasca/tasks/remove.yml
when: (rabbitmq_monasca_remove | bool)
0707010000002B000081A40000000000000000000000015FAD0DE0000002CF000000000000000000000000000000000000003F00000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-post-upgrade.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: rabbitmq-reconfigure.yml
vars:
rabbitmq_config_lock: false
0707010000002C000081A40000000000000000000000015FAD0DE0000002D5000000000000000000000000000000000000003E00000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-pre-upgrade.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-upgrade-packages.yml
vars:
rabbitmq_config_lock: false
0707010000002D000081A40000000000000000000000015FAD0DE000000362000000000000000000000000000000000000004A00000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-reconfigure-credentials.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Update the uses that can access RabbitMQ and there user rights.
- include: rabbitmq-configure-users.yml
# Update RabbitMQ Monasca agent if used as user details may have changed.
- include: rabbitmq-monasca-configure.yml
0707010000002E000081A40000000000000000000000015FAD0DE00000037A000000000000000000000000000000000000003E00000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-reconfigure.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Validate play and lock any configuration required.
- include: _rabbitmq-validate.yml
# Change the RabbitMQ configuration.
- include: _rabbitmq-change.yml
# Reconfigure Monasca agent for RabbitMQ.
- include: rabbitmq-monasca-configure.yml
0707010000002F000081A40000000000000000000000015FAD0DE0000008FA000000000000000000000000000000000000003900000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-remove.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# This will remove all RabbitMQ components installed by this playbook.
- include: _rabbitmq-neutron-setup.yml
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- guard-cluster
- iptables
- rabbitmq
tasks:
# We want to ensure that all IP chains related to Rabbit
# are torn down at the end of this part of the remove process.
# However, the iptables-{add,delete} rules have an asymmetry:
# -add is idempotent (can be called multiple times), but
# -delete will flag an error if the named chain does not exist.
# (This design is to catch the maximal number of errors arising
# during the composition of multipler playbooks that may play
# with the firewall settings.)
# Therefore, to manage the remove situation where an attempt to
# upgrade a broken Rabbit installation has failed (potentially
# leaving a firewall rule in place), we unconditionally add
# the rules here so that we guarantee it is safe to attempt
# to remove them at the end of the tear-down process.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/remove.yml
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
# Clear all persisted facts relating to RabbitMQ on the current.
- include: roles/rabbitmq/tasks/clear-persistant-facts.yml
# Remove the RabbitMQ monasca setup.
- include: rabbitmq-monasca-remove.yml
07070100000030000081A40000000000000000000000015FAD0DE00000058D000000000000000000000000000000000000003800000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-start.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-neutron-setup.yml
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
# Stop messages entering a node by blocking the '*_listener' ports.
# Need to do this here as node may not yet be part of the cluster.
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/start.yml
# Remove block on '*_listener' ports.
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/status.yml
07070100000031000081A40000000000000000000000015FAD0DE000000302000000000000000000000000000000000000003900000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-status.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- rabbitmq
tasks:
- include: roles/rabbitmq/tasks/status.yml
07070100000032000081A40000000000000000000000015FAD0DE00000081D000000000000000000000000000000000000003700000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-stop.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- include: _rabbitmq-neutron-setup.yml
# Notice how we are controlling the last node to be left on-line this must
# be the first node to come back online in stop.yml and start.yml
# respectfully. This must not have the serial flag set.
- hosts: FND-RMQ
max_fail_percentage: 0
roles:
- iptables
- rabbitmq
tasks:
# Note: rabbitmq_do_not_reset_node has a hight precedence than
# rabbitmq_permit_multi_stop.
- name: rabbitmq | rabbitmq-stop | Check for stop running on multiple hosts
fail:
msg: "It is unsafe to run RabbitMQ stop on multiple hosts at once"
when: (play_hosts | length) > 1 and
not rabbitmq_permit_multi_stop and
not rabbitmq_do_not_reset_node
# Stop messages entering a node by blocking the '*_listener' ports. Need
# to do this here to stop traffic entering a node that we are stopping.
# This gives early indication to the proxy to move any vips pointing at
# the node
- include: roles/iptables/tasks/iptables-add.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
- include: roles/rabbitmq/tasks/stop.yml
# Remove block on '*_listener' ports.
- include: roles/iptables/tasks/iptables-delete.yml
vars:
iptables_chain: "{{ rabbitmq_iptables_chain }}"
iptables_ip_port: "{{ rabbitmq_bind_addresses }}"
07070100000033000081A40000000000000000000000015FAD0DE000000327000000000000000000000000000000000000003A00000000ardana-mq-8.0+git.1605176800.52cccfa/rabbitmq-upgrade.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Upgrade the RabbitMQ base packages
- include: _rabbitmq-upgrade-packages.yml
# Update Monasca agent for RabbitMQ.
- include: rabbitmq-monasca-configure.yml
07070100000034000041ED0000000000000000000000045FAD0DE000000000000000000000000000000000000000000000002B00000000ardana-mq-8.0+git.1605176800.52cccfa/roles07070100000035000041ED0000000000000000000000065FAD0DE000000000000000000000000000000000000000000000003400000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq07070100000036000041ED0000000000000000000000055FAD0DE000000000000000000000000000000000000000000000003C00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca07070100000037000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/defaults07070100000038000081A40000000000000000000000015FAD0DE000000509000000000000000000000000000000000000004E00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/defaults/main.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# The RabbitMQ default set-up for the Monasca agent plugin.
rabbitmq_monasca_configure: true
rabbitmq_monasca_remove: true
# If true, monitor exchanges, queues as well as hosts, process monitoring.
rabbitmq_monasca_full_monitoring: false
# Config Processor variable mapping.
rabbitmq_monasca_cp:
monasca_api_url: >
{{ rabbitmq_management_protocol }}://{{ rabbitmq_cp.management_address.ip }}:{{ rabbitmq_cp.management_address.port }}/api
monasca_username: >
{{ MON_AGN.consumes_FND_RMQ.vars.accounts.monasca_rmq_monitor.username }}
monasca_password: >
{{ MON_AGN.consumes_FND_RMQ.vars.accounts.monasca_rmq_monitor.password }}
07070100000039000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000004100000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/meta0707010000003A000081A40000000000000000000000015FAD0DE0000002CF000000000000000000000000000000000000004A00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/meta/main.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
dependencies:
- {role: rabbitmq}
- {role: monasca-agent, run_mode: Use}
0707010000003B000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000004200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/tasks0707010000003C000081A40000000000000000000000015FAD0DE000000629000000000000000000000000000000000000005000000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/tasks/configure.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq-monasca | configure | Setup Monasca with RabbitMQ mgmt
become: yes
no_log: true
monasca_agent_plugin:
name: rabbitmq
args:
watch_api: True
api_url: "{{ rabbitmq_monasca_cp.monasca_api_url }}"
user: "{{ rabbitmq_monasca_cp.monasca_username }}"
password: "{{ rabbitmq_monasca_cp.monasca_password | quote }}"
when: ("rabbitmq_management" in (rabbitmq_plugins | default([], true))) and
(rabbitmq_monasca_full_monitoring | bool)
- name: rabbitmq-monasca | configure | Setup Monasca without RabbitMQ mgmt
become: yes
monasca_agent_plugin:
name: rabbitmq
args:
watch_api: False
when: ("rabbitmq_management" not in (rabbitmq_plugins | default([], true))) or
(not (rabbitmq_monasca_full_monitoring | bool))
- name: rabbitmq-monasca | configure | Configure TLS certificate monitoring
include: configure_tls.yml
when: rabbitmq_tls_enabled | bool
0707010000003D000081A40000000000000000000000015FAD0DE000000711000000000000000000000000000000000000005400000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/tasks/configure_tls.yml#
# (c) Copyright 2020 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Start mysql on these nodes. Note if the whole cluster is down
# this will not start as a boostrap will need to run on one node
---
# NOTE(gyee): Since the provisioned TLS server certificate is consisted of
# both certificate and private key, we need to separate out the certificate
# protion for monitoring without having to compromise the private key.
# This is done by copying the certificate to a different file and make it
# readable by the world. Making certificate readable by the world is NOT a
# problem as it is TLS certificate is public information.
- name: rabbitmq-monasca | configure_tls | Separate out rabbitmq TLS cert
become: yes
shell: >
openssl x509 -in {{ rabbitmq_tls.pem_file }}
-out {{ rabbitmq_tls.monitoring_pem_file }} -outform PEM
- name: rabbitmq-monasca | configure_tls |
Make sure rabbitmq TLS cert is readable
become: yes
file:
path: "{{ rabbitmq_tls.monitoring_pem_file }}"
mode: '0644'
- name: rabbitmq-monasca | configure_tls |
Run Monasca detection plugin for rabbitmq TLS certs
become: yes
monasca_agent_plugin:
name: CertificateFileCheck
args:
cert_files: "{{ rabbitmq_tls.monitoring_pem_file }}"
dimensions: "service:rabbitmq"
0707010000003E000081A40000000000000000000000015FAD0DE0000003A5000000000000000000000000000000000000004D00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/tasks/remove.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq-monasca | remove | Remove Monasca RabbitMQ config
become: yes
file:
path: /etc/monasca/agent/conf.d/rabbitmq.yaml
state: absent
- name: rabbitmq-monasca | remove | Remove TLS certificate monitoring
include: remove_tls.yml
when: rabbitmq_tls_enabled | bool
0707010000003F000081A40000000000000000000000015FAD0DE0000003EE000000000000000000000000000000000000005100000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq-monasca/tasks/remove_tls.yml#
# (c) Copyright 2020 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Start mysql on these nodes. Note if the whole cluster is down
# this will not start as a boostrap will need to run on one node
---
- name: rabbitmq-monasca | remove_tls |
Remove Monasca detection plugin for rabbitmq TLS certs
become: yes
monasca_agent_plugin:
name: CertificateFileCheck
args:
cert_files: "{{ rabbitmq_tls.monitoring_pem_file }}"
dimensions: "service:rabbitmq"
state: absent
07070100000040000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000003D00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/defaults07070100000041000081A40000000000000000000000015FAD0DE0000022C9000000000000000000000000000000000000004600000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/defaults/main.yml
# (c) Copyright 2015-2018 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
rabbitmq_cluster_name: "{{ rabbitmq_cp.control_plane ~ '_rabbit' }}"
rabbitmq_cluster_size: "{{ groups[rabbitmq_cp.group_name] | length }}"
rabbitmq_clustered: "{{ (rabbitmq_cluster_size | int) > 1 }}"
rabbitmq_config_lock: true
rabbitmq_etc_dir: /etc/rabbitmq # Fix for Debian and RPM do not change.
rabbitmq_join_cluster_timeout: "2m"
# We always reset unless overridden.
rabbitmq_do_not_reset_node: false
rabbitmq_ha_policy_name: HA
rabbitmq_iptables_chain: rabbitmq-temp
rabbitmq_list_queues_timeout: "5m"
rabbitmq_management_protocol: >
{%- if (rabbitmq_tls_enabled | bool) -%}
https
{%- else -%}
http
{%- endif -%}
# Defaults to rabbit. This can be useful if you want to run more than one node
# per machine. Note: relate to RABBITMQ_NODENAME env as well.
# WARNING: Changing the two setting below requires a redeploy.
rabbitmq_node: rabbit
# NOTE: There are two notions of a address name used here: the one that Ansible
# has, which is embedded in groups[verb_hosts.FND_RMQ], and the one that is
# supplied from Config Processor as part of the configuration of the service.
# It is vital to keep these separated and note that configuration of the
# service is via the Config Processor address name values and access to the
# system to be configured is via Ansible address name.
rabbitmq_nodename: >
{{ rabbitmq_node }}@{{ rabbitmq_cp_hosts.hostname }}
rabbitmq_remote_nodename: >
{{ rabbitmq_node }}@{{ rabbitmq_cp_hosts.remote_hostname }}
# Restrict a user from stopping node in an order that could damage a running
# cluster unless overridden.
rabbitmq_permit_multi_stop: false
# A user can overrided the host to use for clustering to allow a non-default
# cluster opration.
rabbitmq_primary_hostname: "{{ groups[rabbitmq_cp.group_name] | first }}"
rabbitmq_remote_hostname: >
{{ groups[rabbitmq_cp.group_name]
[(groups[rabbitmq_cp.group_name].index(rabbitmq_primary_hostname) + 1) %
(groups[rabbitmq_cp.group_name] | length)] }}
# The Ansible host to use for remote commands.
rabbitmq_remote_host: >
{%- if inventory_hostname == rabbitmq_primary_hostname -%}
{{ rabbitmq_remote_hostname }}
{%- else -%}
{{ rabbitmq_primary_hostname }}
{%- endif -%}
# Set to 'force_reset' to forcefully return a RabbitMQ node to its virgin
# state.
rabbitmq_reset_option: reset
rabbitmq_service_name: rabbitmq-server
# Time to wait for a RabbitMQ service start.
rabbitmq_start_timeout: "5m"
# Time to wait for a RabbitMQ application app.
rabbitmq_start_app_timeout: "5m"
# Time to wait for a RabbitMQ application stop.
rabbitmq_stop_app_timeout: "5m"
# Time to wait for a RabbitMQ reset command to complete.
rabbitmq_reset_timeout: "2m"
# Control the time we wait for a node to become synchronised.
# This has a max wait time in seconds of:
# rabbitmq_sync_retries * rabbitmq_sync_delay
# Default: 90 * 10 = 900 seconds ( 15 mins )
rabbitmq_sync_retries: 90
rabbitmq_sync_delay: 10
# Enable status check for TLS.
rabbitmq_tls_check_status: true
# Enable TLS replication.
# This allows the user to disable TLS replication traffic when client TLS is
# enable ONLY.
rabbitmq_tls_replication: true
# Set TLS configuration state.
rabbitmq_tls_enabled: "{{
((ardana_notify_rabbitmq_lockout_tls | default(false)) and
ardana_notify_rabbitmq_lockout_tls.changed) or
(rabbitmq_cp.tls_enabled | bool) }}"
# User over-ridable TLS cert setting.
rabbitmq_tls_certs_local_dir: /tmp/ardana_tls_certs
rabbitmq_tls_expiry_check: 2592000 # 30 days expiry
rabbitmq_tls_certs_force_regeneration: False
# Map a Ansible hostname to a Config Processor hostname.
rabbitmq_cp_hosts:
hostname: >
{{ (rabbitmq_cp.map_port_info |
selectattr('ardana_ansible_host', 'equalto', inventory_hostname) |
first).host }}
remote_hostname: >
{{ (rabbitmq_cp.map_port_info |
selectattr('ardana_ansible_host', 'equalto', rabbitmq_remote_host) |
first).host }}
ansible_cluster: >
{{ rabbitmq_cp.map_port_info |
map(attribute='ardana_ansible_host') |
list }}
# Config Processor variable mapping.
rabbitmq_cp:
tcp_bind_addresses:
- ip: "{{ host.bind.FND_RMQ.tcp_listener.ip_address }}"
port: "{{ host.bind.FND_RMQ.tcp_listener.port }}"
tls_bind_addresses:
- ip: "{{ host.bind.FND_RMQ.tls_listener.ip_address }}"
port: "{{ host.bind.FND_RMQ.tls_listener.port }}"
control_plane: "{{ host |
item('my_dimensions.control_plane',
default='ardana') }}"
control_planes: "{{ global.control_planes }}"
credentials: "{{ FND_RMQ.consumed_by | default({})}}"
erlang_cookie: "{{ FND_RMQ.vars.erlang_cookie }}"
group_name: "{{ verb_hosts.FND_RMQ }}"
# WARNING: Changing this value requires a redeploy
inet_dist_listen_port: >
{{ host.bind.FND_RMQ.rabbitmq_inet_dist_listen.port }}
management_address:
ip: "{{ host.bind.FND_RMQ.rabbitmq_management.ip_address }}"
port: "{{ host.bind.FND_RMQ.rabbitmq_management.port }}"
map_port_info: "{{ FND_RMQ.members.rabbitmq_epmd }}"
# WARNING: Changing this value requires a redeploy
home: "{{ host | item('my_logical_volumes.FND_RMQ')
| by_item('consumer.rabbitmq_env', 'home')
| item('0.mount', default='/var/lib/rabbitmq') }}"
tls_enabled: "{{ host.bind.FND_RMQ.internal.tls }}"
tls_filename: "{{ host | item('bind.FND_RMQ.internal.cert_name',
default='') }}"
rabbitmq_bind_addresses: "{{ rabbitmq_cp.tcp_bind_addresses |
union(rabbitmq_cp.tls_bind_addresses) }}"
# See: https://www.rabbitmq.com/plugins.html
# Add any RabbitMQ plugins you wish to install to the list.
rabbitmq_plugins:
# - rabbitmq_management # See: https://www.rabbitmq.com/management.html
# - rabbitmq_top # Requires the management plugin.
# For details of config and environment options.
# See: https://www.rabbitmq.com/configure.html
# RabbitMQ environment.
# Adding a value here will add it to the RabbitMQ environment file.
# See: https://www.rabbitmq.com/relocate.html
rabbitmq_env:
home: "{{ rabbitmq_cp.home }}"
log_base: /var/log/rabbitmq
nodename: "{{ rabbitmq_nodename }}"
mnesia_base: "{{ rabbitmq_cp.home }}/mnesia"
pid_file: /var/run/rabbitmq/{{ rabbitmq_nodename }}.pid
# See: https://www.rabbitmq.com/networking.html
# Increase the Erlang Thread Pool to 128 (default 64).
rabbitmq_io_thread_pool_size: 128
# See 'rabbitmq_tls_erl_args' for configuration details.
erl_ssl_path: "{{ erl_ssl_path }}"
server_additional_erl_args: "{{ rabbitmq_tls_erl_args | quote }}"
ctl_erl_args: "{{ rabbitmq_tls_erl_args | quote }}"
# RabbitMQ config.
rabbitmq_config:
cluster_partition_handling: pause_minority
# See: https://www.rabbitmq.com/disk-alarms.html for alternative setting.
disk_free_limit: 1000000000 # 1GB disk free limit.
vm_memory_high_watermark: 0.4
hipe_compile: false
rates_mode: basic
# RabbitMQ TLS vars
rabbitmq_cert_dir: "{{ rabbitmq_etc_dir }}"
rabbitmq_tls:
erlang_ssl_symlink: >
{{ rabbitmq_etc_dir }}/erlang_ssl
req_file: >
{{ rabbitmq_cert_dir }}/{{ rabbitmq_cp.control_plane }}-rabbitmq.req
pem_file: >
{{ rabbitmq_cert_dir }}/{{ rabbitmq_cp.control_plane }}-rabbitmq.pem
monitoring_pem_file: >
{{ rabbitmq_cert_dir }}/{{ rabbitmq_cp.control_plane }}-rabbitmq-monitoring.pem
# RabbitMQ cluster TLS additional aguments as per:
# https://www.rabbitmq.com/clustering-ssl.html
rabbitmq_tls_erl_args: >-
{%- if (rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool) -%}
-pa $ERL_SSL_PATH
-proto_dist inet_tls
-ssl_dist_opt server_certfile {{ rabbitmq_tls.pem_file }}
-ssl_dist_opt server_keyfile {{ rabbitmq_tls.pem_file }}
-ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true
{%- endif -%}
# NOTE(gyee) num_queues is the ceiling of number of nodes divided by 2. Per
# https://bugs.launchpad.net/tripleo/+bug/1628998
# However it is recommended that we don't neccessary need more than 3
# copies, regardless of number of nodes.
num_queues: "{{ (rabbitmq_cluster_size|int / 2) | round(0, 'ceil') | int }}"
max_num_queues: >
{%- if num_queues|int > 3 -%}
3
{%- else -%}
{{ num_queues }}
{%- endif -%}
07070100000042000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000003A00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks07070100000043000081A40000000000000000000000015FAD0DE000000516000000000000000000000000000000000000004D00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_cluster-check.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | _cluster-check | Check RabbitMQ node is in a cluster
become: yes
shell: >
rabbitmqctl cluster_status 2>/dev/null |
awk '/running_nodes,\[[^]]+,/,/]},/' |
sed 's/,\([^[]\)/,\n\1/g'
register: _rabbitmq_cluster_check_result
changed_when: false
- include: _join-cluster.yml
when: not (_rabbitmq_cluster_check_result.stdout |
search(rabbitmq_remote_nodename))
# Wait for queues to synchronise, during synchronisation the queues will
# pause and not allow any messages to be placed in the queue that is
# synchronising. We always check we are in sync before continuing.
- include: _wait-for-cluster-sync.yml
07070100000044000081A40000000000000000000000015FAD0DE0000006DE000000000000000000000000000000000000005400000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_configure-ha-cluster.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2019 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
#
# Make sure that all queues (except those with auto-generated names)
# are mirrored across enough nodes in the cluster to achieve quorum
# (but not more than 3).
#
# NOTE(gyee): to minimize disruption, we only need to reset the HA policy
# if it's different from the new one.
- name: rabbitmq | _configure-ha-cluster | Get the current HA policy
become: yes
shell: >
rabbitmqctl list_policies -p / 2>/dev/null | grep '\s{{ rabbitmq_ha_policy_name }}\s'
register: rabbitmq_list_ha_policy_result
ignore_errors: true
- name: rabbitmq | _configure-ha-cluster | Mirror non-auto named queues
become: yes
shell: >
rabbitmqctl set_policy {{ rabbitmq_ha_policy_name }}
'^(?!amq\.).*' '{"ha-mode":"exactly","ha-params":{{ max_num_queues }},"ha-sync-mode":"automatic"}'
when: not rabbitmq_list_ha_policy_result.stdout | search('\^\(\?\!amq\\\\\\\.\)\.\*\s*{"ha-mode":"exactly","ha-params":{{ max_num_queues }},"ha-sync-mode":"automatic"}')
- name: rabbitmq | _configure-ha-cluster | Set the RabbitMQ cluster name
become: yes
command: rabbitmqctl set_cluster_name {{ rabbitmq_cluster_name }}
07070100000045000081A40000000000000000000000015FAD0DE00000040F000000000000000000000000000000000000004F00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_disable-plugins.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# See: https://www.rabbitmq.com/man/rabbitmq-plugins.1.man.html
- name: rabbitmq | _disable-plugins | Disable/Offline all RabbitMQ plugins
become: yes
command: rabbitmq-plugins set
register: _rabbitmq_disable_plugins_result
changed_when: >
(_rabbitmq_disable_plugins_result | success) and
not (_rabbitmq_disable_plugins_result.stdout |
search("\snothing to do[.]\s*$"))
07070100000046000081A40000000000000000000000015FAD0DE0000003AE000000000000000000000000000000000000004E00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_enable-plugins.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# See: https://www.rabbitmq.com/man/rabbitmq-plugins.1.man.html
- name: rabbitmq | _enable-plugins | Enable any new RabbitMQ plugins
become: yes
rabbitmq_plugin:
names: "{{ rabbitmq_plugins | join (',') }}"
state: enabled
when: (rabbitmq_plugins | default([], true) | length) > 0
07070100000047000081A40000000000000000000000015FAD0DE0000009E3000000000000000000000000000000000000005200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_erlang_ssl_symlink.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | _erlang_ssl_symlink | Download the latest erlang-ssl package
delegate_to: localhost
become: yes
command: >
apt-get install erlang-ssl
--download-only
--reinstall
--assume-yes
when: (rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool)
run_once: true
tags:
- skip_ansible_lint
- name: rabbitmq | _erlang_ssl_symlink | Get erlang-ssl package name
delegate_to: localhost
shell: >
apt-cache policy erlang-ssl |
awk '/Candidate:/{gsub(/:/,"%3a",$2); print $2}'
changed_when: false
register: _rabbitmq_ssl_result
when: (rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool)
run_once: true
- name: rabbitmq | _erlang_ssl_symlink | Lookup package contents
delegate_to: localhost
shell: >
dpkg-deb --contents
/var/cache/apt/archives/erlang-ssl_{{ _rabbitmq_ssl_result.stdout }}_*.deb |
awk '/ebin\/$/{gsub(/^\.|\/$/,"",$NF); print $NF}'
changed_when: false
register: _rabbitmq_ssl_content_result
when: (rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool)
run_once: true
- name: rabbitmq | _erlang_ssl_symlink | Create sym-link to erlang-ssl
become: yes
delegate_to: "{{ item }}"
file:
src: "{{ _rabbitmq_ssl_content_result.stdout }}"
dest: "{{ rabbitmq_tls.erlang_ssl_symlink }}"
state: link
force: yes
with_items: "{{ groups[rabbitmq_cp.group_name] }}"
when: (rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool)
register: ardana_notify_rabbitmq_major_change
run_once: true
- name: rabbitmq | _erlang_ssl_symlink | Remove sym-link to erlang-ssl
become: yes
file:
path: "{{ rabbitmq_tls.erlang_ssl_symlink }}"
state: absent
when: not ((rabbitmq_tls_enabled | bool) and
(rabbitmq_tls_replication | bool))
register: ardana_notify_rabbitmq_major_change
07070100000048000081A40000000000000000000000015FAD0DE000000C7F000000000000000000000000000000000000004C00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_join-cluster.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | _join-cluster | Stop the RabbitMQ application for clustering
become: yes
command: |
timeout {{ rabbitmq_stop_app_timeout }}
rabbitmqctl stop_app
# If RC is zero we have joined the cluster correctly.
# If RC is non-zero then the remote node may think we are already in cluster
# with the local node.
- name: rabbitmq | _join-cluster | Join the RabbitMQ cluster
become: yes
command: |
timeout {{ rabbitmq_join_cluster_timeout }}
rabbitmqctl join_cluster "{{ rabbitmq_remote_nodename }}"
register: _rabbitmq_join_result
failed_when: >
(_rabbitmq_join_result | failed) and
(not (_rabbitmq_join_result.stdout | search("already_member"))) and
(not (_rabbitmq_join_result.stderr | search("already_member")))
# If the join cluster command fail the remote may think we are already in
# cluster. This is a different scenario from join_cluster since the node
# does not need to become a member of the cluster. The need for this
# command is motivated by the fact that clusters can change while a node
# is offline. This in effect make the node become running.
- name: rabbitmq | _join-cluster | Join the RabbitMQ update_cluster_nodes
become: yes
command: |
rabbitmqctl update_cluster_nodes "{{ rabbitmq_remote_nodename }}"
when: (_rabbitmq_join_result | failed)
- name: rabbitmq | _join-cluster | Start the RabbitMQ application
become: yes
command: |
timeout {{ rabbitmq_start_app_timeout }}
rabbitmqctl start_app
- name: rabbitmq | _join-cluster | Wait for RabbitMQ application to start
become: yes
command: |
timeout {{ rabbitmq_start_timeout }}
rabbitmqctl wait {{ rabbitmq_env.pid_file }}
changed_when: false
# Check the remote host and local host thinks we are now in cluster.
# This is done remotely as locally we would have failed update_cluster_nodes
# or join_cluster and stopped.
- name: rabbitmq | _join-cluster | Check RabbitMQ is in a cluster
become: yes
delegate_to: "{{ item.ansible_host }}"
shell: >
rabbitmqctl cluster_status 2>/dev/null |
awk '/running_nodes,\[[^]]+,/,/]},/' |
sed 's/,\([^[]\)/,\n\1/g'
register: _rabbitmq_join_status_result
changed_when: false
failed_when: >
(_rabbitmq_join_status_result | success) and
(not (_rabbitmq_join_status_result.stdout |
search(item.ardana_host)))
with_items:
- ansible_host: "{{ rabbitmq_remote_host }}"
ardana_host: "{{ rabbitmq_nodename }}"
- ansible_host: "{{ inventory_hostname }}"
ardana_host: "{{ rabbitmq_remote_nodename }}"
07070100000049000081A40000000000000000000000015FAD0DE0000008DE000000000000000000000000000000000000004A00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_reset-host.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#
# NOTE: THIS PLAY MUST NOT RUN ON SINGLETON RABBITMQ NODE UNLESS
# 'rabbitmq_reset_option' IS SET TO 'force_reset'.
---
- name: rabbitmq | _reset-host | Check RabbitMQ is running
command: systemctl status rabbitmq-server
register: _rabbitmq_reset_status_result
changed_when: false
failed_when: false
- name: rabbitmq | _reset-host | Stop the RabbitMQ application to enable reset
become: yes
command: |
timeout {{ rabbitmq_stop_app_timeout }}
rabbitmqctl stop_app
register: _rabbitmq_reset_stop_app_result
when: (_rabbitmq_reset_status_result | success)
# Return a RabbitMQ node to its virgin state
#
# if rabbitmq_reset_option=reset (the default), this removes the node from
# any cluster it belongs to, removes all data from the mnesia database, such
# as configured users and vhosts, and deletes all persistent messages.
#
# If rabbitmq_reset_option=force_reset, it totally resets the state.
#
# For this command to succeed the RabbitMQ application must have been
# stopped. If the reset fails due to the timeout the cluster is generally
# unrecoverable.
- name: rabbitmq | _reset-host | Reset the RabbitMQ node
become: yes
command: |
timeout {{ rabbitmq_reset_timeout }}
rabbitmqctl {{ rabbitmq_reset_option }}
when: (_rabbitmq_reset_stop_app_result | success)
# Remove the Erlang Mnesia DB in case the node was offline/damaged during the
# task.
- name: rabbitmq | _reset-host | Clear down Mnesia RabbitMQ message DB
become: yes
file:
path: "{{ rabbitmq_env.mnesia_base }}/{{ rabbitmq_nodename }}"
state: absent
when: (_rabbitmq_reset_status_result | failed)
0707010000004A000081A40000000000000000000000015FAD0DE000000520000000000000000000000000000000000000004900000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_stop_epmd.yml#
# (c) Copyright 2019 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# NOTE(gyee): on upgrade, if we are still using one of those old epmd
# packages, the epmd process may still be running. In that case, we need
# to do a hard kill on it.
- name: rabbitmq | _stop_epmd | Get the process ID of epmd
shell: >
pgrep -f "epmd.*-daemon"
register: pgrep_epmd_result
ignore_errors: yes
# now do a hard kill on epmd if it's still alive and kicking
- name: rabbitmq | _stop_epmd | Double tap epmd
become: yes
shell: >
kill -9 {{ pgrep_epmd_result.stdout }}
when: pgrep_epmd_result.stdout != ""
- name: rabbitmq | _stop_epmd | Wait for epmd to exit
become: yes
wait_for:
path: "/proc/{{ pgrep_epmd_result.stdout }}/status"
state: absent
when: pgrep_epmd_result.stdout != ""
0707010000004B000081A40000000000000000000000015FAD0DE000001511000000000000000000000000000000000000005500000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_wait-for-cluster-sync.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Note: This task is delegated to a remote node to determine if that node
# is in cluster.
- name: rabbitmq | _wait-for-cluster-sync | Check if RabbitMQ is in a cluster
become: yes
delegate_to: "{{ rabbitmq_remote_host }}"
shell: >
rabbitmqctl cluster_status 2>/dev/null |
awk '/running_nodes,\[[^]]+,/,/]},/' |
sed 's/,\([^[]\)/,\n\1/g'
register: _rabbitmq_in_cluster_result
failed_when: false
changed_when: false
- name: rabbitmq | _wait-for-cluster-sync | Check if RabbitMQ is in a mirror
become: yes
delegate_to: "{{ rabbitmq_remote_host }}"
shell: >
rabbitmqctl list_queues -q policy state synchronised_slave_pids 2>/dev/null |
grep '^{{ rabbitmq_ha_policy_name }}\s*running\s'
register: _rabbitmq_in_mirror_result
failed_when: false
changed_when: false
- name: rabbitmq | _wait-for-cluster-sync | Wait for HA queue sync to complete
become: yes
delegate_to: "{{ rabbitmq_remote_host }}"
shell: |
# see: https://www.rabbitmq.com/man/rabbitmqctl.1.man.html (Server Status)
# for full details on list_queues.
#
# see: https://www.rabbitmq.com/ha.html (Configuring explicit
# synchronisation)
# for how this relates to HA clustering.
#
# Precis of list queues doc:
# Returns queue details. Queue details of the / virtual host are returned
# if the "-p" flag is absent. The "-p" flag can be used to override this
# default. The queueinfoitem parameter is used to indicate which queue
# information items to include in the results. The column order in the
# results will match the order of the parameters.
#
# - policy
# Policy name applying to the queue.
#
# - state
# The state of the queue. Normally 'running', but may be
# "{syncing, MsgCount}" if the queue is synchronising. Queues which are
# located on cluster nodes that are currently down will be shown with a
# status of 'down' (and most other queueinfoitems will be unavailable)
#
# - synchronised_slave_pids
# If the queue is mirrored, this gives the IDs of the current slaves
# which are synchronised with the master - i.e. those which could take
# over from the master without message loss.
#
# - name (for debug if there is failure)
# The name of the queue with non-ASCII characters escaped as in C.
#
# The awk statement counts the number of hosts (<{{ rabbitmq_node }}@)
# that are currently synchronised to the master for any HA queues
# (rabbitmq_ha_policy_name). It will exclude any non HA/crashed queues
# that are found and will fail for any HA queues that is synchronising
# (printing its details for debug and to fail the task).
#
# Note: If timeout fails it writes to stderr.
timeout {{ rabbitmq_list_queues_timeout }} \
rabbitmqctl list_queues -q policy state synchronised_slave_pids name |
awk -F"<{{ rabbitmq_node }}@" \
'/^{{ rabbitmq_ha_policy_name }}\t/ && \
(!/\trunning\t/ || \
NF < {{ max_num_queues }}) \
{print}'
changed_when: false
register: _rabbitmq_sync_cluster_result
when: (_rabbitmq_in_cluster_result | success) and
(_rabbitmq_in_mirror_result | success) and
(_rabbitmq_in_cluster_result.stdout | search(rabbitmq_nodename)) and
(_rabbitmq_in_mirror_result.stdout | search(rabbitmq_nodename))
until: (_rabbitmq_sync_cluster_result | success) and
_rabbitmq_sync_cluster_result.stdout == "" and
_rabbitmq_sync_cluster_result.stderr == ""
retries: "{{ rabbitmq_sync_retries }}"
delay: "{{ rabbitmq_sync_delay }}"
# SOC-11083: Seeing that sometimes the retry until loop can exceed retries
# without failing, so fail here if that is the case, after printing results
- name: rabbitmq | _wait-for-cluster-sync | Print settings if failed
debug:
var: _rabbitmq_sync_cluster_result
when:
- not (_rabbitmq_sync_cluster_result | skipped)
- ((_rabbitmq_sync_cluster_result | failed) or
(_rabbitmq_sync_cluster_result.stdout != "") or
(_rabbitmq_sync_cluster_result.stderr != ""))
- name: rabbitmq | _wait-for-cluster-sync | Ensure we fail if retries exceeded
fail:
msg: >-
rabbitmq HA queue sync failed to complete after
{{ (rabbitmq_sync_retries | int) * (rabbitmq_sync_delay | int) }}
({{ rabbitmq_sync_retries }} * {{ rabbitmq_sync_delay }}) seconds.
when:
- not (_rabbitmq_sync_cluster_result | skipped)
- ((_rabbitmq_sync_cluster_result | failed) or
(_rabbitmq_sync_cluster_result.stdout != "") or
(_rabbitmq_sync_cluster_result.stderr != ""))
0707010000004C000081A40000000000000000000000015FAD0DE0000006A5000000000000000000000000000000000000005900000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/_write-rabbitmq-env-config.yml#
# (c) Copyright 2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | _write-rabbitmq-env-config | Determine ERL_SSL_PATH
become: yes
command: >
/usr/bin/erl -noinput -eval
'io:format("~s~n", [filename:dirname(code:which(inet_tls_dist))])' -s init
stop
register: erl_ssl_path_eval_result
when: rabbitmq_tls_replication | bool
- name: rabbitmq | _write-rabbitmq-env-config | Set erl_ssl_path fact
set_fact:
erl_ssl_path: "{{ erl_ssl_path_eval_result.stdout }}"
when: rabbitmq_tls_replication | bool
# TODO: We have to set the file permission to world readable for now
# as the files is own by user root and group root. Neither epmd nor
# rabbitmq user have access to that file if we set it to 0640.
# We'll definitely need to tighen up security later by not making
# it world readable. We can possibly create a new group with both
# epmd and rabbitmq user in it.
- name: rabbitmq | _write-rabbitmq-env-config | Create rabbitmq-env.conf
become: yes
template:
src: rabbitmq-env.conf.j2
dest: "{{ rabbitmq_etc_dir }}/rabbitmq-env.conf"
owner: root
group: root
mode: 0644
register: ardana_notify_rabbitmq_reset_required
0707010000004D000081A40000000000000000000000015FAD0DE00000049B000000000000000000000000000000000000004C00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/check-plugins.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# See: https://www.rabbitmq.com/man/rabbitmq-plugins.1.man.html
- name: rabbitmq | check-plugins | Check RabbitMQ plugins match configuration
become: yes
shell: rabbitmq-plugins list | awk '/\[E[* ]\]/ {print $2}' # noqa
register: ardana_notify_rabbitmq_reset_required
changed_when: >
(ardana_notify_rabbitmq_reset_required | success) and
(rabbitmq_plugins | default([], true) |
symmetric_difference(
ardana_notify_rabbitmq_reset_required.stdout_lines) |
length != 0)
0707010000004E000081A40000000000000000000000015FAD0DE0000005C1000000000000000000000000000000000000004800000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/check-tls.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Check if there are any active ssl peers connected to RabbitMQ.
- name: rabbitmq | check-tls | Check RabbitMQ TLS state
become: yes
command: rabbitmqctl status
register: ardana_notify_rabbitmq_reset_required
changed_when: >
((not (rabbitmq_tls_enabled | bool)) and
(ardana_notify_rabbitmq_reset_required.stdout | search("'amqp/ssl'"))) or
((rabbitmq_tls_enabled | bool) and
(not (ardana_notify_rabbitmq_reset_required.stdout |
search("'amqp/ssl'"))))
- name: rabbitmq | check-tls | Check RabbitMQ inter-node TLS state
become: yes
shell: >
grep 'proto_dist inet_tls' "{{ rabbitmq_etc_dir }}/rabbitmq-env.conf" ||
true
register: ardana_notify_rabbitmq_major_change
changed_when: >
rabbitmq_tls_replication | bool and
ardana_notify_rabbitmq_major_change.stdout == ""
0707010000004F000081A40000000000000000000000015FAD0DE000000EF0000000000000000000000000000000000000005200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/check-upgraded-pkgs.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | check-upgraded-pkgs | Check upgraded packages
debug:
msg: "Notify change in RabbitMQ package dependency: {{ item.package }}"
changed_when: true
when: item.upgrade != "" and
item.package in list_pkg_upgrades_base | default({})
with_items: rabbitmq_restart_packages
register: ardana_notify_rabbitmq_restart_required
- name: rabbitmq | check-upgraded-pkgs | Get current installed package version
shell: >
dpkg-query -W -f='${Version} ${status}\n' {{ item.package }} |
awk '/ok installed/{print $1}'
when: item.upgrade != "" and
ardana_notify_rabbitmq_restart_required.changed
changed_when: false
register: _rabbitmq_current_version_result
with_items: rabbitmq_restart_packages
# This task is required as the upgrade should stop if all nodes do not have
# the same version of the checked packages. This task has run_once_per RabbitMQ
# server cluster group as we only need to compare a singe node to the others
# and we do not need the cross product.
- name: rabbitmq | check-upgraded-pkgs | Check installed package are constant
fail:
msg: "Inconstant RabbitMQ package found: {{ item.key }} : {{ item.value }}"
when: (item.value | length != 1)
with_dict: >
(rabbitmq_cp_hosts.ansible_cluster |
package_consistency_check(hostvars, '_rabbitmq_current_version_result'))
run_once_per: rabbitmq_cp.group_name
- name: rabbitmq | check-upgraded-pkgs | Get current available package version
shell: >
apt-cache show {{ item.package }} |
awk '/Version/{print $2; exit}'
when: item.upgrade != "" and
ardana_notify_rabbitmq_restart_required.changed
changed_when: false
register: _rabbitmq_available_version_result
with_items: rabbitmq_restart_packages
# This task is required as the upgrade should stop if all nodes cannot see the
# same repository version of the checked packages. This task has run_once_per
# RabbitMQ cluster group as we only need to compare a singe node to the others
# and we do not need the cross product.
- name: rabbitmq | check-upgraded-pkgs | Check repository package are constant
fail:
msg: "Inconstant repository found: {{ item.key }} : {{ item.value }}"
when: (item.value | length != 1)
with_dict: >
(rabbitmq_cp_hosts.ansible_cluster |
package_consistency_check(hostvars, '_rabbitmq_available_version_result'))
run_once_per: rabbitmq_cp.group_name
- name: rabbitmq | check-upgraded-pkgs | Set upgrade strategy for RabbitMQ
debug:
msg: "Notify RabbitMQ Major upgrade required for: {{ item[0].package }}"
changed_when: true
when: item[0].upgrade != "" and
ardana_notify_rabbitmq_restart_required.changed and (
(item[0].upgrade == "major" and
item[1].stdout !=
item[2].stdout) or
(item[0].upgrade == "check" and
(item[1].stdout | regex_replace('(^(\\d+\\.){2}).*', '\\1')) !=
(item[2].stdout | regex_replace('(^(\\d+\\.){2}).*', '\\1')))
)
with_together:
- rabbitmq_restart_packages
- _rabbitmq_available_version_result.results
- _rabbitmq_current_version_result.results
register: ardana_notify_rabbitmq_major_change
07070100000050000081A40000000000000000000000015FAD0DE000001000000000000000000000000000000000000000005500000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/clear-persistant-facts.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ fact reset_required: {{ inventory_hostname }}"
changed_when: true
when: ardana_notify_rabbitmq_reset_required is defined and
ardana_notify_rabbitmq_reset_required.changed
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ fact restart_required: {{ inventory_hostname }}"
changed_when: true
when: ardana_notify_rabbitmq_restart_required is defined and
ardana_notify_rabbitmq_restart_required.changed
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ persistant stop_forced: {{ inventory_hostname }}"
changed_when: true
when: ardana_notify_rabbitmq_stop_forced is defined and
ardana_notify_rabbitmq_stop_forced.changed
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ persistant fact major_change: {{ inventory_hostname }}"
changed_when: true
when: ardana_notify_rabbitmq_major_change is defined and
ardana_notify_rabbitmq_major_change.changed
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ fact workaround_required: {{ inventory_hostname }}"
changed_when: true
when: ardana_notify_rabbitmq_workaround_required is defined and
ardana_notify_rabbitmq_workaround_required.changed
- name: rabbitmq | clear-persistant-facts | Clear RabbitMQ persistant facts
debug:
msg: "Clear RabbitMQ fact lockout_tls: {{ inventory_hostname }}"
changed_when: true
when: (rabbitmq_config_lock | bool) and
ardana_notify_rabbitmq_lockout_tls is defined and
ardana_notify_rabbitmq_lockout_tls.changed
- name: rabbitmq | clear-persistant-facts | Set RabbitMQ persistant facts False
set_fact:
ardana_notify_set_false_prefix: ardana_notify_rabbitmq
changed_when: true
register: _rabbitmq_clear_facts_prefix_result # Not a persistant facts.
when: ardana_notify_rabbitmq_lockout_tls is defined and
ardana_notify_rabbitmq_lockout_tls.skipped and
((ardana_notify_rabbitmq_reset_required is defined and
ardana_notify_rabbitmq_reset_required.changed) or
(ardana_notify_rabbitmq_restart_required is defined and
ardana_notify_rabbitmq_restart_required.changed) or
(ardana_notify_rabbitmq_stop_forced is defined and
ardana_notify_rabbitmq_stop_forced.changed) or
(ardana_notify_rabbitmq_major_change is defined and
ardana_notify_rabbitmq_major_change.changed) or
(ardana_notify_rabbitmq_workaround_required is defined and
ardana_notify_rabbitmq_workaround_required.changed))
- name: rabbitmq | clear-persistant-facts | Set RabbitMQ persistant facts False
debug:
msg: "Clear {{ ardana_notify_set_false_prefix }}:{{ inventory_hostname }}"
changed_when: true
register: ardana_notify_set_persistent_facts_to_false # This forces the reset.
when: _rabbitmq_clear_facts_prefix_result is defined and
_rabbitmq_clear_facts_prefix_result.changed
- name: rabbitmq | clear-persistant-facts | Default persistant facts prefix
set_fact:
ardana_notify_set_false_prefix: ardana_notify
changed_when: true
when: _rabbitmq_clear_facts_prefix_result is defined and
_rabbitmq_clear_facts_prefix_result.changed
07070100000051000081A40000000000000000000000015FAD0DE000000974000000000000000000000000000000000000004E00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/configure-users.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | configure-users | Find all RabbitMQ user accounts
set_fact:
_rabbitmq_user_accounts: |
[{% for component in rabbitmq_cp.credentials -%}
{% if component.vars.accounts is defined -%}
{% for account in component.vars.accounts -%}
{{ component.vars.accounts[account] | to_json }}
{%- if not loop.last -%}
,
{% endif -%}
{% endfor -%}
{% endif -%}
{%- if not loop.last -%}
,
{% endif -%}
{% endfor %}]
changed_when: true
register: _rabbitmq_configure_users_result
when: _rabbitmq_user_accounts is not defined
- name: rabbitmq | configure-users | Remove guest user if not used
become: yes
rabbitmq_user:
node: "{{ rabbitmq_nodename }}"
user: guest
state: absent
when: _rabbitmq_configure_users_result is defined and
_rabbitmq_configure_users_result.changed and
not ('guest' in (_rabbitmq_user_accounts | map(attribute='username')))
run_once_per: rabbitmq_cp.group_name
- name: rabbitmq | configure-users | Create RabbitMQ users
become: yes
no_log: true
rabbitmq_user:
node: "{{ rabbitmq_nodename }}"
user: "{{ item.username }}"
password: "{{ item.password | quote }}"
vhost: "{{ item.vhost }}"
configure_priv: "{{ item.conf_permissions }}"
read_priv: "{{ item.read_permissions }}"
write_priv: "{{ item.write_permissions }}"
tags: "{{ item.tags }}"
state: present
force: yes
run_once_per: rabbitmq_cp.group_name
when: _rabbitmq_configure_users_result is defined and
_rabbitmq_configure_users_result.changed and
item.username is defined and item.password is defined
with_items: "{{ _rabbitmq_user_accounts | unique }}"
07070100000052000081A40000000000000000000000015FAD0DE00000047C000000000000000000000000000000000000005200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/create-working-dirs.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | create-working-dirs | Create required directorys
become: yes
file:
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner | default('root') }}"
group: "{{ item.group | default('root') }}"
mode: 0755
with_items:
- path: /etc/logrotate.d
- path: "{{ rabbitmq_etc_dir }}"
- path: "{{ rabbitmq_env.pid_file | dirname }}"
owner: rabbitmq
group: rabbitmq
- include: _erlang_ssl_symlink.yml
when: ansible_os_family == 'Debian'
07070100000053000081A40000000000000000000000015FAD0DE000000AF0000000000000000000000000000000000000004600000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/install.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | install | Install RabbitMQ dependencies
become: yes
package:
name: "{{ item }}"
state: present
with_items: procps
- name: rabbitmq | install | SUSE - Install RabbitMQ application
become: yes
zypper:
name: "{{ item.package }}"
state: latest
register: _rabbitmq_install_zypper_result
with_items: rabbitmq_restart_packages
when:
item.upgrade != "" and
ansible_os_family == 'Suse'
# The epmd.socket unit is enabled by default but only listens on 127.0.0.1,
# while we need it to listen on the management network too.
- name: rabbitmq | install | Create epmd.socket.d directory
become: yes
file:
path: /etc/systemd/system/epmd.socket.d
state: directory
mode: 0755
when:
ansible_os_family == 'Suse'
- name: rabbitmq | install | SUSE - Create epmd.socket.d/port.conf
become: yes
template:
src: suse/epmd.socket-port.conf.j2
dest: /etc/systemd/system/epmd.socket.d/port.conf
mode: 0644
register: _epmd_socket_conf_result
when:
ansible_os_family == 'Suse'
- name: rabbitmq | install | SUSE - Reload systemd for epmd.socket extension
become: yes
command: systemctl daemon-reload
when:
_epmd_socket_conf_result.changed and
ansible_os_family == 'Suse'
- name: rabbitmq | install | SUSE - Store registered facts
set_fact:
_rabbitmq_install_pkg_result: "{{ _rabbitmq_install_zypper_result }}"
when: ansible_os_family == 'Suse'
# We need to create rabbitmq-env.config after the Erlang package is
# available because we need to use /usr/bin/erl command to determine the
# Erlang SSL module path.
- include: _write-rabbitmq-env-config.yml
when: _rabbitmq_install_pkg_result.changed
- name: rabbitmq | install | Restart RabbitMQ application
become: yes
service:
name: "{{ rabbitmq_service_name }}"
state: restarted
when: _rabbitmq_install_pkg_result.changed
- name: rabbitmq | install | Wait for the RabbitMQ application to start
become: yes
command: |
timeout {{ rabbitmq_start_timeout }}
rabbitmqctl wait {{ rabbitmq_env.pid_file }}
changed_when: false
when: _rabbitmq_install_pkg_result.changed
07070100000054000081A40000000000000000000000015FAD0DE000000A45000000000000000000000000000000000000004A00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/lock_config.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | lock_config | Get RabbitMQ Status
become: yes
command: rabbitmqctl status
register: _rabbitmq_status_result
changed_when: false
# Lockout low-level plays in RabbitMQ if we detect a complex change
# requiring orchestration across services.
- name: rabbitmq | lock_config | Check for unsafe RabbitMQ configuration change
fail:
msg: "Unsafe configuration change: Please run Ardana top level playbook"
when: (rabbitmq_config_lock | bool) and
(not (rabbitmq_cp.tls_enabled | bool)) and
(_rabbitmq_status_result.stdout | search("'amqp/ssl'"))
run_once: true
- name: rabbitmq | lock_config | Set-up facts prefix and clear lockout_tls
set_fact:
ardana_notify_set_false_prefix: ardana_notify_rabbitmq
changed_when: true
register: _rabbitmq_lock_config_prefix_result # Not a persistant facts.
when: ardana_notify_rabbitmq_lockout_tls is defined and
ardana_notify_rabbitmq_lockout_tls.changed
- name: rabbitmq | lock_config | Set RabbitMQ persistant facts False
debug:
msg: "Clear {{ ardana_notify_set_false_prefix }}:{{ inventory_hostname }}"
changed_when: true
register: ardana_notify_set_persistent_facts_to_false # This forces the reset.
when: _rabbitmq_lock_config_prefix_result is defined and
_rabbitmq_lock_config_prefix_result.changed
- name: rabbitmq | lock_config | Default persistant facts prefix
set_fact:
ardana_notify_set_false_prefix: ardana_notify
changed_when: true
when: _rabbitmq_lock_config_prefix_result is defined and
_rabbitmq_lock_config_prefix_result.changed
- name: rabbitmq | lock_config | Detect TLS is being disabled
debug:
msg: "Lock TLS config, services must transition: {{ inventory_hostname }}"
changed_when: true
when: (ardana_notify_rabbitmq_lockout_tls is not defined) and
(not (rabbitmq_cp.tls_enabled | bool)) and
(_rabbitmq_status_result.stdout | search("'amqp/ssl'"))
register: ardana_notify_rabbitmq_lockout_tls
07070100000055000081A40000000000000000000000015FAD0DE000000651000000000000000000000000000000000000004300000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/main.yml#
# (c) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | main | Load os-specific variables
include_vars: "{{ ansible_os_family | lower }}.yml"
- name: rabbitmq | main | Validate cluster play for RabbitMQ
fail:
msg: |
"Play is limited to one control plane: {{ rabbitmq_cp.control_planes }}"
"If 'rabbitmq_primary_hostname' is not: {{ groups[rabbitmq_cp.group_name]
| first }}"
"or 'rabbitmq_remote_hostname' is not: {{ groups[rabbitmq_cp.group_name]
[(groups[rabbitmq_cp.group_name].index(rabbitmq_primary_hostname) + 1) %
(groups[rabbitmq_cp.group_name] | length )]) }}"
when: >
((rabbitmq_primary_hostname != (groups[rabbitmq_cp.group_name] | first)) or
(rabbitmq_remote_hostname != (groups[rabbitmq_cp.group_name]
[(groups[rabbitmq_cp.group_name].index(rabbitmq_primary_hostname) + 1) %
(groups[rabbitmq_cp.group_name] | length )])) ) and
((play_hosts | cluster_consistency_check(hostvars) | length) > 1)
run_once: true
07070100000056000081A40000000000000000000000015FAD0DE000000632000000000000000000000000000000000000004C00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/pre-configure.yml#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | pre-configure | Add 'rabbitmq' group
become: yes
group:
name: rabbitmq
system: yes
- name: rabbitmq | pre-configure | Add 'rabbitmq' user
become: yes
user:
name: rabbitmq
group: rabbitmq
comment: "RabbitMQ messaging server"
shell: /bin/false
home: "{{ rabbitmq_env.home }}"
register: ardana_notify_rabbitmq_stop_forced
- name: rabbitmq | pre-configure | Create required directorys
become: yes
file:
path: "{{ item }}"
state: directory
owner: rabbitmq
group: rabbitmq
mode: 0755
with_items: "{{ rabbitmq_env.home }}"
# This alluse use to use systemctl on remote node not yet in
# cluster.
- name: rabbitmq | pre-configure | Create shared .erlang.cookie
become: yes
template:
src: erlang.cookie.j2
dest: "{{ rabbitmq_env.home }}/.erlang.cookie"
owner: rabbitmq
group: rabbitmq
mode: 0400
register: ardana_notify_rabbitmq_stop_forced
07070100000057000081A40000000000000000000000015FAD0DE000000BBA000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/remove.yml#
# (c) Copyright 2016-2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | remove | Forcfully stop RabbitMQ
become: yes
command: pkill -9 -u rabbitmq
register: _rabbitmq_remove_pkill_result
changed_when: _rabbitmq_remove_pkill_result | success
failed_when: _rabbitmq_remove_pkill_result.rc >= 2
# Stop the RabbitMQ application including Erlang.
- name: rabbitmq | remove | Notify systemd that RabbitMQ service is stopped
become: yes
service:
name: rabbitmq-server
enabled: no
state: stopped
- include: _stop_epmd.yml
- name: rabbitmq | remove | Forcfully clear down all mnesia
become: yes
file:
path: "{{ rabbitmq_env.mnesia_base }}"
state: absent
- name: rabbitmq | remove | Clean down any tls files
become: yes
file:
path: "{{ item.value }}"
state: absent
with_dict: rabbitmq_tls
- name: rabbitmq | remove | Check rabbitmq-server.postrm exits
become: yes
stat:
path: /var/lib/dpkg/info/rabbitmq-server.postrm
register: _rabbitmq_remove_stat_result
- name: rabbitmq | remove | Modify rabbitmq-server.postrm to allow mount points
become: yes
replace:
dest: /var/lib/dpkg/info/rabbitmq-server.postrm
regexp: '(\s+)rm -r (.*)\s*$'
replace: '\1rm -rf \2 || true'
when: _rabbitmq_remove_stat_result.stat.exists
- name: rabbitmq | remove | Debian - Remove the RabbitMQ packages
become: yes
apt:
name: "{{ item.package }}"
force: yes
state: absent
purge: yes
register: _purge_result
with_items: rabbitmq_restart_packages[::-1]
when:
item.upgrade != "" and
ansible_os_family == 'Debian'
# https://github.com/ansible/ansible-modules-core/issues/965
- name: rabbitmq | remove | Debian - Remove unused packages
become: yes
command: apt-get -y autoremove
register: _autoremove_result
changed_when: >
"The following packages will be REMOVED" in
_autoremove_result.stdout
when:
_purge_result.changed and
ansible_os_family == 'Debian'
tags:
- skip_ansible_lint
- name: rabbitmq | remove | SUSE - Remove the RabbitMQ packages and dependencies
become: yes
command: zypper remove --no-confirm --clean-deps {{ item.package }}
register: _rabbitmq_remove_result
failed_when: _rabbitmq_remove_result.rc != 0 and
_rabbitmq_remove_result.rc != 104
with_items: rabbitmq_restart_packages[::-1]
when:
item.upgrade != "" and
ansible_os_family == 'Suse'
07070100000058000081A40000000000000000000000015FAD0DE000000F3B000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/start.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | start | Ensure that epmd service is started
become: yes
service:
name: epmd.service
enabled: no
state: started
- name: rabbitmq | start | Ensure that RabbitMQ service is started
become: yes
service:
name: rabbitmq-server
enabled: no
state: started
register: _rabbitmq_start_result
# It is possible that RabbitMQ service was started but we are at stop_app
# so let's guarantee the RabbitMQ application is also started.
- name: rabbitmq | start | Get RabbitMQ status
become: yes
command: rabbitmqctl status
changed_when: false
register: _rabbitmq_start_status_result
when: not _rabbitmq_start_result.changed
- name: rabbitmq | start | Run start_app if RabbitMQ application is stopped
become: yes
command: |
timeout {{ rabbitmq_start_app_timeout }}
rabbitmqctl start_app
register: _rabbitmq_start_app_result
when: not _rabbitmq_start_result.changed and
not (_rabbitmq_start_status_result.stdout |
search('{rabbit,"RabbitMQ",.*},'))
# Wait for the RabbitMQ application to start.
- name: rabbitmq | start | Wait for the RabbitMQ application to start
become: yes
command: |
timeout {{ rabbitmq_start_timeout }}
rabbitmqctl wait {{ rabbitmq_env.pid_file }}
changed_when: false
when: _rabbitmq_start_result.changed or
_rabbitmq_start_app_result.changed
# Configure 'rabbitmq_primary_hostname' RabbitMQ node to be able to form and
# synchronisable a HA cluster.
- include: _configure-ha-cluster.yml
when: inventory_hostname == rabbitmq_primary_hostname
# We have to work across the cluster here as to join a host at least two must
# be online and hence this is a serialisation inside the task.
#
# The hosts are taken down using the stop play the rabbitmq_primary_hostname
# is taken down last, so during the cluster rejoin, the other hosts must join
# to the rabbitmq_primary_hostname host first.
#
# Cluster remote to primary.
- include: _cluster-check.yml
when: inventory_hostname == rabbitmq_remote_hostname and
(rabbitmq_clustered | bool)
# Cluster nodes that are not primary or remote to primary.
- include: _cluster-check.yml
when: inventory_hostname != rabbitmq_primary_hostname and
inventory_hostname != rabbitmq_remote_hostname and
(rabbitmq_clustered | bool)
# Cluster primary to remote.
- include: _cluster-check.yml
when: inventory_hostname == rabbitmq_primary_hostname and
(rabbitmq_clustered | bool)
# Enable any registered RabbitMQ plugins. This must be done after clustering to
# correctly set-up the distributed DB used by RabbitMQ. We serialize the
# install so we always get a master node up for distributed plugins.
- include: _enable-plugins.yml
when: inventory_hostname == rabbitmq_primary_hostname
- include: _enable-plugins.yml
when: inventory_hostname != rabbitmq_primary_hostname and
(rabbitmq_clustered | bool)
# We retry here as logrotate may be running.
- name: rabbitmq | start | Rotate the logs on startup
become: yes
command: logrotate -f /etc/logrotate.d/rabbitmq-server
register: _rabbitmq_start_logrotate_result
until: (_rabbitmq_start_logrotate_result | success)
retries: 5
delay: 10
when: _rabbitmq_start_result.changed
07070100000059000081A40000000000000000000000015FAD0DE00000097C000000000000000000000000000000000000004500000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/status.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
- name: rabbitmq | status | Check RabbitMQ service
debug:
msg: "Running service check on RabbitMQ"
run_once: true
- name: rabbitmq | status | Check RabbitMQ service running
command: systemctl status "{{ rabbitmq_service_name }}"
changed_when: false
failed_when: false
register: _rabbitmq_systemctl_status_result
- name: rabbitmq | status | Report status of RabbitMQ
fail:
msg: |
{{ rabbitmq_service_name }} is not running.
systemctl status {{ rabbitmq_service_name }}
{{ _rabbitmq_systemctl_status_result.stdout }}
{{ _rabbitmq_systemctl_status_result.stderr }}
when: (_rabbitmq_systemctl_status_result | failed)
- name: rabbitmq | status | Check RabbitMQ running hosts in cluster
become: yes
shell: >
rabbitmqctl cluster_status 2>/dev/null |
awk '/running_nodes,\[[^]]+,/,/]},/' |
sed 's/,\([^[]\)/,\n\1/g'
register: _rabbitmq_cluster_status_result
changed_when: false
failed_when: >
(_rabbitmq_cluster_status_result | failed) or
(_rabbitmq_cluster_status_result.stdout_lines | length) !=
(rabbitmq_cluster_size | int)
when: (rabbitmq_clustered | bool)
# Note: We always take the TLS details from CP here.
- name: rabbitmq | status | Validate RabbitMQ clients connection TLS/TCP status
become: yes
shell: >
rabbitmqctl -q list_connections ssl state ssl_protocol user name |
sort -u |
awk -F'\t'
'(($1 ~ /^{{ (not (rabbitmq_cp.tls_enabled | bool)) | lower }}$/ &&
$2 !~ /^(closing|closed)$/) ||
$3 !~ /^tlsv1.2$|^$/) &&
$4 !~ /^$/'
register: _rabbitmq_tls_status_result
changed_when: false
failed_when: >
(_rabbitmq_tls_status_result | failed) or
(_rabbitmq_tls_status_result.stdout_lines | length) > 0
when: (rabbitmq_tls_check_status | bool)
0707010000005A000081A40000000000000000000000015FAD0DE0000009C6000000000000000000000000000000000000004300000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/stop.yml#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# Wait for queues to synchronise, during synchronisation the queues will
# pause and not allow any messages to be placed in the queue that is
# synchronising.
- include: _wait-for-cluster-sync.yml
when: (rabbitmq_clustered | bool)
# This will disable/stop all running plugins. This must be performed before
# leaving a cluster (gracefully exit) as we must inform all cluster node
# of our plugin states before we exit so not to have restart issues.
#
# Note: For non-gracefully we should work as we do not do a host reset
# and hence we use the internal Rabbit HA mechanism to get back
# online.
- include: _disable-plugins.yml
# The 'when' statement below make sure that never run reset in the stop
# incorrectly in a cluster even when rabbitmq_permit_multi_stop is defined.
# This allows us to preserve at least one node with the current DB, which must
# be the last node to stop and the first node to start.
#
# NOTE: the conditions on this next step are in ADDITION to restrictions
# that the top-level playbooks impose. It is VITAL that you read
# these conditions in conjunction with the guards in those playbooks!
- include: _reset-host.yml
when: not rabbitmq_do_not_reset_node and (
(not rabbitmq_permit_multi_stop and
(rabbitmq_clustered | bool)) or
(rabbitmq_permit_multi_stop and
inventory_hostname != rabbitmq_primary_hostname) or
(rabbitmq_reset_option == "force_reset")
)
# Stop the RabbitMQ application including Erlang.
- name: rabbitmq | stop | Ensure that RabbitMQ service is stopped
become: yes
service:
name: rabbitmq-server
enabled: no
state: stopped
- name: rabbitmq | stop | Ensure that epmd service is stopped
become: yes
service:
name: epmd.service
enabled: no
state: stopped
- include: _stop_epmd.yml
0707010000005B000081A40000000000000000000000015FAD0DE00000070D000000000000000000000000000000000000004900000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/workaround.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# See if we need to workaround RabbitMQ 3.4.3-3.6.0 reset problems.
#
---
- name: rabbitmq | workaround | Get RabbitMQ installed package version
shell: >
dpkg-query -W -f='${Version} ${status}\n' {{ item.package }} |
awk '/ok installed/{print $1}'
when: item.upgrade != ""
changed_when: false
register: _rabbitmq_workaround_version_result
with_items: rabbitmq_restart_packages
- name: rabbitmq | workaround | Check current installed package are constant
fail:
msg: "Inconstant RabbitMQ package found: {{ item.key }} : {{ item.value }}"
when: (item.value | length != 1)
with_dict: >
(rabbitmq_cp_hosts.ansible_cluster |
package_consistency_check(hostvars, '_rabbitmq_workaround_version_result'))
run_once_per: rabbitmq_cp.group_name
- name: rabbitmq | workaround | Set RabbitMQ workaround
debug:
msg: "Notify RabbitMQ workaround required: {{ item.item.package }}"
changed_when: true
when: item.skipped is not defined and
(item.stdout |
version_compare_smart(item.item.workround, '<'))
with_items: _rabbitmq_workaround_version_result.results
register: ardana_notify_rabbitmq_workaround_required
0707010000005C000081A40000000000000000000000015FAD0DE00000077F000000000000000000000000000000000000005200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/write-configuration.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# see: http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
- name: rabbitmq | write-configuration | Create rabbitmq-server.conf
become: yes
template:
src: rabbitmq-server.conf.j2
dest: "/usr/lib/tmpfiles.d/rabbitmq-server.conf"
owner: root
group: root
mode: 0644
register: ardana_notify_rabbitmq_reset_required
- name: rabbitmq | write-configuration | Create rabbitmq.config
become: yes
template:
src: rabbitmq.config.j2
dest: "{{ rabbitmq_etc_dir }}/rabbitmq.config"
owner: root
group: root
mode: 0644
register: ardana_notify_rabbitmq_reset_required
- name: rabbitmq | write-configuration | Check logrotate rabbitmq-server file
stat:
path: /etc/logrotate.d/rabbitmq-server
register: _rabbitmq_configure_logrotate_result
# Package RabbitMQ install will install logrotate by default as a dependent
- name: rabbitmq | write-configuration | Create logrotate rabbitmq-server file
become: yes
template:
src: rabbitmq-server.logrotate.j2
dest: /etc/logrotate.d/rabbitmq-server
owner: root
group: root
mode: 0644
when: (not _rabbitmq_configure_logrotate_result.stat.exists) or
(('LOG_PRO' in verb_hosts) and
(inventory_hostname not in groups[verb_hosts.LOG_PRO]))
0707010000005D000081A40000000000000000000000015FAD0DE00000113B000000000000000000000000000000000000004E00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/tasks/write-tls-files.yml#
# (c) Copyright 2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
---
# If we are told to regenerate all certs remove existing reqs.
# User is forcing a change so lets force a major change.
- name: rabbitmq | write-tls-files | Remove RabbitMQ cert requests
become: yes
file:
path: "{{ rabbitmq_tls.req_file }}"
state: absent
register: _rabbitmq_remove_cert_result
when: (rabbitmq_tls_certs_force_regeneration | bool)
# We only need a major upgrade set if replication is using TLS.
- name: rabbitmq | write-tls-files | Set major upgrade as we removed cert
debug:
msg: "Remove RabbitMQ cert requested forceing major upgrade"
changed_when: true
when: _rabbitmq_remove_cert_result.changed and
(rabbitmq_tls_replication | bool)
register: ardana_notify_rabbitmq_major_change
# Are any certificates on disk?
- name: rabbitmq | write-tls-files | Check cert file exists
become: yes
stat:
path: "{{ rabbitmq_tls.pem_file }}"
register: _rabbitmq_tls_pem_file_result
# Are there any invalid certs? If yes, we need new certs.
- name: rabbitmq | write-tls-files | Check cert validity
become: yes
command: openssl verify {{ rabbitmq_tls.pem_file }}
when: _rabbitmq_tls_pem_file_result.stat.exists
register: _rabbitmq_cert_validity_checks_result
failed_when: "'error' in _rabbitmq_cert_validity_checks_result.stderr"
changed_when: false
# Delete the cert requests whose certs are invalid.
- name: rabbitmq | write-tls-files | Remove invalid cert requests
become: yes
file:
path: "{{ rabbitmq_tls.req_file }}"
state: absent
register: _rabbitmq_invalid_cert_result
when: _rabbitmq_tls_pem_file_result.stat.exists and
(_rabbitmq_cert_validity_checks_result | failed)
# We only need a major upgrade set if replication is using TLS.
- name: rabbitmq | write-tls-files | Set major upgrade as we removed cert
debug:
msg: "Invalid RabbitMQ cert forceing major upgrade"
changed_when: true
when: _rabbitmq_invalid_cert_result.changed and
(rabbitmq_tls_replication | bool)
register: ardana_notify_rabbitmq_major_change
# Are there any certs about to expire? The openssl -checkend option
# will return 1 if cert is about to expire. So we use it as a filter
# in the next step to replace the expiring certs.
- name: rabbitmq | write-tls-files | Check cert expiry
become: yes
command: >
openssl x509 -in {{ rabbitmq_tls.pem_file }} -checkend
{{ rabbitmq_tls_expiry_check }}
register: _rabbitmq_cert_expiry_checks_result
when: _rabbitmq_tls_pem_file_result.stat.exists
failed_when: false
changed_when: false
# Delete the cert requests whose certs are about to expire. And then
# run a minor change
- name: rabbitmq | write-tls-files | Remove expiring cert requests
become: yes
file:
path: "{{ rabbitmq_tls.req_file }}"
state: absent
when: _rabbitmq_tls_pem_file_result.stat.exists and
(_rabbitmq_cert_expiry_checks_result | failed)
register: ardana_notify_rabbitmq_reset_required
# Copy cert requests. A successful copy indicates that the
# corresponding cert needs to be copied too.
- name: rabbitmq | write-tls-files | Copy RabbitMQ cert requests
become: yes
copy:
src: "{{ rabbitmq_tls_certs_local_dir }}/{{ rabbitmq_cp.tls_filename }}.req"
dest: "{{ rabbitmq_tls.req_file }}"
owner: rabbitmq
group: rabbitmq
mode: 0400
register: _rabbitmq_cert_request_update_result
# If we are updating the pem file then we can run minor change.
- name: rabbitmq | write-tls-files | Copy RabbitMQ certs
become: yes
copy:
src: "{{ rabbitmq_tls_certs_local_dir }}/{{ rabbitmq_cp.tls_filename }}"
dest: "{{ rabbitmq_tls.pem_file }}"
owner: rabbitmq
group: rabbitmq
mode: 0400
when: _rabbitmq_cert_request_update_result.changed
register: ardana_notify_rabbitmq_reset_required
0707010000005E000041ED0000000000000000000000035FAD0DE000000000000000000000000000000000000000000000003E00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates0707010000005F000081A40000000000000000000000015FAD0DE0000002A5000000000000000000000000000000000000004F00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/erlang.cookie.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
{{ rabbitmq_cp.erlang_cookie }}
07070100000060000081A40000000000000000000000015FAD0DE0000002DD000000000000000000000000000000000000005300000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/rabbitmq-env.conf.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
{% for key,value in rabbitmq_env|dictsort %}
{{ key | upper }}={{ value }}
{% endfor %}
07070100000061000081A40000000000000000000000015FAD0DE0000002C4000000000000000000000000000000000000005600000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/rabbitmq-server.conf.j2{#
#
# (c) Copyright 2015 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
d {{ rabbitmq_env.pid_file | dirname }} 0755 rabbitmq rabbitmq
07070100000062000081A40000000000000000000000015FAD0DE000000362000000000000000000000000000000000000005B00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/rabbitmq-server.logrotate.j2{#
#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
{{ rabbitmq_env.log_base }}/*.log
{
daily
compress
delaycompress
missingok
notifempty
maxsize 45M
rotate 7
sharedscripts
postrotate
/usr/sbin/rabbitmqctl rotate_logs > /dev/null
endscript
}
07070100000063000081A40000000000000000000000015FAD0DE0000009E1000000000000000000000000000000000000005100000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/rabbitmq.config.j2{#
#
# (c) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
[
{kernel, [
{inet_dist_listen_min, {{ rabbitmq_cp.inet_dist_listen_port }}},
{inet_dist_listen_max, {{ rabbitmq_cp.inet_dist_listen_port }}},
{inet_default_listen_options, [
{nodelay,true},
{sndbuf,65535},
{recbuf,65535},
{keepalive, true}
]},
{inet_default_connect_options, [
{nodelay,true},
{keepalive, true}
]}
]},
{% if (rabbitmq_tls_enabled | bool) %}
{ssl, [{versions, ['tlsv1.2']}]},
{% endif %}
{rabbit, [
{tcp_listeners, [
{% for addr in rabbitmq_cp.tcp_bind_addresses %}
{"{{ addr.ip }}", {{ addr.port }}}{% if not loop.last %},{% endif %}
{% endfor %}
]},
{% if (rabbitmq_tls_enabled | bool) %}
{ssl_listeners, [
{% for addr in rabbitmq_cp.tls_bind_addresses %}
{"{{ addr.ip }}", {{ addr.port }}}{% if not loop.last %},{% endif %}
{% endfor %}
]},
{ssl_options, [
{keyfile, "{{ rabbitmq_tls.pem_file }}"},
{certfile, "{{ rabbitmq_tls.pem_file }}"},
{versions, ['tlsv1.2']},
{verify, verify_none},
{fail_if_no_peer_cert, false}
]},
{% endif %}
{% if (rabbitmq_clustered | bool) %}
{cluster_partition_handling, {{ rabbitmq_config.cluster_partition_handling }}},
{queue_master_locator, <<"min-masters">>},
{% endif %}
{disk_free_limit, {{ rabbitmq_config.disk_free_limit }}},
{loopback_users, []},
{vm_memory_high_watermark, {{ rabbitmq_config.vm_memory_high_watermark }}},
{hipe_compile, {{ rabbitmq_config.hipe_compile | lower }}}
]}{% if ("rabbitmq_management" in (rabbitmq_plugins | default([], true))) %},
{rabbitmq_management, [
{listener, [
{port, {{ rabbitmq_cp.management_address.port }}},
{ip, "{{ rabbitmq_cp.management_address.ip }}"},
{ssl, {{ rabbitmq_tls_enabled | lower }}}
]},
{rates_mode, {{ rabbitmq_config.rates_mode }}}
]}
{% endif %}
].
07070100000064000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000004300000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/suse07070100000065000081A40000000000000000000000015FAD0DE000000297000000000000000000000000000000000000005C00000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/templates/suse/epmd.socket-port.conf.j2{#
#
# (c) Copyright 2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#}
[Socket]
ListenStream={{ rabbitmq_cp.management_address.ip }}:4369
FreeBind=true
07070100000066000041ED0000000000000000000000025FAD0DE000000000000000000000000000000000000000000000003900000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/vars07070100000067000081A40000000000000000000000015FAD0DE00000044A000000000000000000000000000000000000004400000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/vars/debian.yml
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# List of packages we register a restart.
rabbitmq_restart_packages:
- upgrade: major
workround: "1:18.3.1-dfsg-1+hpelinux1"
package: erlang-base
- upgrade: "{%- if rabbitmq_config.hipe_compile -%}
major
{%- endif -%}"
workround: "1:18.3.1-dfsg-1+hpelinux1"
package: erlang-base-hipe
- upgrade: major
workround: "1:18.3.1-dfsg-1+hpelinux1"
package: erlang-nox
- upgrade: check
workround: 3.6.1
package: rabbitmq-server
07070100000068000081A40000000000000000000000015FAD0DE0000003E2000000000000000000000000000000000000004200000000ardana-mq-8.0+git.1605176800.52cccfa/roles/rabbitmq/vars/suse.yml
# (c) Copyright 2017 Hewlett Packard Enterprise Development LP
# (c) Copyright 2017-2018 SUSE LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Placeholder for Erlang SSL module path. Expect to be overwritten
# by the tasks when setting up SSL for distribution.
erl_ssl_path:
# List of packages we register a restart.
rabbitmq_restart_packages:
- upgrade: check
workround: 0.0.0
package: rabbitmq-server
- upgrade: check
workround: 0.0.0
package: rabbitmq-server-plugins
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!377 blocks