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

Subir