* Set the environment variable:
@@ -68,7 +68,7 @@ You may obtain a copy of the License at
## Ansible modules execution
-The Ansible server must be configured with Python library for PowerFlex to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/) provide information on different Ansible modules along with their functions and syntax. The parameters table in the Product Guide provides information on various parameters which needs to be configured before running the modules.
+The Ansible server must be configured with Python library for PowerFlex to run the Ansible playbooks. The [Documents](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/) provide information on different Ansible modules along with their functions and syntax. The parameters table in the Product Guide provides information on various parameters which needs to be configured before running the modules.
## SSL certificate validation
diff --git a/docs/ISSUE_TRIAGE.md b/docs/ISSUE_TRIAGE.md
index 931e093..ba61369 100644
--- a/docs/ISSUE_TRIAGE.md
+++ b/docs/ISSUE_TRIAGE.md
@@ -43,7 +43,7 @@ Should explain what happened, what was expected and how to reproduce it together
- Ansible Version: [e.g. 2.14]
- Python Version [e.g. 3.11]
- - Ansible modules for Dell PowerFlex Version: [e.g. 2.0.1]
+ - Ansible modules for Dell PowerFlex Version: [e.g. 2.1.0]
- PowerFlex SDK version: [e.g. PyPowerFlex 1.8.0]
- Any other additional information...
diff --git a/docs/MAINTAINER_GUIDE.md b/docs/MAINTAINER_GUIDE.md
index 4b49b63..c70844c 100644
--- a/docs/MAINTAINER_GUIDE.md
+++ b/docs/MAINTAINER_GUIDE.md
@@ -27,7 +27,7 @@ If a candidate is approved, a Maintainer contacts the candidate to invite them t
## Maintainer policies
* Lead by example
-* Follow the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.0.1/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerflex/blob/2.0.1/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerflex/blob/2.0.1/COMMITTER_GUIDE.md) guides
+* Follow the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.1.0/CODE_OF_CONDUCT.md) and the guidelines in the [Contributing](https://github.com/dell/ansible-powerflex/blob/2.1.0/CONTRIBUTING.md) and [Committer](https://github.com/dell/ansible-powerflex/blob/2.1.0/COMMITTER_GUIDE.md) guides
* Promote a friendly and collaborative environment within our community
* Be actively engaged in discussions, answering questions, updating defects, and reviewing pull requests
* Criticize code, not people. Ideally, tell the contributor a better way to do what they need.
diff --git a/docs/Release Notes.md b/docs/Release Notes.md
index 233bfaa..4293b1b 100644
--- a/docs/Release Notes.md
+++ b/docs/Release Notes.md
@@ -1,6 +1,6 @@
**Ansible Modules for Dell Technologies PowerFlex**
=========================================
-### Release notes 2.0.1
+### Release notes 2.1.0
> © 2023 Dell Inc. or its subsidiaries. All rights reserved. Dell
> and other trademarks are trademarks of Dell Inc. or its
@@ -28,7 +28,7 @@ Table 1. Revision history
| Revision | Date | Description |
|----------|-----------------|-------------------------------------------------------------|
-| 01 | October 2023 | Current release of Ansible Modules for Dell PowerFlex 2.0.1 |
+| 01 | November 2023 | Current release of Ansible Modules for Dell PowerFlex 2.1.0 |
Product description
-------------------
@@ -44,11 +44,7 @@ each of the entities.
New features and enhancements
-----------------------------
Along with the previous release deliverables, this release supports following features -
-- Added support for PowerFlex Denver version(4.5.x)
-- Added support for SDC installation on ESXi, Rocky Linux and Windows OS.
-- Added Ansible role to support installation and uninstallation of Active MQ.
-- Added Ansible role to support creation and deletion of protection domain,
- storage pool and fault set.
+- Added support for PowerFlex Denver version(4.5.x) to TB and Config role.
Known issues
------------
@@ -62,11 +58,11 @@ Limitations
Distribution
------------
The software package is available for download from the [Ansible Modules
-for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.0.1) page.
+for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.1.0) page.
Documentation
-------------
-The documentation is available on [Ansible Modules for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.0.1/docs)
+The documentation is available on [Ansible Modules for PowerFlex GitHub](https://github.com/dell/ansible-powerflex/tree/2.1.0/docs)
page. It includes the following:
- README
diff --git a/docs/SECURITY.md b/docs/SECURITY.md
index 4b5044b..f9ba8b2 100644
--- a/docs/SECURITY.md
+++ b/docs/SECURITY.md
@@ -12,7 +12,7 @@ You may obtain a copy of the License at
The Ansible modules for Dell PowerFlex repository are inspected for security vulnerabilities via blackduck scans and static code analysis.
-In addition to this, there are various security checks that get executed against a branch when a pull request is created/updated. Please refer to [pull request](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/CONTRIBUTING.md#Pull-requests) for more information.
+In addition to this, there are various security checks that get executed against a branch when a pull request is created/updated. Please refer to [pull request](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/CONTRIBUTING.md#Pull-requests) for more information.
## Reporting a vulnerability
diff --git a/docs/modules/device.rst b/docs/modules/device.rst
index efeb2c2..a96953f 100644
--- a/docs/modules/device.rst
+++ b/docs/modules/device.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -256,23 +256,23 @@ Examples
state: "present"
- name: Remove a device using device_id
dellemc.powerflex.device:
- hostname: "{{hostname}}"
- username: "{{username}}"
- password: "{{password}}"
- validate_certs: "{{validate_certs}}"
- port: "{{port}}"
- device_id: "76eb7e2f00010000"
- state: "absent"
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ device_id: "76eb7e2f00010000"
+ state: "absent"
- name: Remove a device using (current_pathname, sds_id)
dellemc.powerflex.device:
- hostname: "{{hostname}}"
- username: "{{username}}"
- password: "{{password}}"
- validate_certs: "{{validate_certs}}"
- port: "{{port}}"
- current_pathname: "/dev/sdb"
- sds_name: "node1"
- state: "absent"
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
+ current_pathname: "/dev/sdb"
+ sds_name: "node1"
+ state: "absent"
diff --git a/docs/modules/info.rst b/docs/modules/info.rst
index bb8068a..3e0a5ad 100644
--- a/docs/modules/info.rst
+++ b/docs/modules/info.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/docs/modules/mdm_cluster.rst b/docs/modules/mdm_cluster.rst
index 1c64568..64e2fa9 100644
--- a/docs/modules/mdm_cluster.rst
+++ b/docs/modules/mdm_cluster.rst
@@ -23,7 +23,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -300,7 +300,7 @@ Examples
port: "{{port}}"
mdm_name: "mdm_1"
virtual_ip_interface:
- - "ens224"
+ - "ens224"
state: "present"
- name: Clear virtual IP interface of the MDM
diff --git a/docs/modules/protection_domain.rst b/docs/modules/protection_domain.rst
index a61c334..3d2cf34 100644
--- a/docs/modules/protection_domain.rst
+++ b/docs/modules/protection_domain.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/docs/modules/replication_consistency_group.rst b/docs/modules/replication_consistency_group.rst
index ea4814b..e5d1a3c 100644
--- a/docs/modules/replication_consistency_group.rst
+++ b/docs/modules/replication_consistency_group.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/docs/modules/replication_pair.rst b/docs/modules/replication_pair.rst
index 3f26d7f..b0e0b37 100644
--- a/docs/modules/replication_pair.rst
+++ b/docs/modules/replication_pair.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -186,7 +186,6 @@ Examples
.. code-block:: yaml+jinja
-
- name: Get replication pair details
dellemc.powerflex.replication_pair:
hostname: "{{hostname}}"
@@ -224,11 +223,11 @@ Examples
copy_type: "OnlineCopy"
name: "pair1"
remote_peer:
- hostname: "{{hostname}}"
- username: "{{username}}"
- password: "{{password}}"
- validate_certs: "{{validate_certs}}"
- port: "{{port}}"
+ hostname: "{{hostname}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ validate_certs: "{{validate_certs}}"
+ port: "{{port}}"
- name: Pause replication pair
dellemc.powerflex.replication_pair:
diff --git a/docs/modules/sdc.rst b/docs/modules/sdc.rst
index 8684b1d..5ab468e 100644
--- a/docs/modules/sdc.rst
+++ b/docs/modules/sdc.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/docs/modules/sds.rst b/docs/modules/sds.rst
index 93c7d53..1c9f56c 100644
--- a/docs/modules/sds.rst
+++ b/docs/modules/sds.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/docs/modules/snapshot.rst b/docs/modules/snapshot.rst
index c895125..b043eb7 100644
--- a/docs/modules/snapshot.rst
+++ b/docs/modules/snapshot.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -227,8 +227,8 @@ Examples
validate_certs: "{{validate_certs}}"
snapshot_id: "fe6cb28200000007"
sdc:
- - sdc_ip: "198.10.xxx.xxx"
- - sdc_id: "663ac0d200000001"
+ - sdc_ip: "198.10.xxx.xxx"
+ - sdc_id: "663ac0d200000001"
allow_multiple_mappings: true
sdc_state: "mapped"
state: "present"
@@ -241,12 +241,12 @@ Examples
validate_certs: "{{validate_certs}}"
snapshot_id: "fe6cb28200000007"
sdc:
- - sdc_ip: "198.10.xxx.xxx"
- iops_limit: 11
- bandwidth_limit: 4096
- - sdc_id: "663ac0d200000001"
- iops_limit: 20
- bandwidth_limit: 2048
+ - sdc_ip: "198.10.xxx.xxx"
+ iops_limit: 11
+ bandwidth_limit: 4096
+ - sdc_id: "663ac0d200000001"
+ iops_limit: 20
+ bandwidth_limit: 2048
allow_multiple_mappings: true
sdc_state: "mapped"
state: "present"
diff --git a/docs/modules/snapshot_policy.rst b/docs/modules/snapshot_policy.rst
index 47c757f..de24f5a 100644
--- a/docs/modules/snapshot_policy.rst
+++ b/docs/modules/snapshot_policy.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -177,7 +177,7 @@ Examples
validate_certs: "{{validate_certs}}"
snapshot_policy_name: "snapshot_policy_name_1"
access_mode: "READ_WRITE"
- secure_snapshots: False
+ secure_snapshots: false
auto_snapshot_creation_cadence:
time: 1
unit: "Hour"
@@ -248,7 +248,7 @@ Examples
state: "absent"
- id: "source_volume_id_2"
auto_snap_removal_action: 'Remove'
- detach_locked_auto_snapshots: True
+ detach_locked_auto_snapshots: true
state: "absent"
- name: Pause a snapshot policy
@@ -258,7 +258,7 @@ Examples
password: "{{password}}"
validate_certs: "{{validate_certs}}"
snapshot_policy_name: "{{snapshot_policy_name}}"
- pause: True
+ pause: true
- name: Resume a snapshot policy
dellemc.powerflex.snapshot_policy:
@@ -267,7 +267,7 @@ Examples
password: "{{password}}"
validate_certs: "{{validate_certs}}"
snapshot_policy_name: "{{snapshot_policy_name}}"
- pause: False
+ pause: false
- name: Delete a snapshot policy
dellemc.powerflex.snapshot_policy:
@@ -280,7 +280,6 @@ Examples
-
Return Values
-------------
diff --git a/docs/modules/storagepool.rst b/docs/modules/storagepool.rst
index 9c4e2b0..0e9e2e4 100644
--- a/docs/modules/storagepool.rst
+++ b/docs/modules/storagepool.rst
@@ -21,7 +21,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
@@ -134,7 +134,6 @@ Examples
.. code-block:: yaml+jinja
-
- name: Get the details of storage pool by name
dellemc.powerflex.storagepool:
hostname: "{{hostname}}"
diff --git a/docs/modules/volume.rst b/docs/modules/volume.rst
index ed4a060..f84e00b 100644
--- a/docs/modules/volume.rst
+++ b/docs/modules/volume.rst
@@ -23,7 +23,7 @@ Requirements
The below requirements are needed on the host that executes this module.
- A Dell PowerFlex storage system version 3.5 or later.
-- Ansible-core 2.13 or later.
+- Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
diff --git a/galaxy.yml b/galaxy.yml
index 8443b71..4f111b8 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -14,7 +14,7 @@ name: powerflex
# The version of the collection.
# Must be compatible with semantic versioning
-version: 2.0.1
+version: 2.1.0
# The path to the Markdown (.md) readme file.
# This path is relative to the root of the collection.
@@ -60,13 +60,13 @@ tags: [storage]
dependencies: {}
# The URL of the originating SCM repository
-repository: https://github.com/dell/ansible-powerflex/tree/2.0.1
+repository: https://github.com/dell/ansible-powerflex/tree/2.1.0
# The URL to any online docs
-documentation: https://github.com/dell/ansible-powerflex/tree/2.0.1/docs
+documentation: https://github.com/dell/ansible-powerflex/tree/2.1.0/docs
# The URL to the homepage of the collection/project
-homepage: https://github.com/dell/ansible-powerflex/tree/2.0.1
+homepage: https://github.com/dell/ansible-powerflex/tree/2.1.0
# The URL to the collection issue tracker
issues: https://www.dell.com/community/Automation/bd-p/Automation
diff --git a/meta/runtime.yml b/meta/runtime.yml
index 968f5c3..6fa701d 100644
--- a/meta/runtime.yml
+++ b/meta/runtime.yml
@@ -1,5 +1,5 @@
---
-requires_ansible: ">=2.13"
+requires_ansible: ">=2.14.0"
plugin_routing:
modules:
dellemc_powerflex_gatherfacts:
diff --git a/playbooks/roles/group_vars/all b/playbooks/roles/group_vars/all
index 98ad1de..1031958 100644
--- a/playbooks/roles/group_vars/all
+++ b/playbooks/roles/group_vars/all
@@ -26,6 +26,7 @@ powerflex_lia_state: present
powerflex_lia_token: Cluster1!
# powerflex tb params
powerflex_tb_state: present
+powerflex_tb_cert_password: "{{ powerflex_mdm_cert_password }}"
# powerflex sds params
powerflex_sds_number: 1
powerflex_sds_disks: { ansible_available_disks: ['/dev/sdb'] }
diff --git a/playbooks/roles/host_vars/node2 b/playbooks/roles/host_vars/node2
index bdf5c96..20a36d6 100644
--- a/playbooks/roles/host_vars/node2
+++ b/playbooks/roles/host_vars/node2
@@ -5,7 +5,7 @@ powerflex_sdc_performance_profile: Compact
powerflex_tb_primary_name: primary_tb
powerflex_tb_secondary_name: secondary_tb
powerflex_tb_cluster_mode: "ThreeNodes"
-powerflex_protection_domain_name: "tb_protection_domain"
+powerflex_protection_domain_name: "domain1"
powerflex_fault_sets: ['fs1','fs2','fs3']
powerflex_media_type: 'SSD' # When version is R3
-powerflex_storage_pool_name: "tb_storage_pool"
+powerflex_storage_pool_name: "pool1"
diff --git a/playbooks/roles/inventory b/playbooks/roles/inventory
index 9a15c26..24fc6f2 100644
--- a/playbooks/roles/inventory
+++ b/playbooks/roles/inventory
@@ -21,6 +21,9 @@ node2
[tb]
node2
+[config]
+node1
+
[sdc]
node2
diff --git a/playbooks/roles/uninstall_powerflex45.yml b/playbooks/roles/uninstall_powerflex45.yml
index 4478973..2d36b5b 100644
--- a/playbooks/roles/uninstall_powerflex45.yml
+++ b/playbooks/roles/uninstall_powerflex45.yml
@@ -39,6 +39,8 @@
hosts: mdm
roles:
- powerflex_mdm
+ vars_files:
+ - vars_files/connection.yml
vars:
powerflex_mdm_state: absent
diff --git a/plugins/doc_fragments/powerflex.py b/plugins/doc_fragments/powerflex.py
index 5e7f28c..12fc9d9 100644
--- a/plugins/doc_fragments/powerflex.py
+++ b/plugins/doc_fragments/powerflex.py
@@ -52,7 +52,7 @@ class ModuleDocFragment(object):
default: 120
requirements:
- A Dell PowerFlex storage system version 3.5 or later.
- - Ansible-core 2.13 or later.
+ - Ansible-core 2.14 or later.
- PyPowerFlex 1.8.0.
- Python 3.9, 3.10 or 3.11.
notes:
diff --git a/plugins/module_utils/storage/dell/utils.py b/plugins/module_utils/storage/dell/utils.py
index 8b889bc..293a023 100644
--- a/plugins/module_utils/storage/dell/utils.py
+++ b/plugins/module_utils/storage/dell/utils.py
@@ -80,10 +80,10 @@ def ensure_required_libs(module):
exception=PKG_RSRC_IMP_ERR)
if not HAS_POWERFLEX_SDK:
- module.fail_json(msg=missing_required_lib("PyPowerFlex V 1.6.0 or above"),
+ module.fail_json(msg=missing_required_lib("PyPowerFlex V 1.8.0 or above"),
exception=POWERFLEX_SDK_IMP_ERR)
- min_ver = '1.6.0'
+ min_ver = '1.8.0'
try:
curr_version = pkg_resources.require("PyPowerFlex")[0].version
supported_version = (parse_version(curr_version) >= parse_version(min_ver))
diff --git a/plugins/modules/replication_pair.py b/plugins/modules/replication_pair.py
index dfe2296..060bd1b 100644
--- a/plugins/modules/replication_pair.py
+++ b/plugins/modules/replication_pair.py
@@ -138,7 +138,6 @@
'''
EXAMPLES = r'''
-
- name: Get replication pair details
dellemc.powerflex.replication_pair:
hostname: "{{hostname}}"
diff --git a/plugins/modules/storagepool.py b/plugins/modules/storagepool.py
index 8715c6f..9c8bb1d 100644
--- a/plugins/modules/storagepool.py
+++ b/plugins/modules/storagepool.py
@@ -88,7 +88,6 @@
'''
EXAMPLES = r'''
-
- name: Get the details of storage pool by name
dellemc.powerflex.storagepool:
hostname: "{{hostname}}"
diff --git a/roles/powerflex_activemq/meta/main.yml b/roles/powerflex_activemq/meta/main.yml
index 4d9fa61..7d16f05 100644
--- a/roles/powerflex_activemq/meta/main.yml
+++ b/roles/powerflex_activemq/meta/main.yml
@@ -3,10 +3,12 @@ galaxy_info:
author: Pavan Mudunuri
description: Role to manage the installation and uninstallation of Powerflex ActiveMQ.
company: Dell Technologies
+ role_name: powerflex_activemq
+ namespace: dellemc
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
diff --git a/roles/powerflex_common/meta/main.yml b/roles/powerflex_common/meta/main.yml
index 12d1b36..bbe74f9 100644
--- a/roles/powerflex_common/meta/main.yml
+++ b/roles/powerflex_common/meta/main.yml
@@ -3,6 +3,8 @@ galaxy_info:
author: Jennifer John
description: The role helps to manage the common functions of PowerFlex.
company: Dell Technologies
+ role_name: powerflex_common
+ namespace: dellemc
# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
@@ -16,7 +18,7 @@ galaxy_info:
# - CC-BY-4.0
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_config/defaults/main.yml b/roles/powerflex_config/defaults/main.yml
index ce6cdaa..0cb687e 100644
--- a/roles/powerflex_config/defaults/main.yml
+++ b/roles/powerflex_config/defaults/main.yml
@@ -1,6 +1,6 @@
---
# defaults file for powerflex_config
-powerflex_protection_domain_name: "config_protection_domain"
+powerflex_protection_domain_name: "domain1"
powerflex_fault_sets: ['fs1', 'fs2', 'fs3']
powerflex_media_type: 'SSD' # When version is R3
-powerflex_storage_pool_name: "tb_storage_pool"
+powerflex_storage_pool_name: "pool1"
diff --git a/roles/powerflex_config/meta/main.yml b/roles/powerflex_config/meta/main.yml
index 50b700c..9924409 100644
--- a/roles/powerflex_config/meta/main.yml
+++ b/roles/powerflex_config/meta/main.yml
@@ -4,8 +4,10 @@ galaxy_info:
description: Role to configure the protection domain, fault set and storage pool.
company: Dell Technologies
license: GPL-3.0-only
+ role_name: powerflex_config
+ namespace: dellemc
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_config/tasks/main.yml b/roles/powerflex_config/tasks/main.yml
index f04b4fa..f9340f0 100644
--- a/roles/powerflex_config/tasks/main.yml
+++ b/roles/powerflex_config/tasks/main.yml
@@ -1,15 +1,34 @@
---
+- name: Get configured MDM IP addresses
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{ hostname }}"
+ username: "{{ username }}"
+ password: "{{ password }}"
+ validate_certs: "{{ validate_certs }}"
+ state: "present"
+ register: powerflex_config_mdm_ip_result
+ delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
-- name: Set fact - PowerFlex config MDM primary hostname.
+- name: Set fact - PowerFlex version and MDM primary hostname
ansible.builtin.set_fact:
+ powerflex_config_array_version: "{{ powerflex_config_mdm_ip_result.mdm_cluster_details.master.versionInfo[1] }}"
powerflex_config_mdm_primary_hostname: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
-- name: Login to primary MDM.
+- name: Login to primary MDM of PowerFlex 3.6
ansible.builtin.command: scli --login --username {{ username }} --password "{{ password }}"
run_once: true
register: powerflex_config_login_output
changed_when: powerflex_config_login_output.rc == 0
delegate_to: "{{ powerflex_config_mdm_primary_hostname }}"
+ when: powerflex_config_array_version == '3'
+
+- name: Login to primary MDM of PowerFlex 4.5
+ ansible.builtin.command: scli --login --username {{ username }} --management_system_ip {{ hostname }} --password "{{ password }}"
+ run_once: true
+ register: powerflex_config_login_output
+ changed_when: powerflex_config_login_output.rc == 0
+ delegate_to: "{{ powerflex_config_mdm_primary_hostname }}"
+ when: powerflex_config_array_version == '4'
- name: Create the protection domain
dellemc.powerflex.protection_domain:
diff --git a/roles/powerflex_gateway/meta/main.yml b/roles/powerflex_gateway/meta/main.yml
index 923a52a..11db01e 100644
--- a/roles/powerflex_gateway/meta/main.yml
+++ b/roles/powerflex_gateway/meta/main.yml
@@ -6,7 +6,7 @@ galaxy_info:
description: Role to manage the installation and uninstallation of Powerflex gateway
company: Dell Technologies
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml b/roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml
index 4ee1a0a..258173d 100644
--- a/roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml
+++ b/roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml
@@ -10,6 +10,7 @@
powerflex_common_file_install_location: "/opt/empty"
powerflex_gateway_state: present
ignore_errors: true
+ register: powerflex_gateway_install_config_no_rpm_result
- name: Verifying failure of install package with respect to no rpm file
ansible.builtin.assert:
@@ -23,6 +24,7 @@
powerflex_common_file_install_location: "/opt/aaab"
powerflex_gateway_state: present
ignore_errors: true
+ register: powerflex_gateway_install_config_wrong_path_result
- name: Verifying failure of install package with wrong file path
ansible.builtin.assert:
diff --git a/roles/powerflex_lia/meta/main.yml b/roles/powerflex_lia/meta/main.yml
index 1b24bd3..ea089a4 100644
--- a/roles/powerflex_lia/meta/main.yml
+++ b/roles/powerflex_lia/meta/main.yml
@@ -3,10 +3,12 @@ galaxy_info:
author: Pavan Mudunuri
description: Role to manage the installation and uninstallation of Powerflex LIA.
company: Dell Technologies
+ role_name: powerflex_lia
+ namespace: dellemc
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
diff --git a/roles/powerflex_mdm/meta/main.yml b/roles/powerflex_mdm/meta/main.yml
index 57fb3ed..889114f 100644
--- a/roles/powerflex_mdm/meta/main.yml
+++ b/roles/powerflex_mdm/meta/main.yml
@@ -3,10 +3,12 @@ galaxy_info:
author: Bhavneet Sharma
description: Role to manage the installation and uninstallation of Powerflex MDM.
company: Dell Technologies
+ role_name: powerflex_mdm
+ namespace: dellemc
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
diff --git a/roles/powerflex_mdm/tasks/remove_mdm.yml b/roles/powerflex_mdm/tasks/remove_mdm.yml
index 35c8f57..5c200c5 100644
--- a/roles/powerflex_mdm/tasks/remove_mdm.yml
+++ b/roles/powerflex_mdm/tasks/remove_mdm.yml
@@ -13,7 +13,7 @@
version: "{{ powerflex_mdm_package_file_version.files[0].path | regex_search('mdm-(\\d+)', '\\1') }}"
when: powerflex_mdm_package_file_version.files | length > 0
-- name: MDM Cluster login
+- name: MDM Cluster login below PowerFlex 4.x
ansible.builtin.command: >
scli --login --mdm_ip {{ powerflex_mdm_primary_ip }}
--username admin --password {{ powerflex_mdm_password }} --approve_certificate
@@ -24,10 +24,10 @@
delegate_to: "{{ powerflex_mdm_primary_hostname }}"
when: version[0] < "4"
-- name: Login to primary MDM node
+- name: Login to primary MDM node for PowerFlex 4.x
register: powerflex_mdm_primary_login
ansible.builtin.command: >
- scli --login --p12_path /opt/emc/scaleio/mdm/cfg/cli_certificate.p12 --p12_password {{ powerflex_mdm_cert_password }}
+ scli --login --username {{ username }} --management_system_ip {{ hostname }} --password "{{ password }}"
delegate_to: "{{ powerflex_mdm_primary_hostname }}"
run_once: true
ignore_errors: true
diff --git a/roles/powerflex_sdc/meta/main.yml b/roles/powerflex_sdc/meta/main.yml
index 18b5e22..2535678 100644
--- a/roles/powerflex_sdc/meta/main.yml
+++ b/roles/powerflex_sdc/meta/main.yml
@@ -3,10 +3,12 @@ galaxy_info:
author: Jennifer John
description: The role helps to manage the installation of SDC.
company: Dell Technologies
+ role_name: powerflex_sdc
+ namespace: dellemc
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_sdr/defaults/main.yml b/roles/powerflex_sdr/defaults/main.yml
index 0d97510..efae8a8 100644
--- a/roles/powerflex_sdr/defaults/main.yml
+++ b/roles/powerflex_sdr/defaults/main.yml
@@ -5,5 +5,5 @@ file_gpg_name: RPM-GPG-KEY-ScaleIO
powerflex_common_file_install_location: "/var/tmp"
powerflex_sdr_repl_journal_capacity_max_ratio: 10
powerflex_role_environment:
- MDM_IP: "{{ powerflex_mdm_primary_ip }}"
+ MDM_IP: "{{ powerflex_sdr_mdm_primary_ip }}"
powerflex_sdr_state: present
diff --git a/roles/powerflex_sdr/meta/main.yml b/roles/powerflex_sdr/meta/main.yml
index 2b3d54a..e028096 100644
--- a/roles/powerflex_sdr/meta/main.yml
+++ b/roles/powerflex_sdr/meta/main.yml
@@ -6,7 +6,7 @@ galaxy_info:
description: The role to manage installation and uninstallation PowerFlex SDR.
company: Dell Technologies
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml b/roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml
index cb7e8d8..bc5b5d3 100644
--- a/roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml
+++ b/roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml
@@ -26,6 +26,7 @@
powerflex_common_file_install_location: "/opt/aaab"
powerflex_sdr_state: present
ignore_errors: true
+ register: powerflex_sdr_wrong_path_result
- name: Verifying failure of install package with wrong file path
ansible.builtin.assert:
diff --git a/roles/powerflex_sdr/tasks/add_sdr.yml b/roles/powerflex_sdr/tasks/add_sdr.yml
index ecd816a..1af3452 100644
--- a/roles/powerflex_sdr/tasks/add_sdr.yml
+++ b/roles/powerflex_sdr/tasks/add_sdr.yml
@@ -28,13 +28,13 @@
- name: Login to mdm for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --login --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --login --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--username admin
--password "{{ powerflex_mdm_password }}"
--approve_certificate
run_once: true
register: powerflex_initial_login
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_initial_login.rc == 0
no_log: true
when: powerflex_sdr_array_version == "3"
@@ -43,11 +43,11 @@
ansible.builtin.command: >
scli --login --management_system_ip {{ hostname }}
--username admin
- --password "{{ powerflex_mdm_password }}"
+ --password "{{ password }}"
--approve_certificate
run_once: true
register: powerflex_initial_login
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_initial_login.rc == 0
no_log: true
when: powerflex_sdr_array_version != "3"
@@ -64,42 +64,41 @@
--replication_journal_capacity_max_ratio {{ powerflex_sdr_repl_journal_capacity_max_ratio }}
run_once: true
register: powerflex_set_replication_capacity
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_set_replication_capacity.rc == 0
- name: Wait for replication capacity to be created
ansible.builtin.pause:
seconds: 60
run_once: true
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
- name: Get replication capacity
ansible.builtin.command: >
scli --query_all_replication_journal_capacity
--protection_domain_name {{ powerflex_protection_domain_name }}
run_once: true
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
register: powerflex_get_replication_capacity
changed_when: powerflex_get_replication_capacity.rc == 0
- name: Checking if SDR already exists or not for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--query_sdr
--sdr_name "{{ powerflex_sdr_hostname }}"
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
register: check_sdr_exists
changed_when: check_sdr_exists.rc == 0
failed_when: false
when: powerflex_sdr_array_version == "3"
-
- name: Checking if SDR already exists or not for PowerFlex version 4.x
ansible.builtin.command: >
scli --management_system_ip {{ hostname }}
--query_sdr
--sdr_name "{{ powerflex_sdr_hostname }}"
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
register: check_sdr_exists
changed_when: check_sdr_exists.rc == 0
failed_when: false
@@ -109,17 +108,17 @@
ansible.builtin.debug:
msg: "SDR name {{ powerflex_sdr_hostname }} already exists, will skip adding SDR."
when: check_sdr_exists.rc == 0
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
- name: Adding SDR for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --add_sdr --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --add_sdr --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--sdr_ip_role all
--sdr_ip {{ powerflex_sdr_ip }}
--sdr_name "{{ powerflex_sdr_hostname }}"
--protection_domain_name {{ powerflex_protection_domain_name }}
register: powerflex_add_sdr_output
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_add_sdr_output.rc == 0
when: check_sdr_exists.rc == 7 and powerflex_sdr_array_version == "3"
@@ -131,12 +130,13 @@
--sdr_name "{{ powerflex_sdr_hostname }}"
--protection_domain_name {{ powerflex_protection_domain_name }}
register: powerflex_add_sdr_output
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_add_sdr_output.rc == 0
when: check_sdr_exists.rc == 7 and powerflex_sdr_array_version != "3"
- name: Logging out of the mdm
ansible.builtin.command: scli --logout
register: powerflex_mdm_logout
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_mdm_logout.rc == 0
+ run_once: true
diff --git a/roles/powerflex_sdr/tasks/remove_sdr.yml b/roles/powerflex_sdr/tasks/remove_sdr.yml
index 4d3c241..3bf33b6 100644
--- a/roles/powerflex_sdr/tasks/remove_sdr.yml
+++ b/roles/powerflex_sdr/tasks/remove_sdr.yml
@@ -18,13 +18,13 @@
- name: Login to mdm for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --login --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --login --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--username admin
--password "{{ powerflex_mdm_password }}"
--approve_certificate
run_once: true
register: powerflex_initial_login
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_initial_login.rc == 0
no_log: true
when: powerflex_sdr_array_version == "3"
@@ -33,11 +33,11 @@
ansible.builtin.command: >
scli --login --management_system_ip {{ hostname }}
--username admin
- --password "{{ powerflex_mdm_password }}"
+ --password "{{ password }}"
--approve_certificate
run_once: true
register: powerflex_initial_login
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_initial_login.rc == 0
no_log: true
when: powerflex_sdr_array_version != "3"
@@ -45,14 +45,14 @@
- name: Output msg of previous task login to mdm
ansible.builtin.debug:
var: powerflex_initial_login.stdout
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
- name: Checking if SDR already exists or not for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--query_sdr
--sdr_name "{{ powerflex_sdr_hostname }}"
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
register: check_sdr_exists
failed_when: false
changed_when: check_sdr_exists.rc == 0
@@ -63,7 +63,7 @@
scli --management_system_ip {{ hostname }}
--query_sdr
--sdr_name "{{ powerflex_sdr_hostname }}"
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
register: check_sdr_exists
failed_when: false
changed_when: check_sdr_exists.rc == 0
@@ -73,14 +73,14 @@
ansible.builtin.debug:
msg: "SDR name {{ powerflex_sdr_hostname }} does not exist, will skip removing SDR."
when: check_sdr_exists.rc == 7
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
- name: Removing SDR for PowerFlex version below 4.x
ansible.builtin.command: >
- scli --remove_sdr --mdm_ip {{ powerflex_mdm_primary_ip }}
+ scli --remove_sdr --mdm_ip {{ powerflex_sdr_mdm_primary_ip }}
--sdr_name "{{ powerflex_sdr_hostname }}"
register: powerflex_remove_sdr_output
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_remove_sdr_output.rc == 0
when: check_sdr_exists.rc == 0 and powerflex_sdr_array_version == "3"
@@ -89,7 +89,7 @@
scli --remove_sdr --management_system_ip {{ hostname }}
--sdr_name "{{ powerflex_sdr_hostname }}"
register: powerflex_remove_sdr_output
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_remove_sdr_output.rc == 0
when: check_sdr_exists.rc == 0 and powerflex_sdr_array_version != "3"
@@ -115,5 +115,6 @@
- name: Logging out of the mdm
ansible.builtin.command: scli --logout
register: powerflex_mdm_logout
- delegate_to: "{{ powerflex_mdm_primary_hostname }}"
+ run_once: true
+ delegate_to: "{{ powerflex_sdr_mdm_primary_hostname }}"
changed_when: powerflex_mdm_logout.rc == 0
diff --git a/roles/powerflex_sdr/tasks/sdr_set_facts.yml b/roles/powerflex_sdr/tasks/sdr_set_facts.yml
index 757c2c1..086b8b5 100644
--- a/roles/powerflex_sdr/tasks/sdr_set_facts.yml
+++ b/roles/powerflex_sdr/tasks/sdr_set_facts.yml
@@ -1,7 +1,7 @@
---
- name: Set facts for powerflex primary ip and hostname for mdm and sdr
ansible.builtin.set_fact:
- powerflex_mdm_primary_ip: "{{ hostvars[groups['mdm'][0]]['ansible_host'] }}"
- powerflex_mdm_primary_hostname: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
+ powerflex_sdr_mdm_primary_ip: "{{ hostvars[groups['mdm'][0]]['ansible_host'] }}"
+ powerflex_sdr_mdm_primary_hostname: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
powerflex_sdr_ip: "{{ hostvars[inventory_hostname]['ansible_host'] }}"
powerflex_sdr_hostname: "{{ inventory_hostname }}"
diff --git a/roles/powerflex_sds/meta/main.yml b/roles/powerflex_sds/meta/main.yml
index b879089..999d95e 100644
--- a/roles/powerflex_sds/meta/main.yml
+++ b/roles/powerflex_sds/meta/main.yml
@@ -4,8 +4,10 @@ galaxy_info:
description: The role helps to manage the installation of SDS.
company: Dell Technologies
license: GPL-3.0-only
+ role_name: powerflex_sds
+ namespace: dellemc
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_sds/tasks/install_sds.yml b/roles/powerflex_sds/tasks/install_sds.yml
index bcaa76c..8887ff1 100644
--- a/roles/powerflex_sds/tasks/install_sds.yml
+++ b/roles/powerflex_sds/tasks/install_sds.yml
@@ -16,6 +16,7 @@
- name: Set fact - powerflex_sds_mdm_ips
ansible.builtin.set_fact:
powerflex_sds_mdm_ips: "{{ powerflex_sds_mdm_ip_result.mdm_cluster_details.mdmAddresses | join(',') }}"
+ powerflex_sds_primary_mdm_hostname: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
- name: Include install_powerflex.yml
ansible.builtin.include_tasks: ../../powerflex_common/tasks/install_powerflex.yml
@@ -39,7 +40,7 @@
run_once: true
register: powerflex_sds_login_output
changed_when: powerflex_sds_login_output.rc == 0
- delegate_to: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
+ delegate_to: "{{ powerflex_sds_primary_mdm_hostname }}"
when: powerflex_sds_array_version != "3"
- name: Login to MDM for PowerFlex version below 4.x
@@ -47,7 +48,7 @@
run_once: true
register: powerflex_sds_login_output
changed_when: powerflex_sds_login_output.rc == 0
- delegate_to: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
+ delegate_to: "{{ powerflex_sds_primary_mdm_hostname }}"
when: powerflex_sds_array_version == "3"
- name: Create SDS
@@ -75,7 +76,7 @@
--protection_domain_name {{ powerflex_sds_protection_domain }} --fault_set_name {{ powerflex_sds_fault_set }}
register: add_sds
changed_when: ('already in use' in add_sds.stderr) or (add_sds.rc == 0)
- delegate_to: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
+ delegate_to: "{{ powerflex_sds_primary_mdm_hostname }}"
ignore_errors: true
when: powerflex_sds_fault_set is defined and powerflex_sds_array_version != "3"
@@ -87,7 +88,7 @@
--protection_domain_name {{ powerflex_sds_protection_domain }} --fault_set_name {{ powerflex_sds_fault_set }}
register: add_sds
changed_when: ('already in use' in add_sds.stderr) or (add_sds.rc == 0)
- delegate_to: "{{ hostvars[groups['mdm'][0]]['inventory_hostname'] }}"
+ delegate_to: "{{ powerflex_sds_primary_mdm_hostname }}"
ignore_errors: true
when: powerflex_sds_fault_set is defined and powerflex_sds_array_version == "3"
diff --git a/roles/powerflex_tb/README.md b/roles/powerflex_tb/README.md
index c1df43b..dec61fe 100644
--- a/roles/powerflex_tb/README.md
+++ b/roles/powerflex_tb/README.md
@@ -91,7 +91,7 @@ dellemc.powerflex
powerflex_common_file_install_location |
- true |
+ false |
Location of installation and rpm gpg files to be installed.
The required, compatible installation software package based on the operating system of the node.
The files can be downloaded from the Dell Product support page for PowerFlex software. |
@@ -109,7 +109,7 @@ dellemc.powerflex
powerflex_tb_primary_name |
- true |
+ false |
Name of the primary TB.
|
|
str |
@@ -125,12 +125,20 @@ dellemc.powerflex
powerflex_tb_cluster_mode |
- true |
+ false |
Mode of the cluster.
|
ThreeNodes, FiveNodes |
str |
ThreeNodes |
+
+ powerflex_tb_cert_password |
+ false |
+ The CLI certificate password for login to the primary MDM.
|
+ |
+ str |
+ |
+
@@ -168,7 +176,8 @@ dellemc.powerflex
## Notes
----
-- As a pre-requisite, the Gateway must be installed.
+- As a pre-requisite for PowerFlex 3.6, the Gateway must be installed.
+- For PowerFlex 4.x, after installing the TB perform initial configuration steps on PowerFlex Manager GUI. These steps can be found in Install and Update of Dell PowerFlex 4.x from Dell Support page.
## Usage instructions
----
@@ -197,5 +206,5 @@ Sample playbooks and inventory can be found in the playbooks directory.
## Author Information
------------------
-Dell Technologies
+Dell Technologies
Ananthu S Kuttattu (ansible.team@Dell.com) 2023
diff --git a/roles/powerflex_tb/meta/argument_specs.yml b/roles/powerflex_tb/meta/argument_specs.yml
new file mode 100644
index 0000000..ac5a3e3
--- /dev/null
+++ b/roles/powerflex_tb/meta/argument_specs.yml
@@ -0,0 +1,65 @@
+---
+argument_specs:
+ main:
+ short_description: Role to manage the installation and uninstallation of Powerflex TB.
+ description:
+ - Role to manage the installation and uninstallation of Powerflex TB.
+ options:
+ hostname:
+ required: true
+ type: str
+ description: IP or FQDN of the PowerFlex gateway.
+ username:
+ required: true
+ type: str
+ description: The username of the PowerFlex gateway.
+ password:
+ required: true
+ type: str
+ description: The password of the PowerFlex gateway.
+ port:
+ type: int
+ description: Port of the PowerFlex gateway.
+ default: 443
+ validate_certs:
+ description:
+ - If C(false), the SSL certificates will not be validated.
+ - Configure C(false) only on personally controlled sites where self-signed certificates are used.
+ type: bool
+ default: false
+ timeout:
+ description: Timeout.
+ type: int
+ default: 120
+ powerflex_common_file_install_location:
+ description:
+ - Location of installation and rpm gpg files to be installed.
+ - The required, compatible installation software package based on the operating system of the node.
+ type: str
+ default: /var/tmp
+ powerflex_tb_state:
+ description:
+ - Specify state of TB.
+ type: str
+ choices: ['absent', 'present']
+ default: present
+ powerflex_tb_primary_name:
+ description:
+ - Name of the primary TB.
+ type: str
+ default: 'primary_tb'
+ powerflex_tb_secondary_name:
+ description:
+ - Name of the secondary TB.
+ type: str
+ default: 'secondary_tb'
+ powerflex_tb_cluster_mode:
+ description:
+ - Mode of the cluster.
+ choices: ['ThreeNodes', 'FiveNodes']
+ type: str
+ default: 'ThreeNodes'
+ powerflex_tb_cert_password:
+ description:
+ - The CLI certificate password for login to the primary MDM.
+ type: str
diff --git a/roles/powerflex_tb/meta/main.yml b/roles/powerflex_tb/meta/main.yml
index f3493dd..c3179cd 100644
--- a/roles/powerflex_tb/meta/main.yml
+++ b/roles/powerflex_tb/meta/main.yml
@@ -4,8 +4,10 @@ galaxy_info:
description: Role to manage the installation and uninstallation of Powerflex TB.
company: Dell Technologies
license: GPL-3.0-only
+ role_name: powerflex_tb
+ namespace: dellemc
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
versions:
diff --git a/roles/powerflex_tb/tasks/install_tb.yml b/roles/powerflex_tb/tasks/install_tb.yml
index 8bec6fb..504b3e9 100644
--- a/roles/powerflex_tb/tasks/install_tb.yml
+++ b/roles/powerflex_tb/tasks/install_tb.yml
@@ -1,91 +1,8 @@
---
-- name: Get configured MDM IP addresses
- dellemc.powerflex.mdm_cluster:
- hostname: "{{ hostname }}"
- username: "{{ username }}"
- password: "{{ password }}"
- validate_certs: "{{ validate_certs }}"
- state: "present"
- register: powerflex_tb_mdm_ip_result
- delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
+- name: Install TB for PowerFlex below 4.x
+ ansible.builtin.include_tasks: install_tb3x.yml
+ when: powerflex_tb_scli_version[0] == '3'
-- name: Set fact - powerflex_mdm_ips
- ansible.builtin.set_fact:
- powerflex_tb_mdm_ips: "{{ powerflex_tb_mdm_ip_result.mdm_cluster_details.mdmAddresses | join(',') }}"
-
-- name: Include install_powerflex.yml
- ansible.builtin.include_tasks: ../../powerflex_common/tasks/install_powerflex.yml
-
-- name: Include set_tb_ips.yml
- ansible.builtin.include_tasks: set_tb_ips.yml
-
-- name: Get ScaleIO version
- ansible.builtin.shell: set -o pipefail && scli --version | sed 's/ (Debug)//g' | sed 's/.* //g' | sed 's/\_.*//g'
- register: powerflex_tb_scaleio_version
- tags: register
- changed_when: powerflex_tb_scaleio_version.rc == 0
- delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
-
-- name: Login with password
- ansible.builtin.command: scli --login --username {{ username }} --password "{{ password }}"
- run_once: true
- register: powerflex_tb_login_output
- changed_when: powerflex_tb_login_output.rc == 0
- delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
-
-- name: Add primary TB
- dellemc.powerflex.mdm_cluster:
- hostname: "{{ hostname }}"
- username: "{{ username }}"
- password: "{{ password }}"
- validate_certs: "{{ validate_certs }}"
- port: "{{ port }}"
- mdm_name: "{{ powerflex_tb_primary_name }}"
- standby_mdm:
- mdm_ips:
- - "{{ powerflex_tb_primary_ip }}"
- role: "TieBreaker"
- management_ips:
- - "{{ powerflex_tb_primary_ip }}"
- state: "present"
- register: powerflex_tb_primary_output
- delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
-
-- name: Add secondary TB
- dellemc.powerflex.mdm_cluster:
- hostname: "{{ hostname }}"
- username: "{{ username }}"
- password: "{{ password }}"
- validate_certs: "{{ validate_certs }}"
- port: "{{ port }}"
- mdm_name: "{{ powerflex_tb_secondary_name }}"
- standby_mdm:
- mdm_ips:
- - "{{ powerflex_tb_secondary_ip }}"
- role: "TieBreaker"
- management_ips:
- - "{{ powerflex_tb_secondary_ip }}"
- state: "present"
- register: powerflex_tb_secondary_output
- delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
- when: powerflex_tb_secondary_ip is defined
-
-- name: Switch to cluster three node
- ansible.builtin.command: |
- scli --switch_cluster_mode --cluster_mode "3_node" --add_slave_mdm_ip
- "{{ powerflex_tb_mdm_secondary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}"
- run_once: true
- register: powerflex_tb_cluster_to_three_output
- changed_when: powerflex_tb_cluster_to_three_output.rc == 0
- delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
- when: powerflex_tb_primary_output.mdm_cluster_details.clusterMode != "ThreeNodes" and powerflex_tb_cluster_mode == "ThreeNodes"
-
-- name: Switch to cluster five node
- ansible.builtin.command: |
- scli --switch_cluster_mode --cluster_mode "5_node" --add_slave_mdm_ip
- "{{ powerflex_tb_mdm_secondary_ip }}","{{ powerflex_tb_mdm_tertiary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}","{{ powerflex_tb_secondary_ip }}"
- run_once: true
- register: powerflex_tb_cluster_to_five_output
- changed_when: powerflex_tb_cluster_to_five_output.rc == 0
- delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
- when: powerflex_tb_primary_output.mdm_cluster_details.clusterMode != "FiveNodes" and powerflex_tb_cluster_mode == "FiveNodes"
+- name: Install TB for PowerFlex 4.x
+ ansible.builtin.include_tasks: install_tb4x.yml
+ when: powerflex_tb_scli_version[0] >= '4'
diff --git a/roles/powerflex_tb/tasks/install_tb3x.yml b/roles/powerflex_tb/tasks/install_tb3x.yml
new file mode 100644
index 0000000..e602351
--- /dev/null
+++ b/roles/powerflex_tb/tasks/install_tb3x.yml
@@ -0,0 +1,81 @@
+---
+- name: Get configured MDM IP addresses
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{ hostname }}"
+ username: "{{ username }}"
+ password: "{{ password }}"
+ validate_certs: "{{ validate_certs }}"
+ state: "present"
+ register: powerflex_tb_mdm_ip_result
+ delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
+
+- name: Set fact - powerflex_mdm_ips
+ ansible.builtin.set_fact:
+ powerflex_tb_mdm_ips: "{{ powerflex_tb_mdm_ip_result.mdm_cluster_details.mdmAddresses | join(',') }}"
+
+- name: Include install_powerflex.yml
+ ansible.builtin.include_tasks: ../../powerflex_common/tasks/install_powerflex.yml
+
+- name: Login with password
+ ansible.builtin.command: scli --login --username {{ username }} --password "{{ password }}"
+ run_once: true
+ register: powerflex_tb_login_output
+ changed_when: powerflex_tb_login_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+
+- name: Add primary TB
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{ hostname }}"
+ username: "{{ username }}"
+ password: "{{ password }}"
+ validate_certs: "{{ validate_certs }}"
+ port: "{{ port }}"
+ mdm_name: "{{ powerflex_tb_primary_name }}"
+ standby_mdm:
+ mdm_ips:
+ - "{{ powerflex_tb_primary_ip }}"
+ role: "TieBreaker"
+ management_ips:
+ - "{{ powerflex_tb_primary_ip }}"
+ state: "present"
+ register: powerflex_tb_primary_output
+ delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
+
+- name: Add secondary TB
+ dellemc.powerflex.mdm_cluster:
+ hostname: "{{ hostname }}"
+ username: "{{ username }}"
+ password: "{{ password }}"
+ validate_certs: "{{ validate_certs }}"
+ port: "{{ port }}"
+ mdm_name: "{{ powerflex_tb_secondary_name }}"
+ standby_mdm:
+ mdm_ips:
+ - "{{ powerflex_tb_secondary_ip }}"
+ role: "TieBreaker"
+ management_ips:
+ - "{{ powerflex_tb_secondary_ip }}"
+ state: "present"
+ register: powerflex_tb_secondary_output
+ delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
+ when: powerflex_tb_secondary_ip is defined
+
+- name: Switch to cluster three node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "3_node" --add_slave_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_to_three_output
+ changed_when: powerflex_tb_cluster_to_three_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_primary_output.mdm_cluster_details.clusterMode != "ThreeNodes" and powerflex_tb_cluster_mode == "ThreeNodes"
+
+- name: Switch to cluster five node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "5_node" --add_slave_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}","{{ powerflex_tb_mdm_tertiary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}","{{ powerflex_tb_secondary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_to_five_output
+ changed_when: powerflex_tb_cluster_to_five_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_primary_output.mdm_cluster_details.clusterMode != "FiveNodes" and powerflex_tb_cluster_mode == "FiveNodes"
diff --git a/roles/powerflex_tb/tasks/install_tb4x.yml b/roles/powerflex_tb/tasks/install_tb4x.yml
new file mode 100644
index 0000000..d34857b
--- /dev/null
+++ b/roles/powerflex_tb/tasks/install_tb4x.yml
@@ -0,0 +1,69 @@
+---
+- name: Set fact - powerflex_mdm_ips
+ ansible.builtin.set_fact:
+ powerflex_tb_mdm_ips: "{{ powerflex_tb_mdm_primary_ip }},{{ powerflex_tb_mdm_secondary_ip }}"
+ when: powerflex_tb_mdm_count | int == 2
+
+- name: Set fact - powerflex_mdm_ips
+ ansible.builtin.set_fact:
+ powerflex_tb_mdm_ips: "{{ powerflex_tb_mdm_primary_ip }},{{ powerflex_tb_mdm_secondary_ip }},{{ powerflex_tb_mdm_tertiary_ip }}"
+ when: powerflex_tb_mdm_count | int > 2
+
+- name: Include install_powerflex.yml
+ ansible.builtin.include_tasks: ../../powerflex_common/tasks/install_powerflex.yml
+
+- name: Login to primary MDM node
+ ansible.builtin.command: >
+ scli --login --p12_path /opt/emc/scaleio/mdm/cfg/cli_certificate.p12 --p12_password {{ powerflex_tb_cert_password }}
+ run_once: true
+ register: powerflex_tb_login_output
+ changed_when: powerflex_tb_login_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+
+- name: Add primary TB
+ ansible.builtin.command: >
+ scli --add_standby_mdm
+ --new_mdm_ip {{ powerflex_tb_primary_ip }}
+ --mdm_role tb
+ --new_mdm_name {{ powerflex_tb_primary_name }}
+ --new_mdm_management_ip {{ powerflex_tb_primary_ip }}
+ run_once: true
+ register: powerflex_tb_primary_output
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_primary_ip is defined
+ ignore_errors: true
+ changed_when: powerflex_tb_primary_output.rc == 0
+
+- name: Add secondary TB
+ ansible.builtin.command: >
+ scli --add_standby_mdm
+ --new_mdm_ip {{ powerflex_tb_secondary_ip }}
+ --mdm_role tb
+ --new_mdm_name {{ powerflex_tb_secondary_name }}
+ --new_mdm_management_ip {{ powerflex_tb_secondary_ip }}
+ register: powerflex_tb_secondary_output
+ run_once: true
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_secondary_ip is defined
+ ignore_errors: true
+ changed_when: powerflex_tb_secondary_output.rc == 0
+
+- name: Switch to cluster three node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "3_node" --add_secondary_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_to_three_output
+ changed_when: powerflex_tb_cluster_to_three_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_mdm_cluster_mode[0] != "3_node" and powerflex_tb_cluster_mode == "ThreeNodes"
+
+- name: Switch to cluster five node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "5_node" --add_secondary_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}","{{ powerflex_tb_mdm_tertiary_ip }}" --add_tb_ip "{{ powerflex_tb_primary_ip }}","{{ powerflex_tb_secondary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_to_five_output
+ changed_when: powerflex_tb_cluster_to_five_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_mdm_cluster_mode[0] != "5_node" and powerflex_tb_cluster_mode == "FiveNodes"
diff --git a/roles/powerflex_tb/tasks/main.yml b/roles/powerflex_tb/tasks/main.yml
index 0bc33e6..f98c09f 100644
--- a/roles/powerflex_tb/tasks/main.yml
+++ b/roles/powerflex_tb/tasks/main.yml
@@ -1,4 +1,27 @@
---
+- name: Include set_tb_ips.yml
+ ansible.builtin.include_tasks: set_tb_ips.yml
+
+- name: Get SCli version
+ ansible.builtin.command: >
+ scli --query_cluster
+ register: powerflex_tb_scli_cluster_details
+ tags: register
+ changed_when: powerflex_tb_scli_cluster_details.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+
+- name: Extract the scli version
+ ansible.builtin.set_fact:
+ powerflex_tb_scli_version: "{{ input_query | ansible.builtin.regex_search('Version: (\\d+)\\.(\\d+)', '\\1\\2') }}"
+ vars:
+ input_query: "{{ powerflex_tb_scli_cluster_details.stdout }}"
+
+- name: Extract the cluster mode
+ ansible.builtin.set_fact:
+ powerflex_tb_mdm_cluster_mode: "{{ input_query | ansible.builtin.regex_search('Mode: (\\w+)', '\\1') }}"
+ vars:
+ input_query: "{{ powerflex_tb_scli_cluster_details.stdout }}"
+
- name: Install TB
ansible.builtin.include_tasks: install_tb.yml
when: powerflex_tb_state == 'present'
diff --git a/roles/powerflex_tb/tasks/uninstall_tb.yml b/roles/powerflex_tb/tasks/uninstall_tb.yml
index a29be59..b08bffe 100644
--- a/roles/powerflex_tb/tasks/uninstall_tb.yml
+++ b/roles/powerflex_tb/tasks/uninstall_tb.yml
@@ -1,25 +1,14 @@
---
-- name: Include set_tb_ips.yml
- ansible.builtin.include_tasks: set_tb_ips.yml
-
-- name: Get configured MDM IP addresses
- dellemc.powerflex.mdm_cluster:
- hostname: "{{ hostname }}"
- username: "{{ username }}"
- password: "{{ password }}"
- validate_certs: "{{ validate_certs }}"
- state: "present"
- register: powerflex_tb_mdm_result
- delegate_to: "{{ lookup('ansible.builtin.env', 'RUNON', default='localhost') }}"
-
-- name: Login with new password
+# Switch from three or five to cluster one node for PowerFlex version 3.6
+- name: Login to primary MDM node of PowerFlex version 3.x
ansible.builtin.command: scli --login --username {{ username }} --password "{{ password }}"
run_once: true
register: powerflex_tb_login_output
changed_when: powerflex_tb_login_output.rc == 0
delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_scli_version[0] == '3'
-- name: Switch from three to cluster one node
+- name: Switch cluster mode from three nodes to one node
ansible.builtin.command: |
scli --switch_cluster_mode --cluster_mode "1_node" --remove_slave_mdm_ip
"{{ powerflex_tb_mdm_secondary_ip }}" --remove_tb_ip "{{ powerflex_tb_primary_ip }}"
@@ -27,9 +16,9 @@
register: powerflex_tb_cluster_to_one_output
changed_when: powerflex_tb_cluster_to_one_output.rc == 0
delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
- when: powerflex_tb_mdm_result.mdm_cluster_details.clusterMode == "ThreeNodes"
+ when: powerflex_tb_mdm_cluster_mode[0] == "3_node" and powerflex_tb_scli_version[0] == '3'
-- name: Switch from five to cluster one node
+- name: Switch cluster mode from five nodes to one node
ansible.builtin.command: |
scli --switch_cluster_mode --cluster_mode "1_node" --remove_slave_mdm_ip
"{{ powerflex_tb_mdm_secondary_ip }}","{{ powerflex_tb_mdm_tertiary_ip }}" --remove_tb_ip "{{ powerflex_tb_primary_ip }}","{{ powerflex_tb_secondary_ip }}"
@@ -37,8 +26,39 @@
register: powerflex_tb_cluster_to_one_output
changed_when: powerflex_tb_cluster_to_one_output.rc == 0
delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
- when: powerflex_tb_mdm_result.mdm_cluster_details.clusterMode == "FiveNodes"
+ when: powerflex_tb_mdm_cluster_mode[0] == "5_node" and powerflex_tb_scli_version[0] == '3'
+
+# Switch from three or five to cluster one node for PowerFlex version 4.5
+- name: Login to primary MDM node of PowerFlex version 4.5
+ ansible.builtin.command: >
+ scli --login --management_system_ip {{ hostname }} --username {{ username }} --password {{ password }}
+ run_once: true
+ register: powerflex_tb_login_output
+ changed_when: powerflex_tb_login_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_scli_version[0] >= '4'
+
+- name: Switch cluster mode from three nodes to one node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "1_node" --remove_secondary_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}" --remove_tb_ip "{{ powerflex_tb_primary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_three_to_one_output
+ changed_when: powerflex_tb_cluster_three_to_one_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_mdm_cluster_mode[0] == "3_node" and powerflex_tb_scli_version[0] >= '4'
+
+- name: Switch cluster mode from five nodes to one node
+ ansible.builtin.command: |
+ scli --switch_cluster_mode --cluster_mode "1_node" --remove_secondary_mdm_ip
+ "{{ powerflex_tb_mdm_secondary_ip }}","{{ powerflex_tb_mdm_tertiary_ip }}" --remove_tb_ip "{{ powerflex_tb_primary_ip }}","{{ powerflex_tb_secondary_ip }}"
+ run_once: true
+ register: powerflex_tb_cluster_five_to_one_output
+ changed_when: powerflex_tb_cluster_five_to_one_output.rc == 0
+ delegate_to: "{{ powerflex_tb_mdm_primary_hostname }}"
+ when: powerflex_tb_mdm_cluster_mode[0] == "5_node" and powerflex_tb_scli_version[0] >= '4'
+# Remove the standby MDMs
- name: Remove primary tb from standby mdm
ansible.builtin.command: scli --remove_standby_mdm --remove_mdm_ip "{{ powerflex_tb_primary_ip }}"
run_once: true
diff --git a/roles/powerflex_webui/meta/main.yml b/roles/powerflex_webui/meta/main.yml
index 8f03019..2872690 100644
--- a/roles/powerflex_webui/meta/main.yml
+++ b/roles/powerflex_webui/meta/main.yml
@@ -8,7 +8,7 @@ galaxy_info:
license: GPL-3.0-only
- min_ansible_version: "2.13"
+ min_ansible_version: "2.14.0"
platforms:
- name: EL
diff --git a/roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml b/roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml
index 472d285..f614a18 100644
--- a/roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml
+++ b/roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml
@@ -12,6 +12,7 @@
powerflex_common_file_install_location: "/opt/empty"
powerflex_webui_state: present
ignore_errors: true
+ register: powerflex_webui_install_config_no_rpm_result
- name: Verifying failure of install package with respect to no rpm file
ansible.builtin.assert:
@@ -25,6 +26,7 @@
powerflex_common_file_install_location: "/opt/aaab"
powerflex_webui_state: present
ignore_errors: true
+ register: powerflex_webui_install_config_wrong_path_result
- name: Verifying failure of install package with wrong file path
ansible.builtin.assert:
diff --git a/roles/powerflex_webui/vars/main.yml b/roles/powerflex_webui/vars/main.yml
index 5679650..aba9fec 100644
--- a/roles/powerflex_webui/vars/main.yml
+++ b/roles/powerflex_webui/vars/main.yml
@@ -1,6 +1,5 @@
---
file_glob_name: mgmt-server
-scaleio_role_environment:
- - key: "MDM_IP"
- value: "{{ powerflex_webui_mdm_ips }}"
+powerflex_role_environment:
+ MDM_IP: "{{ powerflex_webui_mdm_ips }}"
file_gpg_name: RPM-GPG-KEY-ScaleIO
diff --git a/tests/sanity/ignore-2.13.txt b/tests/sanity/ignore-2.16.txt
similarity index 73%
rename from tests/sanity/ignore-2.13.txt
rename to tests/sanity/ignore-2.16.txt
index f9478ce..5252c9e 100644
--- a/tests/sanity/ignore-2.13.txt
+++ b/tests/sanity/ignore-2.16.txt
@@ -11,16 +11,9 @@ plugins/modules/replication_consistency_group.py validate-modules:missing-gplv3-
plugins/modules/replication_pair.py validate-modules:missing-gplv3-license
plugins/modules/snapshot_policy.py validate-modules:missing-gplv3-license
plugins/modules/snapshot_policy.py compile-2.7
-plugins/modules/snapshot_policy.py compile-3.5
plugins/modules/snapshot_policy.py import-2.7
-plugins/modules/snapshot_policy.py import-3.5
plugins/modules/sdc.py import-2.7
-plugins/modules/sdc.py import-3.5
plugins/modules/sdc.py compile-2.7
-plugins/modules/sdc.py compile-3.5
tests/unit/plugins/module_utils/mock_device_api.py compile-2.7
-tests/unit/plugins/module_utils/mock_device_api.py compile-3.5
plugins/modules/replication_consistency_group.py import-2.7
-plugins/modules/replication_consistency_group.py import-3.5
-plugins/modules/replication_consistency_group.py compile-2.7
-plugins/modules/replication_consistency_group.py compile-3.5
+plugins/modules/replication_consistency_group.py compile-2.7
\ No newline at end of file