dellemc.powerflex.volume 模块 – 在 Dell PowerFlex 上管理卷

注意

此模块是 dellemc.powerflex 集合 (版本 2.5.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install dellemc.powerflex。您需要其他要求才能使用此模块,请参阅 需求 获取详细信息。

要在 playbook 中使用它,请指定:dellemc.powerflex.volume

dellemc.powerflex 1.0.0 中的新增功能

概要

  • 在 PowerFlex 存储系统上管理卷包括创建、获取详细信息、修改属性和删除卷。

  • 它还包括添加/删除快照策略、将卷映射/取消映射到/从 SDC 以及列出关联的快照。

需求

执行此模块的主机需要以下要求。

  • Dell PowerFlex 存储系统版本 3.6 或更高版本。

  • PyPowerFlex 1.12.0。

参数

参数

注释

allow_multiple_mappings

布尔值

指定是否允许允许多个映射。

如果卷映射到一个 SDC,则对于每个新的映射,都必须将 _allow_multiple_mappings_ 传递为 true。

选项

  • false

  • true

auto_snap_remove_type

字符串

是否删除或分离快照策略。

要删除/分离快照策略,需要将空的 _snapshot_policy_id_/_snapshot_policy_name_ 与 _auto_snap_remove_type_ 一起传递。

如果快照策略名称/ID 传递为空,则 _auto_snap_remove_type_ 将默认为 detach

选项

  • "remove"

  • "detach"

cap_unit

字符串

卷大小的单位。默认为“GB”。

选项

  • "GB"

  • "TB"

compression_type

字符串

压缩方法的类型。

选项

  • "NORMAL"

  • "NONE"

delete_snapshots

布尔值

如果为 true,则将删除卷及其所有相关快照。

如果为 false,则只删除卷。

只有当 _state_ 为 absent 时才能指定。

如果未指定,则默认为 false

选项

  • false

  • true

hostname

别名:gateway_host

字符串 / 必需

PowerFlex 主机的 IP 或 FQDN。

password

字符串 / 必需

PowerFlex 主机的密码。

port

整数

与 PowerFlex 主机通信的端口号。

默认值: 443

protection_domain_id

字符串

保护域的 ID。

在创建卷期间,如果存在多个具有相同名称的存储池,则必须与它一起提及保护域名称或 ID。

与 _protection_domain_name_ 互斥。

protection_domain_name

字符串

保护域的名称。

在创建卷期间,如果存在多个具有相同名称的存储池,则必须与它一起提及保护域名称或 ID。

与 _protection_domain_id_ 互斥。

sdc

列表 / 元素=字典

指定 SDC 参数。

access_mode

字符串

定义卷所有映射的访问模式。

选项

  • "READ_WRITE"

  • "READ_ONLY"

  • "NO_ACCESS"

bandwidth_limit

整数

卷网络带宽的限制。

需要以 1024 Kbps 的倍数提及。

要设置无限制,需传递 0。

iops_limit

整数

卷 IOPS 的限制。

最小 IOPS 限制为 11,对于无限 iops,请指定 0。

sdc_id

字符串

SDC 的 ID。

指定 _sdc_name_、_sdc_id_ 或 _sdc_ip_。

与 _sdc_name_ 和 _sdc_ip_ 互斥。

sdc_ip

字符串

SDC 的 IP。

指定 _sdc_name_、_sdc_id_ 或 _sdc_ip_。

与 _sdc_id_ 和 _sdc_ip_ 互斥。

sdc_name

字符串

SDC 的名称。

指定 _sdc_name_、_sdc_id_ 或 _sdc_ip_。

与 _sdc_id_ 和 _sdc_ip_ 互斥。

sdc_state

字符串

SDC 的映射状态。

选项

  • "mapped"

  • "unmapped"

size

整数

卷的大小。

卷的大小将分配为 8 GB 的较高倍数。

snapshot_policy_id

字符串

快照策略的 ID。

要删除/分离快照策略,需要将空的 _snapshot_policy_id_/_snapshot_policy_name_ 与 _auto_snap_remove_type_ 一起传递。

snapshot_policy_name

字符串

快照策略的名称。

要删除/分离快照策略,需要将空的 _snapshot_policy_id_/_snapshot_policy_name_ 与 _auto_snap_remove_type_ 一起传递。

state

字符串 / 必需

卷的状态。

选项

  • "present"

  • "absent"

storage_pool_id

字符串

存储池的 ID。

创建卷需要存储池的名称或 ID。

与 _storage_pool_name_ 互斥。

storage_pool_name

字符串

存储池的名称。

创建卷需要存储池的名称或 ID。

在创建过程中,如果提供存储池名称,则必须与它一起提及保护域名称或 ID。

与 _storage_pool_id_ 互斥。

timeout

整数

连接终止后的时间。

以秒为单位。

默认值: 120

use_rmcache

布尔值

是否使用 RM Cache。

选项

  • false

  • true

username

字符串 / 必需

PowerFlex 主机的用户名。

validate_certs

别名:verifycert

布尔值

布尔变量,用于指定是否验证 SSL 证书。

true - 表示应验证 SSL 证书。

false - 表示不应验证SSL证书。

选项

  • false

  • true ← (默认)

vol_id

字符串

卷的ID。

除创建操作外,所有其他操作都可以使用vol_id执行。

vol_name互斥。

vol_name

字符串

卷的名称。

创建操作时必填。

在PowerFlex阵列中是唯一的。

vol_id互斥。

vol_new_name

字符串

卷的新名称。用于重命名卷。

vol_type

字符串

卷配置类型。

选项

  • "THICK_PROVISIONED"

  • "THIN_PROVISIONED"

备注

注意

  • 不支持check_mode

  • 名为“dellemc.powerflex”的集合中的模块旨在支持Dell PowerFlex存储平台。

示例

- name: Create a volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    storage_pool_name: "pool_1"
    protection_domain_name: "pd_1"
    vol_type: "THICK_PROVISIONED"
    compression_type: "NORMAL"
    use_rmcache: true
    size: 16
    state: "present"

- name: Map a SDC to volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    allow_multiple_mappings: true
    sdc:
      - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
        access_mode: "READ_WRITE"
    sdc_state: "mapped"
    state: "present"

- name: Unmap a SDC to volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    sdc:
      - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
    sdc_state: "unmapped"
    state: "present"

- name: Map multiple SDCs to a volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    protection_domain_name: "pd_1"
    sdc:
      - sdc_id: "92A304DB-EFD7-44DF-A07E-D78134CC9764"
        access_mode: "READ_WRITE"
        bandwidth_limit: 2048
        iops_limit: 20
      - sdc_ip: "198.10.xxx.xxx"
        access_mode: "READ_ONLY"
    allow_multiple_mappings: true
    sdc_state: "mapped"
    state: "present"

- name: Get the details of the volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_id: "fe6c8b7100000005"
    state: "present"

- name: Modify the details of the Volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    storage_pool_name: "pool_1"
    new_vol_name: "new_sample_volume"
    size: 64
    state: "present"

- name: Delete the Volume
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    delete_snapshots: false
    state: "absent"

- name: Delete the Volume and all its dependent snapshots
  dellemc.powerflex.volume:
    hostname: "{{hostname}}"
    username: "{{username}}"
    password: "{{password}}"
    validate_certs: "{{validate_certs}}"
    port: "{{port}}"
    vol_name: "sample_volume"
    delete_snapshots: true
    state: "absent"

返回值

常见的返回值已在此处记录,以下是此模块特有的字段

描述

changed

布尔值

资源是否已更改。

返回值:始终返回

示例: false

volume_details

字典

卷的详细信息。

返回值:卷存在时返回

示例: {"accessModeLimit": "ReadWrite", "ancestorVolumeId": null, "autoSnapshotGroupId": null, "compressionMethod": "Invalid", "consistencyGroupId": null, "creationTime": 1631618520, "dataLayout": "MediumGranularity", "id": "cdd883cf00000002", "links": [{"href": "/api/instances/Volume::cdd883cf00000002", "rel": "self"}, {"href": "/api/instances/Volume::cdd883cf00000002/relationships /Statistics", "rel": "/api/Volume/relationship/Statistics"}, {"href": "/api/instances/VTree::6e86255c00000001", "rel": "/api/parent/relationship/vtreeId"}, {"href": "/api/instances/StoragePool::e0d8f6c900000000", "rel": "/api/parent/relationship/storagePoolId"}], "lockedAutoSnapshot": false, "lockedAutoSnapshotMarkedForRemoval": false, "managedBy": "ScaleIO", "mappedSdcInfo": null, "name": "ansible-volume-1", "notGenuineSnapshot": false, "originalExpiryTime": 0, "pairIds": null, "protectionDomainId": "9300c1f900000000", "protectionDomainName": "domain1", "replicationJournalVolume": false, "replicationTimeStamp": 0, "retentionLevels": [], "secureSnapshotExpTime": 0, "sizeInGB": 16, "sizeInKb": 16777216, "snapshotPolicyId": null, "snapshotPolicyName": null, "snapshotsList": [{"accessModeLimit": "ReadOnly", "ancestorVolumeId": "cdd883cf00000002", "autoSnapshotGroupId": null, "compressionMethod": "Invalid", "consistencyGroupId": "22f1e80c00000001", "creationTime": 1631619229, "dataLayout": "MediumGranularity", "id": "cdd883d000000004", "links": [{"href": "/api/instances/Volume::cdd883d000000004", "rel": "self"}, {"href": "/api/instances/Volume::cdd883d000000004 /relationships/Statistics", "rel": "/api/Volume/relationship/Statistics"}, {"href": "/api/instances/Volume::cdd883cf00000002", "rel": "/api/parent/relationship/ancestorVolumeId"}, {"href": "/api/instances/VTree::6e86255c00000001", "rel": "/api/parent/relationship/vtreeId"}, {"href": "/api/instances/StoragePool::e0d8f6c900000000", "rel": "/api/parent/relationship/storagePoolId"}], "lockedAutoSnapshot": false, "lockedAutoSnapshotMarkedForRemoval": false, "managedBy": "ScaleIO", "mappedSdcInfo": null, "name": "ansible_vol_snap_1", "notGenuineSnapshot": false, "originalExpiryTime": 0, "pairIds": null, "replicationJournalVolume": false, "replicationTimeStamp": 0, "retentionLevels": [], "secureSnapshotExpTime": 0, "sizeInKb": 16777216, "snplIdOfAutoSnapshot": null, "snplIdOfSourceVolume": null, "storagePoolId": "e0d8f6c900000000", "timeStampIsAccurate": false, "useRmcache": false, "volumeReplicationState": "UnmarkedForReplication", "volumeType": "Snapshot", "vtreeId": "6e86255c00000001"}], "snplIdOfAutoSnapshot": null, "snplIdOfSourceVolume": null, "statistics": {"childVolumeIds": [], "descendantVolumeIds": [], "initiatorSdcId": null, "mappedSdcIds": ["c42425XXXXXX"], "numOfChildVolumes": 0, "numOfDescendantVolumes": 0, "numOfMappedSdcs": 1, "registrationKey": null, "registrationKeys": [], "replicationJournalVolume": false, "replicationState": "UnmarkedForReplication", "reservationType": "NotReserved", "rplTotalJournalCap": 0, "rplUsedJournalCap": 0, "userDataReadBwc": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}, "userDataSdcReadLatency": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}, "userDataSdcTrimLatency": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}, "userDataSdcWriteLatency": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}, "userDataTrimBwc": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}, "userDataWriteBwc": {"numOccured": 0, "numSeconds": 0, "totalWeightInKb": 0}}, "storagePoolId": "e0d8f6c900000000", "storagePoolName": "pool1", "timeStampIsAccurate": false, "useRmcache": false, "volumeReplicationState": "UnmarkedForReplication", "volumeType": "ThinProvisioned", "vtreeId": "6e86255c00000001"}

