Implementare BeeGFS
L'implementazione e la gestione della configurazione implica l'esecuzione di uno o più playbook contenenti le attività che Ansible deve eseguire e portare il sistema nello stato desiderato.
Anche se tutte le attività possono essere incluse in un singolo playbook, per i sistemi complessi, ciò diventa rapidamente poco pratico da gestire. Ansible consente di creare e distribuire i ruoli come metodo per il packaging di playbook riutilizzabili e contenuti correlati (ad esempio: Variabili predefinite, attività e gestori). Per ulteriori informazioni, consultare la documentazione Ansible per "Ruoli".
I ruoli vengono spesso distribuiti come parte di un insieme Ansible contenente ruoli e moduli correlati. Pertanto, questi playbook importano principalmente solo diversi ruoli distribuiti nelle varie raccolte NetApp e-Series Ansible.
Attualmente, per implementare BeeGFS sono necessari almeno due building block (quattro nodi di file), a meno che un dispositivo di quorum separato non sia configurato come un interruttore a più livelli per mitigare eventuali problemi quando si stabilisce il quorum con un cluster a due nodi. |
-
Creare un nuovo
playbook.yml
archiviare e includere quanto segue:# BeeGFS HA (High Availability) cluster playbook. - hosts: eseries_storage_systems gather_facts: false collections: - netapp_eseries.santricity tasks: - name: Configure NetApp E-Series block nodes. import_role: name: nar_santricity_management - hosts: all any_errors_fatal: true gather_facts: false collections: - netapp_eseries.beegfs pre_tasks: - name: Ensure a supported version of Python is available on all file nodes. block: - name: Check if python is installed. failed_when: false changed_when: false raw: python --version register: python_version - name: Check if python3 is installed. raw: python3 --version failed_when: false changed_when: false register: python3_version when: 'python_version["rc"] != 0 or (python_version["stdout"] | regex_replace("Python ", "")) is not version("3.0", ">=")' - name: Install python3 if needed. raw: | id=$(grep "^ID=" /etc/*release* | cut -d= -f 2 | tr -d '"') case $id in ubuntu) sudo apt install python3 ;; rhel|centos) sudo yum -y install python3 ;; sles) sudo zypper install python3 ;; esac args: executable: /bin/bash register: python3_install when: python_version['rc'] != 0 and python3_version['rc'] != 0 become: true - name: Create a symbolic link to python from python3. raw: ln -s /usr/bin/python3 /usr/bin/python become: true when: python_version['rc'] != 0 when: inventory_hostname not in groups[beegfs_ha_ansible_storage_group] - name: Verify any provided tags are supported. fail: msg: "{{ item }} tag is not a supported BeeGFS HA tag. Rerun your playbook command with --list-tags to see all valid playbook tags." when: 'item not in ["all", "storage", "beegfs_ha", "beegfs_ha_package", "beegfs_ha_configure", "beegfs_ha_configure_resource", "beegfs_ha_performance_tuning", "beegfs_ha_backup", "beegfs_ha_client"]' loop: "{{ ansible_run_tags }}" tasks: - name: Verify before proceeding. pause: prompt: "Are you ready to proceed with running the BeeGFS HA role? Depending on the size of the deployment and network performance between the Ansible control node and BeeGFS file and block nodes this can take awhile (10+ minutes) to complete." - name: Verify the BeeGFS HA cluster is properly deployed. ansible.builtin.import_role: name: netapp_eseries.beegfs.beegfs_ha_7_4
Questo playbook ne fa parte pre_tasks
Verificare che Python 3 sia installato sui nodi di file e che i tag Ansible forniti siano supportati. -
Utilizzare
ansible-playbook
Controlla con i file di inventario e playbook quando sei pronto per implementare BeeGFS.L'implementazione verrà eseguita completamente
pre_tasks
, Quindi richiedere la conferma dell'utente prima di procedere con l'effettiva implementazione di BeeGFS.Eseguire il seguente comando, regolando il numero di forche secondo necessità (vedere la nota seguente):
ansible-playbook -i inventory.yml playbook.yml --forks 20
In particolare per implementazioni di dimensioni maggiori, forks
si consiglia di ignorare il numero predefinito di forcelle (5) utilizzando il parametro per aumentare il numero di host configurati in parallelo da Ansible. Per ulteriori informazioni, vedere "Controllo dell'esecuzione del playbook". L'impostazione del valore massimo dipende dalla potenza di elaborazione disponibile sul nodo di controllo Ansible. L'esempio precedente di 20 è stato eseguito su un nodo di controllo virtuale Ansible con 4 CPU (Intel® Xeon® Gold 6146 CPU @ 3,20 GHz).A seconda delle dimensioni dell'implementazione e delle prestazioni di rete tra il nodo di controllo Ansible e i nodi di blocco e file BeeGFS, il tempo di implementazione potrebbe variare.