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。
要求
- 需要安装 Ansible。
- 需要安装 NetApp Lib
开始的方法:
使用 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