chrifey.ontap_volume_nfs_share

ontap-volume-nfs-share

此角色用于管理 NFS 导出,包括:

  • 带有连接路径的 flexvol
  • qtree
  • qtree 的导出策略

它还应提供如何处理 groupvars 的示例,以便管理多个卷/系统。

安全模式

在几次讨论中,我们达成了一个共识,即希望引入某种“安全模式”,以防止任何意外删除卷或 qtree。

我们基本上创建了两个任务文件(no_safemode.yml 和 safemode.yml),根据可以传递给 ansible-playbook 命令的环境变量来选择。

示例:

ansible-playbook -i inventory site.yml -e safemode=true

如果你指定一个卷或 qtree 为 absent,安全模式将要求对每个将要删除的卷/qtree 进行确认。如果未设置安全模式变量,它将不会要求确认并删除卷/qtree。

要求

开始的方法:

使用 yum 包管理器安装 ansible(RHEL, CentOS):

yum install ansible python-pip
pip install netapp-lib

另一个方法(安装 python-virtualenv,例如通过 yum 并在此虚拟环境中使用 pip):

yum install python-virtualenv
virtualenv ansible
source ansible/bin/activate
pip install ansible
pip install netapp-lib

角色变量

我们建议创建 groupvars 以指定您环境特定的参数,例如凭据等。

首先,创建一个清单文件 inventory/site/hosts

[netapp]
localhost netapp_user=USERNAME netapp_password=SECRET

由于我们在此文件中存储登录凭据,因此强烈建议使用 ansible-vault 加密此文件。

您可以使用以下命令加密文件:

ansible-vault encrypt --ask-vault-pass inventory/site/hosts
ansible-vault view --ask-vault-pass inventory/site/hosts
ansible-vault edit --ask-vault-pass inventory/site/hosts

其次,创建一个 vars 文件来配置您的环境:

以下示例展示了 inventory/site/group_vars/all.yml,可与该仓库中的 ontap-volume-nfs-share 角色一起使用:

# 环境特定变量
netapp_volumes:
  - { state: 'present', nacluster: 'cluster1.localdomain', vserver: 'vserver1', flexvol: 'flexvol1', space_guarantee: 'none', percent_snapshot_space: '5', aggregate: 'aggr1', size: '10', unit: 'gb', exportpolicy: 'default'  }

netapp_qtrees:
  - { state: 'present', nacluster: 'cluster1.localdomain', vserver: 'vserver1', qtree: 'qtree1', flexvol: 'flexvol1',
      exportpolicy: 'db-nodes', ro_rule: 'sys', rw_rule: 'sys', super_user_security: 'sys', client_match: '0.0.0.0/0' }

这样,您可以在一个 groupvars 文件中管理多个卷(只需在 netapp_volumes 或 netapp_qtrees 列表中添加更多行)。您还可以创建不同的“站点”,为需要子集卷/qtrees 的特定应用程序创建不同的 groupvars。

依赖关系

没有依赖角色。

示例剧本

以下示例展示了一个简单的剧本,利用 ontap-volume-nfs-share 角色:

---
- hosts: localhost
  connection: local
  gather_facts: no
  roles:
   - ontap-volume-nfs-share

然后您可以像这样运行剧本(选项 --ask-vault-pass 提示输入之前加密文件的密码):

ansible-playbook --ask-vault-pass -i inventory/site/hosts playbooks/site.yml

许可证

BSD

作者信息

基于一次黑客马拉松的结果:

  • Sven Mundschenk
  • Stefan Gaertner
  • Steffen Knoth
  • Christian Fey
关于项目

Role to configure nfs exports (volume, qtree, policy)

安装
ansible-galaxy install chrifey.ontap_volume_nfs_share
许可证
Unknown
下载
80
拥有者