How to Enable and Configure vSAN in VMware Using Ansible Playbook

 

Introduction

Virtual SAN (vSAN) is a powerful storage solution designed for VMware environments. It enables the pooling of local storage devices into a single virtual datastore that can be accessed by all virtual machines running within a VMware cluster. Automating the management of vSAN using Ansible not only streamlines the process but also ensures that the configurations remain consistent across your infrastructure.

In this article, we will guide you through the steps of using Ansible to enable vSAN, enable automatic rebalancing, and configure automatic storage claims on a VMware cluster. We’ll be leveraging the community.vmware.vmware_cluster_vsan module to perform these tasks, and each task will be explained in detail.

Ansible Playbook for vSAN Management

1. Enable vSAN in VMware Cluster

The first step in configuring vSAN is to enable it on the desired VMware cluster. Below is an Ansible task that enables vSAN for a VMware cluster:

- name: Enable vSAN
  community.vmware.vmware_cluster_vsan:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    datacenter_name: datacenter
    cluster_name: cluster
    enable: true
  delegate_to: localhost

Explanation:

  • hostname: The vCenter server’s hostname or IP address where the cluster resides.
  • username and password: The credentials for authenticating to vCenter.
  • datacenter_name: The name of the vSphere datacenter containing the cluster.
  • cluster_name: The name of the specific cluster where vSAN is being enabled.
  • enable: true: This key explicitly enables vSAN on the specified cluster.
  • delegate_to: localhost: Ensures that this task is executed from the local machine rather than the target nodes.

 

2. Enable vSAN with Automatic Rebalancing

When vSAN is enabled, it’s important to configure automatic rebalancing to optimize storage utilization. The following task enables vSAN and sets up automatic rebalancing for the cluster:

- name: Enable vSAN and automatic rebalancing
  community.vmware.vmware_cluster_vsan:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    datacenter_name: datacenter
    cluster_name: cluster
    enable: true
    advanced_options:
      automatic_rebalance: true
  delegate_to: localhost

Explanation:

  • advanced_options: This dictionary allows you to set advanced settings, such as enabling automatic rebalancing, which redistributes data across the cluster’s disks as needed.
  • automatic_rebalance: true: This ensures that the storage across the cluster remains evenly distributed by automatically balancing the workloads.

3. Enable vSAN with Automatic Storage Claiming

In certain environments, you may want to automatically claim storage for vSAN when enabling it. This is useful when you want to quickly integrate new storage resources without manual intervention. Here is an Ansible task that enables vSAN and automatically claims storage:

- name: Enable vSAN and claim storage automatically
  community.vmware.vmware_cluster_vsan:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter_name: DC0
    cluster_name: "{{ cluster_name }}"
    enable: true
    vsan_auto_claim_storage: true
  delegate_to: localhost

Explanation:

  • vsan_auto_claim_storage: true: This option automatically claims available storage devices for vSAN, simplifying storage management and reducing the need for manual intervention.
  • datacenter_name: DC0: Specifies the datacenter where the cluster is located. This can be dynamically set based on your environment.
  • cluster_name: "{{ cluster_name }}": The name of the cluster where vSAN is enabled, which can be dynamically specified using variables.

Why Use Ansible for vSAN Management?

Automating vSAN configuration with Ansible has several advantages:

  1. Consistency: Automating the process ensures that vSAN is enabled with consistent configurations across all clusters.
  2. Efficiency: Tasks like enabling vSAN, configuring automatic rebalancing, and claiming storage can be completed in a single execution, saving valuable time.
  3. Scalability: With Ansible, you can easily apply vSAN settings across multiple clusters or datacenters with minimal changes to your playbook.
  4. Version Control: As Ansible playbooks are plain text files, they can be stored in version control systems like Git, enabling better collaboration and auditability.

Example Playbook for Full vSAN Configuration

Here’s an example of an Ansible playbook that includes all three tasks mentioned above for enabling and configuring vSAN:

---
- name: Configure vSAN on VMware Cluster
  hosts: localhost
  gather_facts: no
  tasks:
    - name: Enable vSAN
      community.vmware.vmware_cluster_vsan:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        datacenter_name: '{{ datacenter_name }}'
        cluster_name: '{{ cluster_name }}'
        enable: true
      delegate_to: localhost

    - name: Enable vSAN and automatic rebalancing
      community.vmware.vmware_cluster_vsan:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        datacenter_name: '{{ datacenter_name }}'
        cluster_name: '{{ cluster_name }}'
        enable: true
        advanced_options:
          automatic_rebalance: true
      delegate_to: localhost

    - name: Enable vSAN and claim storage automatically
      community.vmware.vmware_cluster_vsan:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        datacenter_name: '{{ datacenter_name }}'
        cluster_name: '{{ cluster_name }}'
        enable: true
        vsan_auto_claim_storage: true
      delegate_to: localhost

This playbook will enable vSAN, configure automatic rebalancing, and automatically claim storage in a VMware environment.

Best Practices for Using Ansible to Configure vSAN

  1. Secure Credentials: Always store your sensitive credentials, like vcenter_username and vcenter_password, in Ansible Vault to keep them safe.
  2. Test in Staging: Always test your playbooks in a staging environment before deploying them to production.
  3. Use Variables for Flexibility: Use variables for settings like datacenter_name and cluster_name so that the playbook can be easily reused across different environments.
  4. Monitor Performance: After enabling vSAN, monitor your storage and performance to ensure that the configuration meets your requirements, especially when enabling advanced options like automatic rebalancing.

Ashutosh Dixit

I am currently working as a Senior Technical Support Engineer with VMware Premier Services for Telco. Before this, I worked as a Technical Lead with Microsoft Enterprise Platform Support for Production and Premier Support. I am an expert in High-Availability, Deployments, and VMware Core technology along with Tanzu and Horizon.

Leave a Reply