csmart.swift

Swift

Este es un rol para configurar y gestionar clusters de OpenStack Swift. Actualmente soporta nodos PACO que ejecutan todos los servicios de Swift: Proxy, Account, Container y Object.

Lo que hará:

  • Preparar nodos Swift, incluyendo la configuración de SELinux y asegurando el acceso SSH.
  • Agregar repositorios e instalar paquetes.
  • Configurar servicios dependientes, como logging, rsyncd y memcached.
  • Configurar keepalived para el failover de VIPs de proxy.
  • Configurar servicios Swift PACO.
  • Crear los anillos iniciales de cuenta, contenedor y objeto.
  • Preparar discos en cada nodo, formatearlos y montarlos de acuerdo a los anillos.
  • Construir y distribuir los anillos.
  • Configurar dispersión.
  • Tareas operativas simples como:
    • Actualizar y distribuir los anillos.
    • Reconfigurar servicios PACO.
    • Generar informes de dispersión y replicación.

Requisitos

Un inventario de nodos CentOS 8 Stream preexistentes con su red configurada. El cluster requiere una máquina administrativa (incluida en el grupo swift_admin) desde la cual se gestionan todos los nodos Swift. Esta puede ser uno de tus nodos Swift, si no tienes un host administrador separado.

Si se va a construir un cluster Swift virtual, considera usar el rol de Ansible csmart.virt_infra en https://github.com/csmart/ansible-role-virt-infra.

Puedes encontrar un inventario de ejemplo y libros de jugadas en https://github.com/csmart/virt-infra-swift tanto para csmart.virt_infra como para csmart.swift.

Variables del Rol

Este rol tiene un número de variables predeterminadas, que están divididas en archivos individuales en defaults/main/. Estas incluyen configuraciones comunes para un cluster Swift, así como valores por defecto para servicios Swift específicos.

  • account-rings.yml
  • account.yml
  • container-rings.yml
  • container.yml
  • dispersion.yml
  • hash.yml
  • networks.yml
  • object-rings.yml
  • object.yml
  • packages.yml
  • proxy.yml
  • swift.yml
  • tempauth.yml

Las variables globales requeridas que el usuario debe definir incluyen:

  • swift_hash_suffix - el sufijo de hash del cluster, una vez establecido no debe cambiarse.
    • el valor por defecto es 07b4ef9c-2e01-4ea2-a109-5ffc5273225f
  • swift_hash_prefix - el prefijo de hash del cluster, una vez establecido no debe cambiarse.
    • el valor por defecto es f9175259-ace0-48bb-af9d-e7ac505b89d2
  • swift_outward_subnet - la subred CIDR enrutada para conexiones externas (para nodos proxy).
    • el valor por defecto es 203.0.113.0/24
  • swift_cluster_subnet - la subred CIDR de comunicación del cluster.
    • el valor por defecto es 192.0.2.0/24
  • swift_replication_subnet - subred CIDR de replicación (puede ser la misma que la del cluster).
    • el valor por defecto es 198.51.100.0/24

Las variables específicas de nodos que el usuario debe definir incluyen:

  • swift_outward_ip - IP en la red externa.

    • por ejemplo, 203.0.113.11
  • swift_cluster_ip - IP en la red del cluster.

    • por ejemplo, 192.0.2.11
  • swift_replication_ip - IP en la red de replicación.

    • por ejemplo, 198.51.100.11
  • swift_vips - lista de VIPs de proxy, 4º octeto de la IP.

    • Cada nodo proxy debe listar el 4º octeto de la IP VIP en orden de preferencia. Por ejemplo, basado en la subred externa por defecto de 203.0.113.0/24, aquí hay un nodo que quiere VIPs 203.0.113.111, 203.0.113.112 y 203.0.113.113.

      swift_vips:
        - 111
        - 112
        - 113
      
  • swift_rings_disks - lista de diccionarios que definen qué discos usar para qué anillo.

    • Los discos de cada nodo deben incluir la ruta y qué peso debe tener para un anillo. Por ejemplo, aquí hay un disco SCSI que se usará para objetos y un NVMe que se usará tanto para la cuenta como para el contenedor.

      swift_rings_disks:
        - disk:
            device: sdb
            rings:
            - name: account
              weight: 0
            - name: container
              weight: 0
            - name: object
              weight: 100
        - disk:
            device: nvme0n1
            rings:
            - name: account
              weight: 100
            - name: container
              weight: 100
            - name: object
              weight: 0
      

Dependencias

Ninguna.

Ejemplo de Libro de Jugadas

El repositorio virt-infra-swift en https://github.com/csmart/virt-infra-swift proporciona un conjunto de libros de jugadas de ejemplo y un inventario de muestra.

Tu inventario debe incluir los siguientes grupos:

  • swift (o all)
  • swift_admin
  • swift_proxy
  • swift_account
  • swift_container
  • swift_object

Aquí hay un inventario de ejemplo para un cluster Swift PACO de tres nodos con los grupos requeridos.

swift:
  hosts:
    swift-admin:
    swift-[01:03]:
  children:
    swift_admin:
      hosts:
        swift-admin:
    swift_proxy:
      hosts:
        swift-[01:03]:
    swift_account:
      hosts:
        swift-[01:03]:
    swift_container:
      hosts:
        swift-[01:03]:
    swift_object:
      hosts:
        swift-[01:03]:

Una vez que tengas un inventario básico, crear un libro de jugadas también debería ser simple.

---
- hosts: swift
  tasks:
    - include_role:
        name: csmart.swift

Ejecutar el libro de jugadas ejecutará todo el rol y el conjunto predeterminado de tareas, en orden.

ansible-playbook -i inventory/ site.yml

El rol también incluye etiquetas para cada tipo de tarea, por lo que podrías crear uno o más libros de jugadas para todas o etiquetas específicas.

---
- hosts: swift
  tasks:
    - include_role:
        name: csmart.swift
      tags:
        - account
        - common
        - config
        - container
        - disks
        - dispersion
        - hosts
        - keepalived
        - logging
        - memcached
        - object
        - packages
        - prep
        - proxy
        - rings
        - rsyncd
        - selinux
        - services
        - system
        - update

Luego ejecuta el libro de jugadas contra etiquetas específicas, por ejemplo, para solo reconfigurar los servicios de cuenta.

ansible-playbook -i inventory/ site.yml --tags account

Licencia

GPLv3+

Información del Autor

Chris Smart https://blog.christophersmart.com

Acerca del proyecto

Define and manage guests and networks on a KVM host with Ansible

Instalar
ansible-galaxy install csmart.swift
Licencia
gpl-3.0
Descargas
99
Propietario
Just another Linux guy.