Learn about the Ansible inventory
Before you begin deployment, make sure you understand how to use Ansible to configure and deploy the BeeGFS on NetApp solution using the second generation BeeGFS building block design.
The Ansible inventory defines the configuration for file and block nodes and represents the BeeGFS file system you want to deploy. The inventory includes hosts, groups, and variables describing the desired BeeGFS file system. Sample inventories can be downloaded from NetApp E-Series BeeGFS GitHub.
Ansible modules and roles
To apply the configuration described by the Ansible inventory, use the various Ansible modules and roles provided in the NetApp E-Series Ansible collection, in particular the BeeGFS HA 7.4 role (available from the NetApp E-Series BeeGFS GitHub) that deploys the end-to-end solution.
Each role in the NetApp E-Series Ansible collection is a complete end-to-end deployment of the BeeGFS on NetApp solution. The roles use the NetApp E-Series SANtricity, Host, and BeeGFS collections that allow you to configure the BeeGFS file system with HA (High Availability). You can then provision and map storage, and ensure the cluster storage is ready for use.
While in-depth documentation is provided with the roles, the deployment procedures describe how to use the role to deploy a NetApp Verified Architecture using the second generation BeeGFS building block design.
Although the deployment steps attempt to provide enough detail so that prior experience with Ansible is not a prerequisite, you should have some familiarity with Ansible and related terminology. |
Inventory layout for a BeeGFS HA cluster
Use the Ansible inventory structure to define a BeeGFS HA cluster.
Anyone with previous Ansible experience should be aware that the BeeGFS HA role implements a custom method of discovering which variables (or facts) apply to each host. This is required to simplify building an Ansible inventory that describes resources that can run on multiple servers.
An Ansible inventory typically consists of the files in host_vars
and group_vars
, and an inventory.yml
file that assigns hosts to specific groups (and potentially groups to other groups).
Don’t create any files with the content in this subsection, which is intended as an example only. |
Although this configuration is predetermined based on the configuration profile, you should have a general understanding of how everything is laid out as an Ansible inventory, as follows:
# BeeGFS HA (High Availability) cluster inventory. all: children: # Ansible group representing all block nodes: eseries_storage_systems: hosts: netapp01: netapp02: # Ansible group representing all file nodes: ha_cluster: children: meta_01: # Group representing a metadata service with ID 01. hosts: beegfs_01: # This service is preferred on the first file node. beegfs_02: # And can failover to the second file node. meta_02: # Group representing a metadata service with ID 02. hosts: beegfs_02: # This service is preferred on the second file node. beegfs_01: # And can failover to the first file node.
For each service, an additional file is created under group_vars
describing its configuration:
# meta_01 - BeeGFS HA Metadata Resource Group beegfs_ha_beegfs_meta_conf_resource_group_options: connMetaPortTCP: 8015 connMetaPortUDP: 8015 tuneBindToNumaZone: 0 floating_ips: - i1b: <IP>/<SUBNET_MASK> - i2b: <IP>/<SUBNET_MASK> # Type of BeeGFS service the HA resource group will manage. beegfs_service: metadata # Choices: management, metadata, storage. # What block node should be used to create a volume for this service: beegfs_targets: netapp01: eseries_storage_pool_configuration: - name: beegfs_m1_m2_m5_m6 raid_level: raid1 criteria_drive_count: 4 common_volume_configuration: segment_size_kb: 128 volumes: - size: 21.25 owning_controller: A
This layout allows the BeeGFS service, network, and storage configuration for each resource to be defined in a single place. Behind the scenes, the BeeGFS role aggregates the necessary configuration for each file and block node based on this inventory structure. For more information, see this blog post: NetApp accelerates deployment of HA for BeeGFS with Ansible.
The BeeGFS numerical and string node ID for each service is automatically configured based on the group name. Thus, in addition to the general Ansible requirement for group names to be unique, groups representing a BeeGFS service must end in a number that is unique for the type of BeeGFS service the group represents. For example, meta_01 and stor_01 are allowed, but metadata_01 and meta_01 are not. |