- AnsibleFest
- Products
- Community
- Webinars & Training
- Blog

Documentation

# purefa_pg – Manage protection groups on Pure Storage FlashArrays

New in version 2.4.

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Status

## Synopsis

- Create, delete or modify protection groups on Pure Storage FlashArrays.
- If a protection group exists and you try to add non-valid types, eg. a host to a volume protection group the module will ignore the invalid types.
- Protection Groups on Offload targets are supported.

## Requirements

The below requirements are needed on the host that executes this module.

- python >= 2.7
- purestorage

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
api_token string / required |  | FlashArray API token for admin privileged user.
enabled boolean | Choices: no yes ← | Define whether to enabled snapshots for the protection group.
eradicate boolean | Choices: no ← yes | Define whether to eradicate the protection group on delete and leave in trash.
fa_url string / required |  | FlashArray management IPv4 address or Hostname.
host list |  | List of existing hosts to add to protection group.
hostgroup list |  | List of existing hostgroups to add to protection group.
pgroup string / required |  | The name of the protection group.
state string | Choices: absent present ← | Define whether the protection group should exist or not.
target list added in 2.8 |  | List of remote arrays or offload target for replication protection group to connect to. Note that all replicated protection groups are asynchronous. Target arrays or offload targets must already be connected to the source array. Maximum number of targets per Protection Group is 4, assuming your configuration supports this.
volume list |  | List of existing volumes to add to protection group.

## Notes

Note

- This module requires the `purestorage` Python library
- You must set `PUREFA_URL` and `PUREFA_API` environment variables if fa_url and api_token arguments are not passed to the module directly

## Examples

    - name: Create new local protection group
      purefa_pg:
        pgroup: foo
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Create new replicated protection group
      purefa_pg:
        pgroup: foo
        target:
          - arrayb
          - arrayc
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Create new replicated protection group to offload target and remote array
      purefa_pg:
        pgroup: foo
        target:
          - offload
          - arrayc
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Create new protection group with snapshots disabled
      purefa_pg:
        pgroup: foo
        enabled: false
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Delete protection group
      purefa_pg:
        pgroup: foo
        eradicate: true
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592
        state: absent

    - name: Eradicate protection group foo on offload target where source array is arrayA
      purefa_pg:
        pgroup: "arrayA:foo"
        target: offload
        eradicate: true
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592
        state: absent

    - name: Create protection group for hostgroups
      purefa_pg:
        pgroup: bar
        hostgroup:
          - hg1
          - hg2
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Create protection group for hosts
      purefa_pg:
        pgroup: bar
        host:
          - host1
          - host2
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

    - name: Create replicated protection group for volumes
      purefa_pg:
        pgroup: bar
        volume:
          - vol1
          - vol2
        target: arrayb
        fa_url: 10.10.10.2
        api_token: e31060a7-21fc-e277-6240-25983c6c4592

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Pure Storage Ansible Team (@sdodsley) <pure-ansible-team@purestorage.com>

Hint

If you notice any issues in this documentation, you can edit this document to improve it.