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
- el valor por defecto es
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
- el valor por defecto es
swift_outward_subnet
- la subred CIDR enrutada para conexiones externas (para nodos proxy).- el valor por defecto es
203.0.113.0/24
- el valor por defecto es
swift_cluster_subnet
- la subred CIDR de comunicación del cluster.- el valor por defecto es
192.0.2.0/24
- el valor por defecto es
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
- el valor por defecto es
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
- por ejemplo,
swift_cluster_ip
- IP en la red del cluster.- por ejemplo,
192.0.2.11
- por ejemplo,
swift_replication_ip
- IP en la red de replicación.- por ejemplo,
198.51.100.11
- por ejemplo,
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 VIPs203.0.113.111
,203.0.113.112
y203.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
(oall
)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
Define and manage guests and networks on a KVM host with Ansible
ansible-galaxy install csmart.swift