2
Como parte de la serie LVM hemos visto cómo exportar e importar volúmenes lógicos entre diferentes máquinas en el artículo anterior. En este artículo veremos cómo use ansible para automatizar la configuración del administrador de volumen lógico (LVM) en linux
Ansible es una herramienta de automatización simple y fácil de usar que ofrece diferentes módulos para trabajar con la administración de discos en Linux. Cuando tiene más máquinas para instalar y configurar el sistema operativo con la misma configuración, ansible es de gran utilidad. Un caso de uso particular que se me ocurre es cuando está creando un clúster en el que todos los servidores tienen el mismo espacio de almacenamiento y necesitan el mismo esquema de partición LVM.
La creación manual de un volumen lógico consta de 4 pasos.
- PASO 1: Inicialice la unidad como el volumen físico.
- PASO 2: Cree un grupo de volúmenes para el volumen físico.
- PASO 3: Cree el volumen lógico a partir del grupo de volúmenes.
- ETAPA 4: Formatee el volumen lógico y monte el sistema de archivos.
Para aprender cómo realizar los 4 pasos anteriores manualmente, eche un vistazo a nuestro artículo de introducción a LVM.
Guía de Linux Logical Volume Manager (LVM) para principiantes
Recopilación de información relacionada con el almacenamiento de Ansible Facts
Como primer paso, debe recopilar información relacionada con el disco para el host de destino. Esta es una tarea útil cuando desea decidir la asignación de espacio dinámicamente.
Puede hacerlo manualmente o usar el mecanismo de hechos ansible que recopila los hechos relacionados con el disco. El siguiente libro de jugadas recuperará la información relacionada con el disco del host de destino.
--- - name: LVM Setup hosts: localhost connection: local gather_facts: true tasks: - name: Collect stats for hardware ansible.builtin.setup: gather_subset: - hardware - name: Print the stat output for devices ansible.builtin.debug: var: hostvars[inventory_hostname].ansible_devices
El libro de jugadas anterior recopilará primero los detalles del hardware utilizando el configuración módulo. En la segunda tarea, la salida de ansible_devices
solo se imprimirá.
Además, puede aplicar todo tipo de filtros según sus requisitos para obtener datos específicos y calcular valores dinámicos para nuevas creaciones de particiones. Para examplela siguiente tarea imprimirá todos los dispositivos que comienzan con sd*
y su tamaño .
- name: Print the disk size only for sd disks ansible.builtin.debug: msg: "{{ ansible_devices[item].size }}" loop: "{{ ansible_devices.keys() | map('regex_search', 'sd.*') | select('string') | list }}"
Como solo tengo un disco, imprime el sda tamaño del disco
TASK [Print the disk size only for sd disks] ********************************************** ok: [localhost] => (item=sda) => { "msg": "931.51 GB" }
Guía de Ansible para crear LVM
Usaré el siguiente libro de jugadas para la demostración. Puede replicar el mismo código cambiando el nombre del disco y el tamaño de la partición según sus requisitos. Lo guiaré a través de cada tarea en el libro de jugadas con su salida en las secciones subsiguientes.
--- - name: LVM Testing hosts: localhost become: true gather_facts: False tasks: - name: Partition /dev/sdd disk community.general.parted: device: /dev/sdd number: 1 flags: [ lvm ] state: present part_end: 5GiB - name: Task for PV and VG community.general.lvg: vg: ostechnixlab pvs: /dev/sdd1 - name: Logical volume with 1GB size community.general.lvol: vg: ostechnixlab lv: labpart1 size: 1G - name: Format the volume with ext4 fs community.general.filesystem: fstype: ext4 dev: /dev/ostechnixlab/labpart1 - name: Target directory under /opt/ ansible.builtin.file: path: /opt/lvm_test/ state: directory mode: '0755' - name: mount the lv on /data1 ansible.posix.mount: path: /opt/lvm_test/ src: /dev/ostechnixlab/labpart1 fstype: ext4 state: mounted
Crear volumen usando el módulo Parted
Como primer paso, debe crear un volumen desde el disco sin formato con lvm como el tipo . Puede usar todo el disco o particionar más el disco y usar solo esa partición en particular para LVM.
Usos de Ansible módulo separado para crear particiones. Esto es similar a comando separado en Linux que se utiliza para configurar particiones de dispositivos.
Aviso: parted
en un módulo comunitario que se envía con el community.general
espacio de nombres Si no tiene módulos comunitarios instalados, instálelos usando el siguiente comando.
$ ansible-galaxy collection install community.general
tengo un disco /dev/sdd
con 15GB en tamaño.
$ lsblk /dev/sdd NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdd 8:48 0 15G 0 disk
Voy a crear una partición que es /dev/sdd1
de tamaño 5GB . La siguiente tarea utiliza el parted
modulo a particionar /dev/sdd1
de 5GB con lvm como tipo .
- dispositivo: Proporcione el nombre del dispositivo de bloque como
/dev/sda
,/dev/sdb
etc. - número: El número de particiones que se crearán. Aquí se establece como 1 .
- banderas: Establece el tipo de su partición. En este caso lo es LVM .
- estado: Establecer el estado en “
present
“ creará la partición. - parte_fin: Tamaño de la partición.
- name: Partition /dev/sdd disk community.builtin.parted: device: /dev/sdd number: 1 flags: [lvm] state: present part_end: 5GiB
A continuación se muestra el resultado de la tarea anterior.
ejecutar el lsblk
comando para comprobar la partición.
$ lsblk /dev/sdd NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdd 8:48 0 15G 0 disk └─sdd1 8:49 0 5G 0 part
Crear volumen físico y grupo de volúmenes
El siguiente paso es inicializar /dev/sdd1
como volumen físico y agregarlo a un grupo de volúmenes. Utilizar el modulo lvg que también se mantiene bajo el espacio de nombres community.general.
La siguiente tarea se inicializará /dev/sdd1
como volumen físico y agréguelo al grupo de volúmenes denominado ostechnixlab .
- name: Task for PV and VG lvg: vg: ostechnixlab pvs: /dev/sdd1
A continuación se muestra el resultado de la tarea anterior.