id

字符串

卷的ID。

返回值:成功

mappedSdcInfo

字典

已映射SDC的详细信息。

返回值:成功

accessMode

字符串

指定卷的映射访问模式。

返回值:成功

limitBwInMbps

整数

SDC的带宽限制。

返回值:成功

limitIops

整数

SDC的IOPS限制。

返回值:成功

sdcId

字符串

SDC 的 ID。

返回值:成功

sdcIp

字符串

SDC 的 IP。

返回值:成功

sdcName

字符串

SDC 的名称。

返回值:成功

name

字符串

卷的名称。

返回值:成功

protectionDomainId

字符串

卷所在的保护域的ID。

返回值:成功

protectionDomainName

字符串

卷所在的保护域的名称。

返回值:成功

sizeInGb

整数

卷的大小(GB)。

返回值:成功

sizeInKb

整数

卷的大小(KB)。

返回值:成功

snapshotPolicyId

字符串

与卷关联的快照策略的ID。

返回值:成功

snapshotPolicyName

字符串

与卷关联的快照策略的名称。

返回值:成功

snapshotsList

字符串

与卷关联的快照列表。

返回值:成功

statistics

字典

存储池的统计信息详情。

返回值:成功

numOfChildVolumes

整数

子卷的数量。

返回值:成功

numOfMappedSdcs

整数

卷已映射的SDC数量。

返回值:成功

storagePoolId

字符串

卷所在的存储池的ID。

返回值:成功

storagePoolName

字符串

卷所在的存储池的名称。

返回值:成功

作者

  • P Srinivas Rao (@srinivas-rao5)