Uso de Ansible para automatizar configuraciones de Logical Volume Manager

Ansible es una herramienta de automatización, configuración y administración de infraestructura. Mis artículos anteriores presentan Ansible y explican las funciones del sistema. En este artículo, muestro cómo configurar Logical Volume Manager (LVM) usando Ansible. La configuración de LVM con Ansible ayuda a los administradores de sistemas a realizar sus tareas de manera más eficiente y a dedicar menos tiempo al trabajo manual. Puede crear un libro de jugadas de Ansible que cree una partición e inicialice LVM.
Presentación de LVM
Como sabe, la partición principal no se puede ampliar ni reducir. Tal escenario puede crear problemas cuando necesita espacio adicional en un disco. Al usar LVM, puede superar este problema porque LVM le permite agregar y eliminar un nuevo disco en un volumen lógico. LVM es parte de la instalación predeterminada de Red Hat Enterprise Linux (RHEL) desde RHEL 7.
Aquí hay algunos elementos esenciales que debe comprender antes de usar LVM:
- fotovoltaica: volumen físico inicializado en disco, partición o archivo de bucle invertido. Cuando inicializa un PV, crea una etiqueta cuando se inicia el dispositivo.
- VG: El grupo de volúmenes es una colección de volúmenes lógicos (LV). Creas un VG dentro de un VP.
- LV—El volumen lógico es como una partición estándar en un disco. Puede crear múltiples LV en un solo VG. Puede cambiar el tamaño de un LV para que se ajuste al espacio requerido.
Crear una partitura
En RHEL 8, crea una partición usando la utilidad. le da la opción de crear una partición usando MS-DOS o una partición de tabla de particiones GUID (GPT). En Ansible, puede usar el módulo de partición.
En este ejemplo, considere /dev/vdb
como el nombre del disco. Cree dos particiones de 1 GB. Con solo usar el módulo Parted, puede crear particiones de cualquier tamaño.
Ejemplo:
---
- name: playbook for simple 1 GB partition
hosts: vm1.example.com
become: true
tasks:
- name: create partition
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
Ejecute este libro de jugadas usando:
$ ansible-playbook partition.yml
Puedes usar el lsblk
Comando para verificar que la partición ahora existe.
Inicializando LVM y Creando LV
Después de crear la partición, inicialice el LV. Para inicializar, primero debe crear un PV y un VG. Utilice el módulo Ansible para crear un PV y VG con un tamaño de extensión física (PE). El PE divide el VG en un tamaño fijo. De forma predeterminada, el tamaño del PE es de 4 MB. Puede cambiar el tamaño predeterminado al crear el VG. En general, un tamaño de PE más grande proporciona un mejor rendimiento.
Ejemplo:
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/vdb1
pesize: 16
- name: Install lvm2 dependency
package:
name: lvm2
state: present
La siguiente tarea crea el LV. El módulo crea LV. Al crear un LV, ofrece opciones como el nombre de VG, el tamaño y un nombre de LV.
En este ejemplo, un VG de 2 GB crea el primer LV con un tamaño de 1 GB.
Ejemplo:
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
Para usar este LV creado, debe montar esta partición en el sistema de archivos. Solo usted puede acceder a este LV para almacenar datos. En Ansible, use módulos para formatear cualquier dispositivo de bloque con filesystem
. Después de formatear, monta la partición en cualquier directorio. Puede usar el módulo en Ansible. Asegúrese de que el directorio (/data1
en este ejemplo) existe antes de que se ejecutara el libro de jugadas.
Ejemplo:
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Ejemplo: Libro de jugadas completo:
---
- name: playbook for simple 1 GB partition
hosts: localhost
become: true
tasks:
- name: create partition
parted:
device: /dev/nvme1n1
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
- name: Install lvm2 dependency
package:
name: lvm2
state: present
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/nvme1n1p1
pesize: 16
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Ejecute este libro de jugadas y verifique si su LV está creado o use el lvs
pedido.
Recuerda que una de las grandes características de LVM es que puedes extender el tamaño del LV. Manualmente puede utilizar el lvextend
pedido. En Ansible, puede usar el módulo para expandir el tamaño de.
Ejemplo:
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 2g
resizefs: true
force: yes
Utilizando el lvextend
comando o módulo le ayuda a ampliar su LV. En este volumen, utilice el resizefs
parámetro para expandir un sistema de archivos desmontado ubicado en el dispositivo.
Para reducir el tamaño de un LV, la sintaxis es la siguiente:
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 700m
shrink: yes
force: yes
Conclusión
Este artículo le mostró cómo configurar LVM usando un libro de jugadas simple de Ansible. En lugar de usar un libro de jugadas simple, puede crear uno, usando el mismo proceso y complementos que el anterior. Ansible lo ayuda a reducir las tareas manuales y aumentar la eficiencia de la configuración de LVM. El uso de los métodos descritos en este artículo simplifica las operaciones en varios nodos administrados.
Artículos de interés