Es posible cambiar la configuración por defecto del clúster generada en la fase 2 (consulte Descripción de las fases de DeepSea). Por ejemplo, quizás sea necesario cambiar los valores de red o el software que se instala en el nodo de administración por defecto. Lo primero se puede llevar a cabo modificando la versión actualizada de Pillar después de la fase 2, mientras que lo segundo se realiza normalmente creando un archivo sls
personalizado y añadiéndolo a Pillar. Los detalles se describen en las secciones siguientes.
En esta sección se muestran varias tareas para las que es necesario añadir o cambiar un archivo sls
propio. Normalmente, tal procedimiento se utiliza si es preciso cambiar el proceso de distribución por defecto.
Los archivos personalizados .sls se encuentran en el mismo subdirectorio que los archivos .sls de DeepSea. Para evitar que se sobrescriban con los que se añadan después a partir del paquete de DeepSea, añada el prefijo custom-
a su nombre.
Si lleva a cabo una tarea específica fuera del proceso de distribución de DeepSea y, por lo tanto, necesita omitir ese paso, cree un archivo "no operation" siguiendo este ejemplo:
Cree /srv/salt/ceph/time/disabled.sls
con el contenido siguiente y guárdelo:
disable time setting: test.nop
Edite /srv/pillar/ceph/stack/global.yml
, añada la línea siguiente y guárdelo:
time_init: disabled
Para verificar, actualice Pillar y ejecute el paso:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.time admin.ceph: Name: disable time setting - Function: test.nop - Result: Clean Summary for admin.ceph ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1
El ID de tarea "disable time setting" (inhabilitar valor de hora) puede ser cualquier mensaje único dentro de un archivo sls
. Cómo evitar conflictos de ID especificando descripciones exclusivas.
Si necesita sustituir el comportamiento por defecto de un paso específico por otro personalizado, cree un archivo sls
personalizado con el contenido de sustitución.
Por defecto, /srv/salt/ceph/pool/default.sls
crea una imagen rbd denominada "demo". En nuestro ejemplo, no queremos crear esta imagen, ya que necesitamos dos imágenes: "archive1" y "archive2".
Cree /srv/salt/ceph/pool/custom.sls
con el contenido siguiente y guárdelo:
wait: module.run: - name: wait.out - kwargs: 'status': "HEALTH_ERR"1 - fire_event: True archive1: cmd.run: - name: "rbd -p rbd create archive1 --size=1024"2 - unless: "rbd -p rbd ls | grep -q archive1$" - fire_event: True archive2: cmd.run: - name: "rbd -p rbd create archive2 --size=768" - unless: "rbd -p rbd ls | grep -q archive2$" - fire_event: True
El módulo wait se pondrá en pausa hasta que el clúster de Ceph no tenga el estado | |
El comando |
Para llamar al archivo personalizado recién creado en lugar del archivo por defecto, debe editar el archivo /srv/pillar/ceph/stack/ceph/cluster.yml
, añadir la línea siguiente y guardarlo:
pool_init: custom
Para verificar, actualice Pillar y ejecute el paso:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
La creación de repositorios o imágenes requiere disponer de autorización suficiente. El minion admin.ceph
dispone de un anillo de claves de administración.
Otra opción consiste en cambiar la variable presente en /srv/pillar/ceph/stack/ceph/roles/master.yml
. Mediante este archivo, se reduce la cantidad de datos de Pillar para otros minions.
En ocasiones, puede ser preciso que un paso específico lleve a cabo algunas tareas adicionales. No se recomienda modificar el archivo de estado relacionado, ya que complicaría una futura actualización. En su lugar, para llevar a cabo las tareas adicionales cree un archivo independiente idéntico al que se describe en la Sección 7.1.2, “Sustitución de un paso de la distribución”.
Asigne un nombre descriptivo al nuevo archivo sls
. Por ejemplo, si necesita crear dos imágenes rbd además de la imagen demo, asigne al archivo el nombre archive.sls
.
Cree /srv/salt/ceph/pool/custom.sls
con el contenido siguiente y guárdelo:
include: - .archive - .default
En este ejemplo, Salt va a crear las imágenes archive y la imagen demo. El orden no importa en este ejemplo. Para cambiar el orden, invierta las líneas después de la directiva include:
.
Puede añadir la línea include directamente en archive.sls
y, así, se crearán todas las imágenes. No obstante, con independencia de dónde se coloque la línea include, Salt procesa primero los pasos del archivo incluido. Aunque este comportamiento puede anularse con las declaraciones requires y order, al usar un archivo independiente que incluya a los demás se garantiza el orden y se reducen las posibilidades de que haya confusiones.
Edite /srv/pillar/ceph/stack/ceph/cluster.yml
, añada la línea siguiente y guárdelo:
pool_init: custom
Para verificar, actualice Pillar y ejecute el paso:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
Si necesita añadir un paso de distribución completamente independiente, cree tres archivos nuevos: un archivo sls
para ejecutar el comando, un archivo de organización y un archivo personalizado que adapte el paso nuevo a los pasos de la distribución original.
Por ejemplo, si necesita ejecutar logrotate
en todos los minions como parte de la fase de preparación:
Cree primero un archivo sls
e incluya el comando logrotate
.
logrotate
en todos los minions de Salt #
Cree un directorio /srv/salt/ceph/logrotate
.
Cree /srv/salt/ceph/logrotate/init.sls
con el contenido siguiente y guárdelo:
rotate logs: cmd.run: - name: "/usr/sbin/logrotate /etc/logrotate.conf"
Verifique que el comando funciona en un minion:
root@master #
salt 'admin.ceph' state.apply ceph.logrotate
Dado que el archivo de organización debe ejecutarse antes que los demás pasos de preparación, añádalo a la fase 0 Prep:
Cree /srv/salt/ceph/stage/prep/logrotate.sls
con el contenido siguiente y guárdelo:
logrotate: salt.state: - tgt: '*' - sls: ceph.logrotate
Verifique que el archivo de organización funciona:
root@master #
salt-run state.orch ceph.stage.prep.logrotate
El último archivo es el personalizado, que añade el paso adicional a los pasos originales:
Cree /srv/salt/ceph/stage/prep/custom.sls
con el contenido siguiente y guárdelo:
include: - .logrotate - .master - .minion
Sustituya el comportamiento por defecto. Edite /srv/pillar/ceph/stack/global.yml
, añada la siguiente línea y guarde el archivo:
stage_prep: custom
Compruebe que la fase 0 funciona:
root@master #
salt-run state.orch ceph.stage.0
global.yml
?
Se prefiere el archivo global.yml
en lugar del archivo cluster.yml
porque durante la fase prep ningún minion pertenece al clúster de Ceph y este no tiene acceso a ninguno de los valores de cluster.yml
.
Durante la fase 0 (consulte Descripción de las fases de DeepSea para obtener más información sobre las fase de DeepSea), el master y los minions de Salt pueden reiniciarse opcionalmente debido a los paquetes recién actualizados, por ejemplo kernel, requiere que se reinicie el sistema.
El comportamiento por defecto es instalar las nuevas actualizaciones disponibles y no reiniciar los nodos incluso en caso de actualizaciones del kernel.
Es posible cambiar el comportamiento de actualización/reinicio por defecto de la fase 0 de DeepSea añadiendo o cambiando las opciones stage_prep_master
y stage_prep_minion
en el archivo /srv/pillar/ceph/stack/global.yml
. _prep_master
define el comportamiento de la fase del master Salt y stage_prep_minion
define el comportamiento de todos los minions. Los parámetros disponibles son los siguientes:
Instalar las actualizaciones sin reiniciar.
Instalar las actualizaciones y reiniciar después de la actualización.
Reiniciar sin instalar las actualizaciones.
No instalar las actualizaciones ni reiniciar.
Por ejemplo, para evitar que los nodos del clúster instalen actualizaciones y reinicien, edite /srv/pillar/ceph/stack/global.yml
y añada las líneas siguientes:
stage_prep_master: default-no-update-no-reboot stage_prep_minion: default-no-update-no-reboot
Los valores de stage_prep_master
corresponden a los nombres de archivo ubicados en /srv/salt/ceph/stage/0/master
, mientras que los valores de stage_prep_minion
corresponden a archivos de /srv/salt/ceph/stage/0/minion
:
root@master #
ls -l /srv/salt/ceph/stage/0/master default-no-update-no-reboot.sls default-no-update-reboot.sls default-update-reboot.sls [...]root@master #
ls -l /srv/salt/ceph/stage/0/minion default-no-update-no-reboot.sls default-no-update-reboot.sls default-update-reboot.sls [...]
Después de completada la fase 2, puede ser necesario cambiar la configuración descubierta. Para ver los valores actuales, ejecute:
root@master #
salt target pillar.items
El resultado de la configuración por defecto para un único minion es normalmente similar al siguiente:
---------- available_roles: - admin - mon - storage - mds - igw - rgw - client-cephfs - client-radosgw - client-iscsi - mds-nfs - rgw-nfs - master cluster: ceph cluster_network: 172.16.22.0/24 fsid: e08ec63c-8268-3f04-bcdb-614921e94342 master_minion: admin.ceph mon_host: - 172.16.21.13 - 172.16.21.11 - 172.16.21.12 mon_initial_members: - mon3 - mon1 - mon2 public_address: 172.16.21.11 public_network: 172.16.21.0/24 roles: - admin - mon - mds time_server: admin.ceph time_service: ntp
Los valores mencionados anteriormente están distribuidos en varios archivos de configuración. La estructura de directorio con estos archivos se define en el directorio /srv/pillar/ceph/stack/stack.cfg
. Normalmente, los archivos siguientes describen el clúster:
/srv/pillar/ceph/stack/global.yml
: el archivo afecta a todos los minions del clúster de Salt.
/srv/pillar/ceph/stack/ceph/cluster.yml
: el archivo afecta a todos los minions del clúster de Ceph denominado ceph
.
/srv/pillar/ceph/stack/ceph/roles/función.yml
: afecta a todos los minions que tienen asignada la función específica en el clúster ceph
.
/srv/pillar/ceph/stack/cephminions/ID_DE_MINION/yml
: afecta a ese minion particular.
Hay un árbol de directorios paralelo donde se almacena la configuración por defecto en /srv/pillar/ceph/stack/default
. No cambie los valores aquí presentes, ya que se sobrescriben.
El procedimiento habitual para cambiar la configuración recopilada es el siguiente:
Busque la ubicación del elemento de configuración que debe cambiar. Por ejemplo, si necesita cambiar los valores relacionados con el clúster, como la red del clúster, edite el archivo /srv/pillar/ceph/stack/ceph/cluster.yml
.
Guarde el archivo.
Para verificar los cambios, ejecute:
root@master #
salt target saltutil.pillar_refresh
y a continuación:
root@master #
salt target pillar.items
Puesto que el direccionamiento de red IPv4 es prevalente, debe habilitar IPv6 como una personalización. DeepSea no cuenta con detección automática de direccionamiento IPv6.
Para configurar IPv6, defina las variables public_network
y cluster_network
del archivo /srv/pillar/ceph/stack/global.yml
en subredes IPv6 válidas. Por ejemplo:
public_network: fd00:10::/64 cluster_network: fd00:11::/64
A continuación, ejecute la fase 2 de DeepSea y verifique que la información de red coincide con la configuración. La fase 3 generará ceph.conf
con los indicadores necesarios.
Ceph no admite la pila dual: no es posible ejecutar Ceph simultáneamente en IPv4 e IPv6. La validación de DeepSea rechazará que haya una discordancia entre public_network
y cluster_network
o dentro de cualquiera de las variables. En el ejemplo siguiente se producirá un error de validación.
public_network: "192.168.10.0/24 fd00:10::/64"
fe80::/10 link-local
Procure no usar direcciones fe80::/10 link-local
. Todas las interfaces de red tienen una dirección fe80
asignada y requieren un calificador de interfaz para el enrutamiento adecuado. Asigne direcciones IPv6 asignadas al sitio o utilice direcciones fd00::/8
. Son parte de ULA y no se pueden enrutar globalmente.