chrifey.ontap_volume_nfs_share
ontap-volume-nfs-share
Diese Rolle dient zur Verwaltung eines NFS-Exports, bestehend aus:
- Flexvol mit Junction-Pfad
- Qtree
- Export-Richtlinie für das Qtree
Sie sollte auch ein Beispiel geben, wie groupvars gehandhabt werden können, um mehrere Volumes/Systeme zu verwalten.
Sicherheitsmodus
In einigen Diskussionen kamen wir zu dem Punkt, dass wir eine Art „Sicherheitsmodus“ einführen möchten, um das unbeabsichtigte Entfernen von Volumes oder Qtrees zu verhindern.
Wir haben grundlegend zwei Aufgaben-Dateien erstellt (no_safemode.yml und safemode.yml), die basierend auf einer Umgebungsvariable ausgewählt werden, die Sie an den Befehl ansible-playbook
übergeben können.
Beispiel:
ansible-playbook -i inventory site.yml -e safemode=true
Wenn Sie ein Volume oder Qtree auf absent
setzen, fragt der Sicherheitsmodus nach einer Bestätigung für jedes zu löschende Volume/Qtree. Ohne gesetzte Sicherheitsmodus-Variable wird keine Bestätigung angefragt und das Volume/Qtree wird gelöscht.
Anforderungen
- Ansible muss installiert sein.
- NetApp Lib
So starten Sie:
Installieren Sie Ansible mit dem Paketmanager yum (RHEL, CentOS):
yum install ansible python-pip
pip install netapp-lib
Alternativ (installieren Sie python-virtualenv, z.B. mit yum, und verwenden Sie pip in diesem virtualenv):
yum install python-virtualenv
virtualenv ansible
source ansible/bin/activate
pip install ansible
pip install netapp-lib
Rollenvariablen
Wir empfehlen, groupvars zu erstellen, um umgebungsspezifische Parameter wie Anmeldeinformationen usw. festzulegen.
Zuerst erstellen Sie eine Inventardatei inventory/site/hosts
:
[netapp]
localhost netapp_user=USERNAME netapp_password=SECRET
Da wir Anmeldeinformationen in dieser Datei speichern, empfehlen wir dringend, diese Datei mit ansible-vault zu verschlüsseln.
Sie können die folgenden Befehle verwenden, um die Datei zu verschlüsseln:
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
Zweitens erstellen Sie eine Variablen-Datei, um Ihre Umgebung zu konfigurieren:
Das folgende Beispiel zeigt inventory/site/group_vars/all.yml
, das mit der Rolle ontap-volume-nfs-share
in diesem Repository verwendet werden soll:
# Umgebungsspezifische Variablen
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' }
Damit können Sie mehrere Volumes in einer groupvars-Datei verwalten (einfach mehr Zeilen in der Liste netapp_volumes oder netapp_qtrees hinzufügen). Sie könnten auch verschiedene „Standorte“ mit unterschiedlichen groupvars erstellen, z.B. für spezifische Anwendungen, die eine Untermenge von Volumes/Qtrees benötigen.
Abhängigkeiten
Es gibt keine abhängigen Rollen.
Beispiel-Playbook
Das folgende Beispiel zeigt ein einfaches Playbook, das die Rolle ontap-volume-nfs-share
nutzt:
---
- hosts: localhost
connection: local
gather_facts: no
roles:
- ontap-volume-nfs-share
Sie können das Playbook dann so ausführen (die Option --ask-vault-pass
fragt nach dem Passwort der zuvor verschlüsselten Datei):
ansible-playbook --ask-vault-pass -i inventory/site/hosts playbooks/site.yml
Lizenz
BSD
Autoreninformation
Basierend auf einem Hackathon mit:
- Sven Mundschenk
- Stefan Gaertner
- Steffen Knoth
- Christian Fey