También puede inicializar varios volúmenes físicos y agregarlos al grupo de volúmenes.
- name: Task for PV and VG lvg: vg: ostechnixlab pvs: /dev/sdd1, /dev/sdd2, /dev/sdd3
También puede definir el tamaño de la extensión. De forma predeterminada, está configurado para 4 MB .
- name: Task for PV and VG lvg: vg: ostechnixlab pvs: /dev/sdd1, /dev/sdd2, /dev/sdd3 pesize: 8
Puede verificar el estado del grupo de volúmenes ejecutando el siguiente comando.
$ sudo vgs ostechnixlab VG #PV #LV #SN Attr VSize VFree ostechnixlab 1 0 0 wz--n- <5.00g <5.00g
Crear volumen lógico
El siguiente paso es crear el volumen lógico utilizando el mantenimiento de la comunidad módulo lvol .
En la siguiente tarea, estoy creando un volumen lógico llamado lbapart1
del grupo de volumen ostechnixlab
. El tamaño total del grupo de volúmenes es 5GB y el volumen lógico se establece en 1 GB en tamaño.
- name: Logical volume with 1GB size community.general.lvol: vg: ostechnixlab lv: labpart1 size: 1G
A continuación se muestra el resultado de la tarea anterior.

ejecutar el lvs
Comando para comprobar el volumen creado.
$ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert labpart1 ostechnixlab -wi-a----- 1.00g
Monte el volumen lógico
En este paso, montará el volumen lógico para comenzar a consumirlo. En primer lugar, debe formatear el volumen con cualquier tipo de sistema de archivos compatible y montar el volumen.
Dividiré los pasos anteriores en 3 tareas.
- La primera tarea formateará el volumen con el
ext4
sistema de archivos Para esto módulo de sistema de archivos debe utilizarse, que es parte de la “community.general
“ espacio de nombres - La segunda tarea utilizará el módulo de archivo para crear un directorio con el volumen que se montará. Para ello se debe utilizar el módulo de archivo que forma parte del “
ansible.builtin
“ espacio de nombres - La tercera tarea montará el volumen formateado en el sistema de archivos que creamos en la segunda tarea. Para esto, el módulo de montaje debe utilizarse, que es parte de la “
ansible.posix
“ espacio de nombres
- name: Format the volume with ext4 fs community.general.filesystem: fstype: ext4 dev: /dev/ostechnixlab/labpart1 - name: Target directory under /opt/ ansible.builtin.file: path: /opt/lvm_test/ state: directory mode: '0755' - name: mount the lv on /data1 ansible.posix.mount: path: /opt/lvm_test/ src: /dev/ostechnixlab/labpart1 fstype: ext4 state: mounted
A continuación se muestra el resultado de las tareas anteriores.

Puedes usar el mount
y/o df
Comando para verificar el tipo de sistema de archivos y el estado de montaje.
$ mount | grep -i labpart1 /dev/mapper/ostechnixlab-labpart1 on /opt/lvm_test type ext4 (rw,relatime)
$ df -h /opt/lvm_test/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/ostechnixlab-labpart1 974M 24K 907M 1% /opt/lvm_test
Conclusión
En este artículo hemos visto cuáles son los diferentes módulos de ansible que podemos utilizar para crear particiones, volumen lógico y montar el sistema de archivos. Puede crear un rol dedicado para LVM y reutilizarlo dinámicamente en diferentes entornos simplemente pasando argumentos.