Mi primer PlayBook de Ansible con ONTAP
Ansible es una herramienta que permite la gestión de configuraciones, la provisión, el despliegue y la orquestación. Ansible no requiere de la instalación de agentes o clientes en los equipos que gestiona y está basado en ficheros YAML.
Desde la versión 2.3 de Ansible, varios módulos de NetApp ya son parte del proyecto de forma nativa. Dentro del proyecto existen módulos para las cabinas de NetApp ONTAP, E-series y SolidFire. Para ver más información es interesante acceder a este contenido https://www.ansible.com/integrations/infrastructure/netapp. Los detalles de los módulos están en este enlace http://docs.ansible.com/ansible/latest/list_of_storage_modules.html#netapp que proporcionan toda la información de los input necesarios para ejecutar cada módulo.
Instalación
En el caso de las cabinas ONTAP, los requisitos necesarios para trabajar con Ansible son:
- Una cabina física o virtual con ONTAP versión 8.3 o superior
- Ansible 2.3
- Paquete netapp-lib (2015.9.25)
Para instalarlo simplemente hay que ejecutar los siguientes comandos:
$ pip install ansible --user
$ pip install netapp-lib --user
En mi caso ha sido necesario instalar algun paquete adicional. Los siguientes comandos muestran que son necesarios más paquetes y la instalación de los mismos.
$ python -c "from netapp_lib.api.zapi import zapi" && echo $?
$ python -c "from netapp_lib.api.zapi import errors" && echo $?
$ pip install lxml
$ pip install oslo_log --ignore-installed --user
Ejemplo
Y el siguiente código YAML muestra el ejemplo básico para la creación un SVM (Storage Virtual Machine) sobra una cabina ONTAP. El código está actualizado en el repositorio de GitHub:
---
# This playbook deploys a NetApp SVM on ONTAP
- name: example netapp ontap
hosts: localhost
gather_facts: no
connection: local
vars:
netapp_hostname: 192.168.0.10
netapp_username: admin
netapp_password: password
tasks:
- name: SVM Manager
na_cdot_svm:
state: present
name: ansibleVServer
root_volume: vol1
root_volume_aggregate: aggrSATA_n1
root_volume_security_style: ntfs
hostname: ""
username: ""
password: ""
- name: Volume Manager
na_cdot_volume:
state: present
name: ansibleVolume
aggregate_name: aggrSATA_n1
size: 20
size_unit: mb
vserver: ansibleVServer
hostname: ""
username: ""
password: ""
La ejecución de este código YAML simplemente se realizaría con el siguiente comando:
$ ansible-playbook example_netapp_ontap.yml
[WARNING]: Could not match supplied host pattern, ignoring: all
[WARNING]: provided hosts list is empty, only localhost is available
PLAY [example netapp ontap] ********************************************
TASK [SVM Manager] *****************************************************
changed: [localhost]
TASK [Volume Manager] **************************************************
changed: [localhost]
PLAY RECAP *************************************************************
Y se puede revisar que se ha creado satisfactoriamente el SVM en ONTAP.
cluster1::> vserver show -vserver *ansible*
Admin Operational Root
Vserver Type Subtype State State Volume Aggregate
----------- ------- ---------- ---------- ----------- ---------- ----------
ansibleVServer data default running running vol1 aggrSATA_n1