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
  • swift_hash_prefix - prefiks hash klastra, po ustawieniu nie powinien być zmieniany
    • domyślna wartość to f9175259-ace0-48bb-af9d-e7ac505b89d2
  • swift_outward_subnet - routowalny CIDR dla zewnętrznych połączeń (dla węzłów proxy)
    • domyślna wartość to 203.0.113.0/24
  • swift_cluster_subnet - subnet CIDR komunikacji klastra
    • domyślna wartość to 192.0.2.0/24
  • swift_replication_subnet - subnet CIDR replikacji (może być taki sam jak klaster)
    • domyślna wartość to 198.51.100.0/24

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
  • swift_cluster_ip - IP w sieci klastra

    • na przykład, 192.0.2.11
  • swift_replication_ip - IP w sieci replikacji

    • na przykład, 198.51.100.11
  • swift_vips - lista VIP-ów proxy, 4. oktet IP

    • Każ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-ów 203.0.113.111, 203.0.113.112 i 203.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ścieni

    • Dyski 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 (lub all)
  • 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

O projekcie

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

Zainstaluj
ansible-galaxy install csmart.swift
Licencja
gpl-3.0
Pobrania
99
Właściciel
Just another Linux guy.