diff --git a/.ansible-lint b/.ansible-lint index e40e46d..f615bf2 100644 --- a/.ansible-lint +++ b/.ansible-lint @@ -1,30 +1,2 @@ exclude_paths: - - changelogs/ - .github/ - - meta/ - - roles/powerflex_sdc/molecule/sdc_installation_invalid_path_rpm/converge.yml - - roles/powerflex_sds/molecule/sds_installation/converge.yml - - roles/powerflex_lia/molecule/lia_installation_invalid_path_rpm/converge.yml - - roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml - - roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml - - roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml - - roles/powerflex_gateway/defaults/ - - roles/powerflex_gateway/vars/ - - roles/powerflex_lia/defaults/ - - roles/powerflex_lia/vars/ - - roles/powerflex_mdm/defaults/ - - roles/powerflex_mdm/vars/ - - roles/powerflex_sdc/defaults/ - - roles/powerflex_sdc/vars/ - - roles/powerflex_sdr/defaults/ - - roles/powerflex_sdr/vars/ - - roles/powerflex_sds/defaults/ - - roles/powerflex_sds/vars/ - - roles/powerflex_tb/defaults/ - - roles/powerflex_tb/vars/ - - roles/powerflex_webui/defaults/ - - roles/powerflex_webui/vars/ - - roles/powerflex_activemq/defaults/ - - roles/powerflex_activemq/vars/ - - roles/powerflex_config/defaults/ - - roles/powerflex_config/vars/ diff --git a/.ansible-lint-ignore b/.ansible-lint-ignore new file mode 100644 index 0000000..1b2e740 --- /dev/null +++ b/.ansible-lint-ignore @@ -0,0 +1,27 @@ +roles/powerflex_activemq/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_config/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_gateway/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_gateway/vars/CentOS.yml var-naming[no-role-prefix] +roles/powerflex_gateway/vars/Ubuntu.yml var-naming[no-role-prefix] +roles/powerflex_gateway/vars/RedHat.yml var-naming[no-role-prefix] +roles/powerflex_gateway/vars/SLES.yml var-naming[no-role-prefix] +roles/powerflex_gateway/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_lia/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_lia/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_mdm/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_mdm/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_sdc/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_sdc/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_sdr/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_sds/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_sds/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_tb/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_tb/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_webui/defaults/main.yml var-naming[no-role-prefix] +roles/powerflex_webui/vars/main.yml var-naming[no-role-prefix] +roles/powerflex_gateway/molecule/gateway_installation_invalid_path_rpm/converge.yml var-naming[no-role-prefix] +roles/powerflex_lia/molecule/lia_installation_invalid_path_rpm/converge.yml var-naming[no-role-prefix] +roles/powerflex_sdc/molecule/sdc_installation_invalid_path_rpm/converge.yml var-naming[no-role-prefix] +roles/powerflex_sdr/molecule/sdr_installation_invalid_path_rpm/converge.yml var-naming[no-role-prefix] +roles/powerflex_sds/molecule/sds_installation/converge.yml var-naming[no-role-prefix] +roles/powerflex_webui/molecule/webui_installation_invalid_path_rpm/converge.yml var-naming[no-role-prefix] diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 321ed2d..30b2ae3 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -15,15 +15,15 @@ jobs: strategy: fail-fast: false matrix: - ansible-version: [stable-2.13] + ansible-version: [stable-2.14] steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - - name: Set up Python 3.9 - uses: actions/setup-python@v1 + - name: Set up Python 3.11 + uses: actions/setup-python@v4 with: - python-version: 3.9 + python-version: 3.11 - name: Install ansible (${{ matrix.ansible-version }}) run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check @@ -50,16 +50,16 @@ jobs: fail-fast: false matrix: python-version: ["3.9", "3.10", "3.11"] - ansible-version: [stable-2.13, stable-2.14, stable-2.15] + ansible-version: [stable-2.14, stable-2.15, stable-2.16] exclude: - # Python 3.11 is supported only from ansible-core 2.14 onwards - - python-version: "3.11" - ansible-version: stable-2.13 + # Ansible-core 2.16 is supported only from Python 3.10 onwards + - python-version: "3.9" + ansible-version: stable-2.16 steps: - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} @@ -93,15 +93,20 @@ jobs: strategy: fail-fast: false matrix: - ansible-version: [stable-2.13, stable-2.14, stable-2.15] + python-version: ["3.9", "3.10", "3.11"] + ansible-version: [stable-2.14, stable-2.15, stable-2.16] + exclude: + # Ansible-core 2.16 is supported only from Python 3.10 onwards + - python-version: "3.9" + ansible-version: stable-2.16 steps: - - name: Set up Python 3.9 - uses: actions/setup-python@v1 + - name: Set up Python 3.11 + uses: actions/setup-python@v4 with: # it is just required to run that once as "ansible-test sanity" in the docker image # will run on all python versions it supports. - python-version: 3.9 + python-version: 3.11 - name: Install ansible (${{ matrix.ansible-version }}) version run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check @@ -130,7 +135,11 @@ jobs: fail-fast: false matrix: python-version: ["3.9", "3.10", "3.11"] - ansible-version: [stable-2.13, stable-2.14, stable-2.15] + ansible-version: [stable-2.14, stable-2.15, stable-2.16] + exclude: + # Ansible-core 2.16 is supported only from Python 3.10 onwards + - python-version: "3.9" + ansible-version: stable-2.16 steps: # Important: This sets up your GITHUB_WORKSPACE environment variable @@ -140,7 +149,7 @@ jobs: fetch-depth: 0 # needed for progressive mode to work - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6297bdb..e14099e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,16 +4,25 @@ Dellemc.PowerFlex Change Logs .. contents:: Topics + +v2.1.0 +====== + +Minor Changes +------------- + +- Added support for PowerFlex Denver version(4.5.x) to TB and Config role. + v2.0.1 ====== Minor Changes ------------- +- Added Ansible role to support creation and deletion of protection domain, storage pool and fault set. +- Added Ansible role to support installation and uninstallation of Active MQ. - 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. v1.9.0 ====== diff --git a/README.md b/README.md index c5321e3..1087695 100644 --- a/README.md +++ b/README.md @@ -6,29 +6,29 @@ The capabilities of the Ansible modules are managing SDCs, volumes, snapshots, s ## Table of contents -* [Code of conduct](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/CODE_OF_CONDUCT.md) -* [Maintainer guide](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/MAINTAINER_GUIDE.md) -* [Committer guide](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/COMMITTER_GUIDE.md) -* [Contributing guide](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/CONTRIBUTING.md) -* [Branching strategy](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/BRANCHING.md) -* [List of adopters](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/ADOPTERS.md) -* [Maintainers](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/MAINTAINERS.md) -* [Support](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/SUPPORT.md) +* [Code of conduct](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/CODE_OF_CONDUCT.md) +* [Maintainer guide](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/MAINTAINER_GUIDE.md) +* [Committer guide](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/COMMITTER_GUIDE.md) +* [Contributing guide](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/CONTRIBUTING.md) +* [Branching strategy](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/BRANCHING.md) +* [List of adopters](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/ADOPTERS.md) +* [Maintainers](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/MAINTAINERS.md) +* [Support](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/SUPPORT.md) * [License](#license) -* [Security](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/SECURITY.md) +* [Security](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/SECURITY.md) * [Prerequisites](#prerequisites) * [List of Ansible modules for Dell PowerFlex](#list-of-ansible-modules-for-dell-powerflex) * [Installation and execution of Ansible modules for Dell PowerFlex](#installation-and-execution-of-ansible-modules-for-dell-powerflex) * [Releasing, Maintenance and Deprecation](#releasing-maintenance-and-deprecation) ## License -The Ansible collection for PowerFlex is released and licensed under the GPL-3.0 license. See [LICENSE](https://github.com/dell/ansible-powerflex/blob/2.0.1/LICENSE) for the full terms. Ansible modules and modules utilities that are part of the Ansible collection for PowerFlex are released and licensed under the Apache 2.0 license. See [MODULE-LICENSE](https://github.com/dell/ansible-powerflex/blob/2.0.1/MODULE-LICENSE) for the full terms. +The Ansible collection for PowerFlex is released and licensed under the GPL-3.0 license. See [LICENSE](https://github.com/dell/ansible-powerflex/blob/2.1.0/LICENSE) for the full terms. Ansible modules and modules utilities that are part of the Ansible collection for PowerFlex are released and licensed under the Apache 2.0 license. See [MODULE-LICENSE](https://github.com/dell/ansible-powerflex/blob/2.1.0/MODULE-LICENSE) for the full terms. ## Prerequisites | **Ansible Modules** | **PowerFlex/VxFlex OS Version** | **SDK version** | **Python version** | **Ansible** | |---------------------|-----------------------|-------|--------------------|--------------------------| -| v2.0.1 |3.6
4.0
4.5 | 1.8.0 | 3.9.x
3.10.x
3.11.x | 2.13
2.14
2.15 | +| v2.1.0 |3.6
4.0
4.5 | 1.8.0 | 3.9.x
3.10.x
3.11.x | 2.14
2.15
2.16 | * Please follow PyPowerFlex installation instructions on [PyPowerFlex Documentation](https://github.com/dell/python-powerflex) @@ -36,21 +36,21 @@ The Ansible collection for PowerFlex is released and licensed under the GPL-3.0 The modules are written in such a way that all requests are idempotent and hence fault-tolerant. It essentially means that the result of a successfully performed request is independent of the number of times it is executed. ## List of Ansible modules for Dell PowerFlex - * [Info module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/info.rst) - * [Snapshot module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/snapshot.rst) - * [SDC module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/sdc.rst) - * [Storage pool module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/storagepool.rst) - * [Volume module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/volume.rst) - * [SDS module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/sds.rst) - * [Device Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/device.rst) - * [Protection Domain Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/protection_domain.rst) - * [MDM Cluster Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/mdm_cluster.rst) - * [Replication Consistency Grop Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/replication_consistency_group.rst) - * [Replication Pair Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/replication_pair.rst) - * [Snapshot Policy Module](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/modules/snapshot_policy.rst) + * [Info module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/info.rst) + * [Snapshot module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/snapshot.rst) + * [SDC module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/sdc.rst) + * [Storage pool module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/storagepool.rst) + * [Volume module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/volume.rst) + * [SDS module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/sds.rst) + * [Device Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/device.rst) + * [Protection Domain Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/protection_domain.rst) + * [MDM Cluster Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/mdm_cluster.rst) + * [Replication Consistency Grop Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/replication_consistency_group.rst) + * [Replication Pair Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/replication_pair.rst) + * [Snapshot Policy Module](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/modules/snapshot_policy.rst) ## Installation and execution of Ansible modules for Dell PowerFlex -The installation and execution steps of Ansible modules for Dell PowerFlex can be found [here](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/INSTALLATION.md). +The installation and execution steps of Ansible modules for Dell PowerFlex can be found [here](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/INSTALLATION.md). ## Releasing, Maintenance and Deprecation @@ -58,6 +58,6 @@ Ansible Modules for Dell Technnologies PowerFlex follows [Semantic Versioning](h New version will be release regularly if significant changes (bug fix or new feature) are made in the collection. -Released code versions are located on "release" branches with names of the form "release-x.y.z" where x.y.z corresponds to the version number. More information on branching strategy followed can be found [here](https://github.com/dell/ansible-powerflex/blob/2.0.1/docs/BRANCHING.md). +Released code versions are located on "release" branches with names of the form "release-x.y.z" where x.y.z corresponds to the version number. More information on branching strategy followed can be found [here](https://github.com/dell/ansible-powerflex/blob/2.1.0/docs/BRANCHING.md). Ansible Modules for Dell Technologies PowerFlex deprecation cycle is aligned with that of [Ansible](https://docs.ansible.com/ansible/latest/dev_guide/module_lifecycle.html). \ No newline at end of file diff --git a/changelogs/.plugin-cache.yaml b/changelogs/.plugin-cache.yaml index 2468b43..b2098ae 100644 --- a/changelogs/.plugin-cache.yaml +++ b/changelogs/.plugin-cache.yaml @@ -76,4 +76,4 @@ plugins: strategy: {} test: {} vars: {} -version: 1.9.0 +version: 2.1.0 diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index 73de0cd..f18ac42 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -2,130 +2,135 @@ ancestor: null releases: 1.0.0: modules: - - description: Gathering information about Dell PowerFlex - name: info - namespace: '' - - description: Manage SDCs on Dell PowerFlex - name: sdc - namespace: '' - - description: Manage Snapshots on Dell PowerFlex - name: snapshot - namespace: '' - - description: Managing Dell PowerFlex storage pool - name: storagepool - namespace: '' - - description: Manage volumes on Dell PowerFlex - name: volume - namespace: '' + - description: Gathering information about Dell PowerFlex + name: info + namespace: '' + - description: Manage SDCs on Dell PowerFlex + name: sdc + namespace: '' + - description: Manage Snapshots on Dell PowerFlex + name: snapshot + namespace: '' + - description: Managing Dell PowerFlex storage pool + name: storagepool + namespace: '' + - description: Manage volumes on Dell PowerFlex + name: volume + namespace: '' release_date: '2021-03-24' 1.1.0: changes: minor_changes: - - Added dual licensing. - - Gatherfacts module is enhanced to list devices. + - Added dual licensing. + - Gatherfacts module is enhanced to list devices. modules: - - description: Manage device on Dell PowerFlex - name: device - namespace: '' - - description: Manage SDS on Dell PowerFlex - name: sds - namespace: '' + - description: Manage device on Dell PowerFlex + name: device + namespace: '' + - description: Manage SDS on Dell PowerFlex + name: sds + namespace: '' release_date: '2021-09-28' 1.1.1: changes: deprecated_features: - - The dellemc_powerflex_gatherfacts module is deprecated and replaced with dellemc_powerflex_info + - The dellemc_powerflex_gatherfacts module is deprecated and replaced with dellemc_powerflex_info trivial: - - Product Guide, Release Notes and ReadMe updated as per community guidelines. + - Product Guide, Release Notes and ReadMe updated as per community guidelines. release_date: '2021-12-16' 1.2.0: changes: minor_changes: - - Names of previously released modules have been changed from dellemc_powerflex_\ to \. + - Names of previously released modules have been changed from dellemc_powerflex_\ to \. modules: - - description: Manage Protection Domain on Dell PowerFlex - name: protection_domain - namespace: '' + - description: Manage Protection Domain on Dell PowerFlex + name: protection_domain + namespace: '' release_date: '2022-03-25' 1.3.0: changes: minor_changes: - - Added execution environment manifest file to support building an execution - environment with ansible-builder. - - Enabled the check_mode support for info module + - Added execution environment manifest file to support building an execution + environment with ansible-builder. + - Enabled the check_mode support for info module modules: - - description: Manage MDM cluster on Dell PowerFlex - name: mdm_cluster - namespace: '' + - description: Manage MDM cluster on Dell PowerFlex + name: mdm_cluster + namespace: '' release_date: '2022-06-28' 1.4.0: changes: minor_changes: - - Added support for 4.0.x release of PowerFlex OS. - - Info module is enhanced to support the listing volumes and storage pools with - statistics data. - - Storage pool module is enhanced to get the details with statistics data. - - Volume module is enhanced to get the details with statistics data. + - Added support for 4.0.x release of PowerFlex OS. + - Info module is enhanced to support the listing volumes and storage pools with + statistics data. + - Storage pool module is enhanced to get the details with statistics data. + - Volume module is enhanced to get the details with statistics data. release_date: '2022-09-27' 1.5.0: changes: minor_changes: - - Info module is enhanced to support the listing replication consistency groups. - - Renamed gateway_host to hostname - - Renamed verifycert to validate_certs. - - Updated modules to adhere with ansible community guidelines. + - Info module is enhanced to support the listing replication consistency groups. + - Renamed gateway_host to hostname + - Renamed verifycert to validate_certs. + - Updated modules to adhere with ansible community guidelines. modules: - - description: Manage replication consistency groups on Dell PowerFlex - name: replication_consistency_group - namespace: '' + - description: Manage replication consistency groups on Dell PowerFlex + name: replication_consistency_group + namespace: '' release_date: '2022-12-22' 1.6.0: changes: minor_changes: - - Info module is enhanced to support the listing of replication pairs. + - Info module is enhanced to support the listing of replication pairs. modules: - - description: Manage replication pairs on Dell PowerFlex - name: replication_pair - namespace: '' + - description: Manage replication pairs on Dell PowerFlex + name: replication_pair + namespace: '' release_date: '2023-03-31' 1.7.0: changes: minor_changes: - - Added Ansible role to support installation and uninstallation of SDC. - - Added sample playbooks for the modules. - - Device module is enhanced to support force addition of device to the SDS. - - Info module is enhanced to list statistics in snapshot policies. - - Replication consistency group module is enhanced to support failover, restore, - reverse, switchover, and sync operations. - - SDC module is enhanced to configure performance profile and to remove SDC. - - Updated modules to adhere with ansible community guidelines. + - Added Ansible role to support installation and uninstallation of SDC. + - Added sample playbooks for the modules. + - Device module is enhanced to support force addition of device to the SDS. + - Info module is enhanced to list statistics in snapshot policies. + - Replication consistency group module is enhanced to support failover, restore, + reverse, switchover, and sync operations. + - SDC module is enhanced to configure performance profile and to remove SDC. + - Updated modules to adhere with ansible community guidelines. modules: - - description: Manage snapshot policies on Dell PowerFlex - name: snapshot_policy - namespace: '' + - description: Manage snapshot policies on Dell PowerFlex + name: snapshot_policy + namespace: '' release_date: '2023-06-30' 1.8.0: changes: minor_changes: - - Added Ansible role to support installation and uninstallation of LIA. - - Added Ansible role to support installation and uninstallation of MDM. - - Added Ansible role to support installation and uninstallation of SDS. - - Added Ansible role to support installation and uninstallation of TB. + - Added Ansible role to support installation and uninstallation of LIA. + - Added Ansible role to support installation and uninstallation of MDM. + - Added Ansible role to support installation and uninstallation of SDS. + - Added Ansible role to support installation and uninstallation of TB. release_date: '2023-08-31' 1.9.0: changes: minor_changes: - - Added Ansible role to support installation and uninstallation of Gateway. - - Added Ansible role to support installation and uninstallation of SDR. - - Added Ansible role to support installation and uninstallation of Web UI. + - Added Ansible role to support installation and uninstallation of Gateway. + - Added Ansible role to support installation and uninstallation of SDR. + - Added Ansible role to support installation and uninstallation of Web UI. release_date: '2023-09-29' 2.0.1: changes: minor_changes: - - 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 Ansible role to support creation and deletion of protection domain, + storage pool and fault set. + - Added Ansible role to support installation and uninstallation of Active MQ. + - Added support for PowerFlex Denver version(4.5.x) + - Added support for SDC installation on ESXi, Rocky Linux and Windows OS. release_date: '2023-10-31' + 2.1.0: + changes: + minor_changes: + - Added support for PowerFlex Denver version(4.5.x) to TB and Config role. + release_date: '2023-11-30' diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 400ffe9..d209c48 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -10,7 +10,7 @@ You may obtain a copy of the License at # How to contribute -Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.0.1/CODE_OF_CONDUCT.md). +Become one of the contributors to this project! We thrive to build a welcoming and open community for anyone who wants to use the project or contribute to it. There are just a few small guidelines you need to follow. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](https://github.com/dell/ansible-powerflex/blob/2.1.0/CODE_OF_CONDUCT.md). ## Table of contents @@ -76,7 +76,7 @@ Triage helps ensure that issues resolve quickly by: If you don't have the knowledge or time to code, consider helping with _issue triage_. The Ansible modules for Dell PowerFlex community will thank you for saving them time by spending some of yours. -Read more about the ways you can [Triage issues](https://github.com/dell/ansible-powerflex/blob/2.0.1/ISSUE_TRIAGE.md). +Read more about the ways you can [Triage issues](https://github.com/dell/ansible-powerflex/blob/2.1.0/ISSUE_TRIAGE.md). ## Your first contribution @@ -89,7 +89,7 @@ When you're ready to contribute, it's time to create a pull request. ## Branching -* [Branching Strategy for Ansible modules for Dell PowerFlex](https://github.com/dell/ansible-powerflex/blob/2.0.1/BRANCHING.md) +* [Branching Strategy for Ansible modules for Dell PowerFlex](https://github.com/dell/ansible-powerflex/blob/2.1.0/BRANCHING.md) ## Signing your commits @@ -144,7 +144,7 @@ Make sure that the title for your pull request uses the same format as the subje ### Quality gates for pull requests -GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerflex/blob/2.0.1/SUPPORT.md). +GitHub Actions are used to enforce quality gates when a pull request is created or when any commit is made to the pull request. These GitHub Actions enforce our minimum code quality requirement for any code that get checked into the repository. If any of the quality gates fail, it is expected that the contributor will look into the check log, understand the problem and resolve the issue. If help is needed, please feel free to reach out the maintainers of the project for [support](https://github.com/dell/ansible-powerflex/blob/2.1.0/SUPPORT.md). #### Code sanitization diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 9b4607f..d3c9569 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -41,7 +41,7 @@ You may obtain a copy of the License at * Download the latest tar build from any of the available distribution channel [Ansible Galaxy](https://galaxy.ansible.com/dellemc/powerflex) /[Automation Hub](https://console.redhat.com/ansible/automation-hub/repo/published/dellemc/powerflex) and use this command to install the collection anywhere in your system: - ansible-galaxy collection install dellemc-powerflex-2.0.1.tar.gz -p + ansible-galaxy collection install dellemc-powerflex-2.1.0.tar.gz -p * 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