chrifey.ontap_volume_nfs_share
partage-nfs-volume-ontap
Ce rôle est destiné à gérer un export NFS, consistant en :
- flexvol avec chemin de jonction
- qtree
- politique d'exportation sur qtree
Il devrait également donner un exemple de la manière dont les variables de groupe peuvent être gérées pour gérer plusieurs volumes/systèmes.
Mode de sécurité
Lors de quelques discussions, nous avons décidé d'introduire un "mode de sécurité" pour éviter toute suppression involontaire de volumes ou de qtrees.
Nous avons essentiellement créé deux fichiers de tâches (no_safemode.yml et safemode.yml) qui sont choisis en fonction d'une variable d'environnement que vous pouvez passer à la commande ansible-playbook
.
Exemple :
ansible-playbook -i inventory site.yml -e safemode=true
Si vous spécifiez qu'un volume ou un qtree doit être absent
, le mode de sécurité demandera une confirmation pour chaque volume/qtree qui sera supprimé. Sans la variable de mode de sécurité définie, il ne demandera pas de confirmation et supprimera le volume/qtree.
Exigences
- Ansible doit être installé.
- NetApp Lib
Comment commencer :
Installez Ansible avec le gestionnaire de paquets yum (RHEL, CentOS) :
yum install ansible python-pip
pip install netapp-lib
alternativement (installez python-virtualenv, par exemple avec yum, et utilisez pip dans cet environnement virtuel) :
yum install python-virtualenv
virtualenv ansible
source ansible/bin/activate
pip install ansible
pip install netapp-lib
Variables de rôle
Nous vous conseillons de créer des variables de groupe pour spécifier vos paramètres spécifiques à l'environnement, par exemple les identifiants, ...
Commencez par créer un fichier d'inventaire inventory/site/hosts
:
[netapp]
localhost netapp_user=USERNAME netapp_password=SECRET
Puisque nous stockons les identifiants de connexion dans ce fichier, nous vous recommandons fortement de le crypter avec ansible-vault
Vous pouvez utiliser les commandes suivantes pour crypter le fichier :
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
Ensuite, créez un fichier de variables pour configurer votre environnement :
L'exemple suivant montre inventory/site/group_vars/all.yml
à utiliser avec le rôle partage-nfs-volume-ontap
dans ce dépôt :
# Variables spécifiques à l'environnement
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' }
Avec cela, vous pouvez gérer plusieurs volumes dans un fichier de variables de groupe (il suffit d'ajouter plus de lignes dans la liste netapp_volumes ou netapp_qtrees). Vous pourriez également créer différents "sites" avec des variables de groupe différentes, par exemple pour des applications spécifiques qui nécessitent un sous-ensemble de volumes/qtrees.
Dépendances
Il n'y a pas de rôles dépendants.
Exemple de Playbook
L'exemple suivant montre un playbook simple utilisant le rôle partage-nfs-volume-ontap
:
---
- hosts: localhost
connection: local
gather_facts: no
roles:
- partage-nfs-volume-ontap
Vous pouvez alors exécuter le playbook comme ceci (les options --ask-vault-pass
demandent le mot de passe du fichier crypté précédemment) :
ansible-playbook --ask-vault-pass -i inventory/site/hosts playbooks/site.yml
Licence
BSD
Informations sur l'auteur
Basé sur un hackathon avec :
- Sven Mundschenk
- Stefan Gaertner
- Steffen Knoth
- Christian Fey