csmart.swift
Swift
To jest rola do zakupu i zarządzania klastrami OpenStack Swift. Obecnie obsługuje węzły PACO, na których działają wszystkie usługi Swift: Proxy, Konto, Kontener i Obiekt.
Rola ta:
- Przygotowuje węzły Swift, w tym ustawia SELinux i zapewnia dostęp SSH
- Dodaje repozytoria i instaluje pakiety
- Konfiguruje usługi zależne, takie jak logowanie, rsyncd i memcached
- Konfiguruje keepalived dla przełączania VIP-ów proxy
- Konfiguruje usługi Swift PACO
- Tworzy początkowe pierścienie kont, kontenerów i obiektów
- Przygotowuje dyski na każdym węźle, formatuje i montuje zgodnie z pierścieniami
- Buduje i dystrybuuje pierścienie
- Konfiguruje rozproszenie
- Wykonuje proste zadania operacyjne, takie jak:
- Aktualizacja i dystrybucja pierścieni
- Ponowna konfiguracja usług PACO
- Generowanie raportów o rozproszeniu i replikacji
Wymagania
Potrzebna jest inwentarz istniejących węzłów CentOS 8 Stream z skonfigurowaną siecią.
Klastrowi potrzebny jest serwer administracyjny (w grupie swift_admin
), z którego zarządzane są wszystkie węzły Swift. Może to być jeden z Twoich węzłów Swift, jeśli nie masz osobnego hosta administracyjnego.
Jeśli zamierzasz zbudować wirtualny klaster Swift, rozważ użycie roli Ansible csmart.virt_infra
z https://github.com/csmart/ansible-role-virt-infra.
Przykładowy inwentarz i książki do gry można znaleźć na https://github.com/csmart/virt-infra-swift dla obu csmart.virt_infra
i csmart.swift
.
Zmienne roli
Ta rola ma kilka domyślnych zmiennych, które są podzielone na oddzielne pliki w defaults/main/
.
Zawierają one wspólne ustawienia dla klastra Swift oraz domyślne ustawienia dla konkretnych usług Swift.
- 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
Wymagane zmienne globalne, które użytkownik musi zdefiniować, to:
swift_hash_suffix
- sufiks hash klastra, po ustawieniu nie powinien być zmieniany- domyślna wartość to
07b4ef9c-2e01-4ea2-a109-5ffc5273225f
- domyślna wartość to
swift_hash_prefix
- prefiks hash klastra, po ustawieniu nie powinien być zmieniany- domyślna wartość to
f9175259-ace0-48bb-af9d-e7ac505b89d2
- domyślna wartość to
swift_outward_subnet
- routowalny CIDR dla zewnętrznych połączeń (dla węzłów proxy)- domyślna wartość to
203.0.113.0/24
- domyślna wartość to
swift_cluster_subnet
- subnet CIDR komunikacji klastra- domyślna wartość to
192.0.2.0/24
- domyślna wartość to
swift_replication_subnet
- subnet CIDR replikacji (może być taki sam jak klaster)- domyślna wartość to
198.51.100.0/24
- domyślna wartość to
Wymagane zmienne specyficzne dla węzłów, które użytkownik musi zdefiniować, to:
swift_outward_ip
- IP w sieci zewnętrznej- na przykład,
203.0.113.11
- na przykład,
swift_cluster_ip
- IP w sieci klastra- na przykład,
192.0.2.11
- na przykład,
swift_replication_ip
- IP w sieci replikacji- na przykład,
198.51.100.11
- na przykład,
swift_vips
- lista VIP-ów proxy, 4. oktet IPKażdy węzeł proxy powinien wymienić 4. oktet VIP IP w kolejności preferencji. Na przykład, na podstawie domyślnego subnetu zewnętrznego
203.0.113.0/24
, oto węzeł, który chce VIP-ów203.0.113.111
,203.0.113.112
i203.0.113.113
.swift_vips: - 111 - 112 - 113
swift_rings_disks
- lista słowników definiujących, które dyski używać dla jakich pierścieniDyski każdego węzła powinny zawierać ścieżkę i wagę dla pierścienia. Na przykład, oto dysk SCSI do użycia dla obiektów oraz NVMe do użycia zarówno dla konta, jak i kontenera.
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
Zależności
Brak.
Przykładowa książka do gry
Repozytorium virt-infra-swift
na https://github.com/csmart/virt-infra-swift oferuje zestaw przykładowych książek do gry oraz inwentarzy.
Twój inwentarz powinien zawierać następujące grupy:
swift
(luball
)swift_admin
swift_proxy
swift_account
swift_container
swift_object
Oto przykład inwentarza dla trzywęzłowego klastra PACO Swift z wymaganymi grupami.
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]:
Gdy masz podstawowy inwentarz, tworzenie podstawowej książki do gry powinno być proste.
---
- hosts: swift
tasks:
- include_role:
name: csmart.swift
Wykonanie książki do gry uruchomi całą rolę i domyślny zestaw zadań w odpowiedniej kolejności.
ansible-playbook -i inventory/ site.yml
Rola zawiera także tagi dla każdego typu zadania, dzięki czemu możesz tworzyć jedną lub więcej książek do gry dla wszystkich lub określonych tagów.
---
- 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
Następnie uruchom książkę do gry z określonymi tagami, na przykład, aby tylko ponownie skonfigurować usługi konta.
ansible-playbook -i inventory/ site.yml --tags account
Licencja
GPLv3+
Informacje o autorze
Chris Smart https://blog.christophersmart.com
Define and manage guests and networks on a KVM host with Ansible
ansible-galaxy install csmart.swift