VAST Data Ansible Collection
Ansible Collection for managing VAST Data Storage Platform.
Provides 46 modules covering storage, authentication, data protection,
networking, multi-tenancy, security, monitoring, and system management.
Dependency
Version
Python
>= 3.12
ansible-core
>= 2.16.0
VAST Python SDK (vastpy)
>= 0.3.22
VAST Database SDK (vastdb)
>= 2.0.14
VAST Data Platform
>= 5.4.0
ansible-galaxy collection install stevefulme1.vastdata
Install the Python dependency:
pip install vastpy> =0.3.22 vastdb> =2.0.14
Configure VAST VMS credentials using one of the following methods:
Username/password : Provide vms_user and vms_password parameters
API token : Provide api_token parameter (takes precedence)
Ansible Vault : Encrypt credentials in a vault-protected vars file
All modules accept the common authentication parameters defined in the
stevefulme1.vastdata.vast_common documentation fragment.
Module
Description
vast_user
Manage local users
vast_group
Manage local groups
vast_nonlocal_user
Manage non-local (directory-sourced) users
vast_nonlocal_group
Manage non-local groups
vast_user_key
Manage user access keys
vast_nonlocal_user_key
Manage keys for non-local users
vast_api_token
Create, rotate, and revoke API tokens
vast_admin_role
Manage administrator roles and permissions
vast_admin_realm
Configure administrator authentication realms
vast_admin_manager
Manage administrator manager settings
Module
Description
vast_ldap
Configure LDAP authentication providers
vast_active_directory
Configure Active Directory integration
vast_nis
Configure NIS authentication providers
vast_saml_config
Configure SAML single sign-on
vast_local_provider
Manage local authentication provider settings
Module
Description
vast_view
Manage views (NFS/SMB/S3 multi-protocol exports)
vast_view_policy
Manage view access policies
vast_volume
Manage block storage volumes
vast_quota
Manage storage quotas
vast_folder_read_only
Set folder read-only flags
vast_protected_path
Configure protected paths for sensitive data
Module
Description
vast_s3_policy
Manage S3 bucket policies
vast_s3_policy_attachment
Attach S3 policies to users and groups
vast_s3_lifecycle_rule
Manage S3 object lifecycle rules
Module
Description
vast_snapshot
Create and manage local snapshots
vast_global_snapshot
Manage global (cross-cluster) snapshots
vast_global_local_snapshot
Manage global-local snapshot mappings
vast_protection_policy
Define protection and retention policies
vast_replication_peer
Configure native replication peers
vast_s3_replication_peer
Configure S3 replication peers
Module
Description
vast_vip_pool
Manage virtual IP pools
vast_dns
Configure DNS settings
vast_bgp_config
Configure BGP routing
vast_block_host
Manage block storage host entries
vast_block_host_mapping
Map block hosts to volumes
Module
Description
vast_qos_policy
Manage Quality of Service policies
Module
Description
vast_tenant
Manage tenants
vast_tenant_encryption
Configure per-tenant encryption controls
vast_tenant_client_metrics
Configure tenant client metrics collection
vast_user_tenant_data
Manage user-tenant data associations
vast_user_copy
Copy user accounts across tenants
Module
Description
vast_encryption_group
Manage encryption group controls
Module
Description
vast_event_definition
Define event and alert rules
vast_event_definition_config
Configure event definition parameters
Module
Description
vast_kafka_broker
Configure Kafka broker integration
Module
Description
vast_vms
Manage VAST Management Server settings
Create a view with NFS and S3 access
- name : Create a multi-protocol view
stevefulme1.vastdata.vast_view :
vms_host : " vms.example.com"
api_token : " {{ vault_vast_token }}"
name : " ai-training-data"
path : " /data/ai/training"
protocols :
- NFS
- S3
create_dir : true
state : present
- name : Apply a storage quota
stevefulme1.vastdata.vast_quota :
vms_host : " vms.example.com"
api_token : " {{ vault_vast_token }}"
name : " team-alpha-quota"
path : " /data/teams/alpha"
hard_limit : 10995116277760 # 10 TiB
soft_limit : 8796093022208 # 8 TiB
grace_period : " 7d"
enable_alarms : true
state : present
Configure data protection
- name : Create a protection policy
stevefulme1.vastdata.vast_protection_policy :
vms_host : " vms.example.com"
api_token : " {{ vault_vast_token }}"
name : " daily-snapshots"
clone_type : NATIVE_REPLICATION
frames :
- every : " 1D"
start_at : " 00:00"
keep_local : 7
keep_remote : 30
state : present
- name : Take a snapshot
stevefulme1.vastdata.vast_snapshot :
vms_host : " vms.example.com"
api_token : " {{ vault_vast_token }}"
name : " pre-migration-snap"
path : " /data/production"
indestructible : true
state : present
Multi-tenant provisioning
- name : Create a tenant
stevefulme1.vastdata.vast_tenant :
vms_host : " vms.example.com"
api_token : " {{ vault_vast_token }}"
name : " team-alpha"
posix_primary_provider : LDAP
client_ip_ranges :
- start_ip : " 10.0.1.0"
end_ip : " 10.0.1.255"
state : present
Run linting and sanity checks:
pip install ansible-core> =2.16 ansible-lint yamllint flake8
yamllint -c .yamllint .
flake8 plugins/ --max-line-length=120 --ignore=E402,W503
ansible-lint --strict
Run sanity tests (must be checked out as ansible_collections/vastdata/cluster/):
ansible-test sanity --python 3.12 -v
Run unit tests:
pip install pytest vastpy vastdb
pytest tests/unit/ -v --tb=short
Fork the repository
Create a feature branch
Write your module following the existing patterns in plugins/modules/
Add unit tests in tests/unit/
Run sanity and lint checks
Submit a pull request
GNU General Public License v3.0 or later.
See COPYING for the full license text.