chrifey.ontap_volume_nfs_share
ontap-volume-nfs-share
Este rol está diseñado para gestionar una exportación NFS, que consiste en:
- flexvol con ruta de unión
- qtree
- política de exportación en qtree
También debe dar un ejemplo de cómo se pueden manejar las groupvars para gestionar múltiples volúmenes/sistemas.
Modo Seguro
Durante algunas discusiones, llegamos a la conclusión de que nos gustaría introducir algún tipo de "modo seguro" para prevenir la eliminación no intencionada de volúmenes o qtrees.
Básicamente, creamos dos archivos de tareas (no_safemode.yml y safemode.yml) que se eligen según una variable de entorno que puedes pasar al comando ansible-playbook
.
Ejemplo:
ansible-playbook -i inventory site.yml -e safemode=true
Si especificas un volumen o qtree como ausente
, el modo seguro pedirá una confirmación para cada volumen/qtree que se eliminará. Sin la variable de modo seguro establecida, no pedirá confirmación y eliminará el volumen/qtree.
Requisitos
- Se necesita tener Ansible instalado.
- NetApp Lib
Cómo empezar:
Instala ansible con el administrador de paquetes yum (RHEL, CentOS):
yum install ansible python-pip
pip install netapp-lib
Alternativa (instalar python-virtualenv, por ejemplo, con yum y usar pip dentro de este virtualenv):
yum install python-virtualenv
virtualenv ansible
source ansible/bin/activate
pip install ansible
pip install netapp-lib
Variables del Rol
Sugerimos crear groupvars para especificar los parámetros específicos de tu entorno, por ejemplo, credenciales, ...
Primero, crea un archivo de inventario inventory/site/hosts
:
[netapp]
localhost netapp_user=USERNAME netapp_password=SECRET
Dado que almacenamos credenciales de inicio de sesión en este archivo, sugerimos encarecidamente cifrar este archivo con ansible-vault.
Puedes usar los siguientes comandos para cifrar el archivo:
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
Segundo, crea un archivo de variables para configurar tu entorno:
El siguiente ejemplo muestra inventory/site/group_vars/all.yml
que se utilizará con el rol ontap-volume-nfs-share
en este repositorio:
# Variables específicas del entorno
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' }
Con esto puedes gestionar múltiples volúmenes en un solo archivo de groupvars (solo agrega más líneas en la lista de netapp_volumes o netapp_qtrees). También podrías crear diferentes "sitios" con diferentes groupvars, por ejemplo, para aplicaciones específicas que necesitan un subconjunto de volúmenes/qtrees.
Dependencias
No hay roles dependientes.
Ejemplo de Playbook
El siguiente ejemplo muestra un playbook simple que utiliza el rol ontap-volume-nfs-share
:
---
- hosts: localhost
connection: local
gather_facts: no
roles:
- ontap-volume-nfs-share
Luego puedes ejecutar el playbook así (la opción --ask-vault-pass
solicita la contraseña del archivo cifrado previamente):
ansible-playbook --ask-vault-pass -i inventory/site/hosts playbooks/site.yml
Licencia
BSD
Información del Autor
Basado en un hackathon con:
- Sven Mundschenk
- Stefan Gaertner
- Steffen Knoth
- Christian Fey
ansible-galaxy install chrifey.ontap_volume_nfs_share