Adición o eliminación de hosts
Añada y elimine hosts en el clúster de almacenamiento utilizando el módulo ceph_orch_host en el playbook Ansible .
Requisitos previos
Un clúster de ejecución de IBM Storage Ceph.
Registre los nodos en la CDN y adjunte suscripciones.
Usuario Ansible con acceso SSH sin contraseña y sudo a todos los nodos del clúster de almacenamiento.
Instalación del paquete
cephadm-ansibleen el nodo de administración de Ansible .Los nuevos hosts tienen la clave SSH pública del clúster de almacenamiento.
Para obtener más información sobre cómo copiar las claves SSH públicas del clúster de almacenamiento en nuevos hosts, consulte Adición de hosts.
Procedimiento
Utilice el procedimiento siguiente para añadir nuevos hosts al clúster:
Inicie sesión en el nodo de administración de Ansible .
Vaya al directorio
/usr/share/cephadm-ansibleen el nodo de administración de Ansible :Ejemplo
[ansible@admin ~]$ cd /usr/share/cephadm-ansibleAñada los nuevos hosts y etiquetas al archivo de inventario Ansible .
Sintaxis
sudo vi INVENTORY_FILE NEW_HOST1 labels="['LABEL1', 'LABEL2']" NEW_HOST2 labels="['LABEL1', 'LABEL2']" NEW_HOST3 labels="['LABEL1']" [admin] ADMIN_HOST monitor_address=MONITOR_IP_ADDRESS labels="['ADMIN_LABEL', 'LABEL1', 'LABEL2']"Ejemplo
[ansible@admin cephadm-ansible]$ sudo vi hosts host02 labels="['mon', 'mgr']" host03 labels="['mon', 'mgr']" host04 labels="['osd']" host05 labels="['osd']" host06 labels="['osd']" [admin] host01 monitor_address= 10.10.128.68 labels="['_admin', 'mon', 'mgr']"Nota: Si ha añadido anteriormente los nuevos hosts al archivo de inventario Ansible y ha ejecutado el playbook de prevuelo en los hosts, vaya al paso 3.Ejecute el playbook de prevuelo con la opción
--limit:Sintaxis
ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=ibm" --limit NEWHOSTEjemplo
[ansible@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=ibm" --limit host02El playbook de preparación previa instala
podman,lvm2,chronyycephadmen el nuevo host. Una vez completada la instalación,cephadmreside en el directorio/usr/sbin/.Cree un playbook para añadir los nuevos hosts al clúster:
Sintaxis
sudo vi PLAYBOOK_FILENAME.yml --- - name: PLAY_NAME hosts: HOSTS_OR_HOST_GROUPS become: USE_ELEVATED_PRIVILEGES gather_facts: GATHER_FACTS_ABOUT_REMOTE_HOSTS tasks: - name: NAME_OF_TASK ceph_orch_host: name: "{{ ansible_facts[hostname] }}" address: "{{ ansible_facts[default_ipv4][address] }}" labels: "{{ labels }}" delegate_to: HOST_TO_DELEGATE_TASK_TO - name: NAME_OF_TASK when: inventory_hostname in groups[admin] ansible.builtin.shell: cmd: CEPH_COMMAND_TO_RUN register: REGISTER_NAME - name: NAME_OF_TASK when: inventory_hostname in groups[admin] debug: msg: "{{ REGISTER_NAME.stdout }}"Nota: De forma predeterminada, Ansible ejecuta todas las tareas en el host que coinciden con la líneahostsdel playbook. Los mandatos ceph orch deben ejecutarse en el host que contiene el conjunto de claves de administración y el archivo de configuración Ceph. Utilice la palabra clavedelegate_topara especificar el host de administración en el clúster.Ejemplo
[ansible@admin cephadm-ansible]$ sudo vi add-hosts.yml --- - name: add additional hosts to the cluster hosts: all become: true gather_facts: true tasks: - name: add hosts to the cluster ceph_orch_host: name: "{{ ansible_facts['hostname'] }}" address: "{{ ansible_facts['default_ipv4']['address'] }}" labels: "{{ labels }}" delegate_to: host01 - name: list hosts in the cluster when: inventory_hostname in groups['admin'] ansible.builtin.shell: cmd: ceph orch host ls register: host_list - name: print current list of hosts when: inventory_hostname in groups['admin'] debug: msg: "{{ host_list.stdout }}"En este ejemplo, el playbook añade los nuevos hosts al clúster y muestra una lista actual de hosts.
Ejecute el playbook para añadir hosts adicionales al clúster:
Sintaxis
ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILENAME.ymlEjemplo
[ansible@admin cephadm-ansible]$ ansible-playbook -i hosts add-hosts.yml
Utilice el procedimiento siguiente para eliminar hosts del clúster:
Inicie sesión en el nodo de administración de Ansible .
Vaya al directorio
/usr/share/cephadm-ansibleen el nodo de administración de Ansible :Ejemplo
[ansible@admin ~]$ cd /usr/share/cephadm-ansibleCree un playbook para eliminar un host o hosts del clúster:
Sintaxis
sudo vi PLAYBOOK_FILENAME.yml --- - name: NAME_OF_PLAY hosts: ADMIN_HOST become: USE_ELEVATED_PRIVILEGES gather_facts: GATHER_FACTS_ABOUT_REMOTE_HOSTS tasks: - name: NAME_OF_TASK ceph_orch_host: name: HOST_TO_REMOVE state: STATE - name: NAME_OF_TASK ceph_orch_host: name: HOST_TO_REMOVE state: STATE retries: NUMBER_OF_RETRIES delay: DELAY until: CONTINUE_UNTIL register: REGISTER_NAME - name: NAME_OF_TASK ansible.builtin.shell: cmd: ceph orch host ls register: REGISTER_NAME - name: NAME_OF_TASK debug: msg: "{{ REGISTER_NAME.stdout }}"Ejemplo
[ansible@admin cephadm-ansible]$ sudo vi remove-hosts.yml --- - name: remove host hosts: host01 become: true gather_facts: true tasks: - name: drain host07 ceph_orch_host: name: host07 state: drain - name: remove host from the cluster ceph_orch_host: name: host07 state: absent retries: 20 delay: 1 until: result is succeeded register: result - name: list hosts in the cluster ansible.builtin.shell: cmd: ceph orch host ls register: host_list - name: print current list of hosts debug: msg: "{{ host_list.stdout }}"
En este ejemplo, las tareas de playbook drenan todos los daemons en
host07, elimina el host del clúster y muestra una lista actual de hosts.Ejecute el playbook para eliminar el host del clúster:
Sintaxis
ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILENAME.ymlEjemplo
[ansible@admin cephadm-ansible]$ ansible-playbook -i hosts remove-hosts.yml
Verificación
Revise la salida de la tarea Ansible que muestra la lista actual de hosts en el clúster:
Ejemplo
TASK [print current hosts] ****************************************************************************************************** Friday 24 June 2022 14:52:40 -0400 (0:00:03.365) 0:02:31.702 *********** ok: [host01] => msg: |- HOST ADDR LABELS STATUS host01 10.10.128.68 _admin mon mgr host02 10.10.128.69 mon mgr host03 10.10.128.70 mon mgr host04 10.10.128.71 osd host05 10.10.128.72 osd host06 10.10.128.73 osd