swift
Swift
Это роль для настройки и управления кластерами OpenStack Swift. В настоящее время она поддерживает узлы PACO, на которых работают все службы Swift: Proxy, Account, Container и Object.
Она будет:
- Подготавливать узлы Swift, включая настройку SELinux и обеспечение доступа по SSH
- Добавлять репозитории и устанавливать пакеты
- Настраивать зависимые службы, такие как логирование, rsyncd и memcached
- Настраивать keepalived для переключения в случае сбоя VIP-адресов прокси
- Настраивать службы Swift PACO
- Создавать начальные аккаунты, контейнеры и объекты
- Подготавливать диски на каждом узле, форматировать и монтировать в соответствии с кольцами
- Создавать и распределять кольца
- Настраивать дисперсию
- Выполнять простые операционные задачи, такие как:
- Обновление и распределение колец
- Перенастройка служб PACO
- Генерация отчетов о дисперсии и репликации
Требования
Наличие предварительного списка узлов CentOS 8 Stream с настроенной сетью. Кластер требует административный узел (включен в группу swift_admin
), с которого управляются все узлы Swift. Это может быть один из ваших узлов Swift, если у вас нет отдельного административного хоста.
Если вы собираете виртуальный кластер Swift, рассмотрите использование роли Ansible csmart.virt_infra
по адресу https://github.com/csmart/ansible-role-virt-infra.
Примеры инвентаря и сценариев можно найти по адресу https://github.com/csmart/virt-infra-swift для csmart.virt_infra
и csmart.swift
.
Переменные роли
Эта роль имеет ряд переменных по умолчанию, которые распределены по отдельным файлам в папке defaults/main/
. Они включают общие настройки для кластера Swift, а также значения по умолчанию для конкретных служб 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
Обязательные глобальные переменные, которые пользователь должен определить, включают:
swift_hash_suffix
- суффикс хеша кластера, после его установки не следует изменять- значение по умолчанию
07b4ef9c-2e01-4ea2-a109-5ffc5273225f
- значение по умолчанию
swift_hash_prefix
- префикс хеша кластера, после его установки не следует изменять- значение по умолчанию
f9175259-ace0-48bb-af9d-e7ac505b89d2
- значение по умолчанию
swift_outward_subnet
- маршрутизируемая подсеть CIDR для внешних соединений (для узлов прокси)- значение по умолчанию
203.0.113.0/24
- значение по умолчанию
swift_cluster_subnet
- подсеть CIDR для связи в кластере- значение по умолчанию
192.0.2.0/24
- значение по умолчанию
swift_replication_subnet
- подсеть CIDR для репликации (может совпадать с кластером)- значение по умолчанию
198.51.100.0/24
- значение по умолчанию
Обязательные переменные, специфичные для узлов, которые пользователь должен определить, включают:
swift_outward_ip
- IP-адрес в общей сети- например,
203.0.113.11
- например,
swift_cluster_ip
- IP-адрес в сети кластера- например,
192.0.2.11
- например,
swift_replication_ip
- IP-адрес в сети репликации- например,
198.51.100.11
- например,
swift_vips
- список VIP-адресов прокси, 4-й октет IPКаждый узел прокси должен указать 4-й октет VIP-адреса в порядке предпочтения. Например, исходя из стандартной внешней подсети
203.0.113.0/24
, вот узел, который хочет VIP203.0.113.111
,203.0.113.112
и203.0.113.113
.swift_vips: - 111 - 112 - 113
swift_rings_disks
- список словарей, определяющих, какие диски использовать для каких колецДиски каждого узла должны включать путь и вес для кольца. Например, вот SCSI-диск, который будет использоваться для объектов, и NVMe, который будет использоваться для как аккаунтов, так и контейнеров.
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
Зависимости
Нет.
Пример сценария
Репозиторий virt-infra-swift
по адресу https://github.com/csmart/virt-infra-swift предоставляет набор примеров сценариев и образец инвентаря.
Ваш инвентарь должен включать следующие группы:
swift
(илиall
)swift_admin
swift_proxy
swift_account
swift_container
swift_object
Вот пример инвентаря для кластера PACO Swift из трех узлов с необходимыми группами.
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]:
После того как у вас будет базовый инвентарь, создание базового сценария должно быть простым.
---
- hosts: swift
tasks:
- include_role:
name: csmart.swift
Выполнение сценария запустит всю роль и стандартный набор задач в порядке.
ansible-playbook -i inventory/ site.yml
Роль также включает теги для каждого типа задачи, поэтому вы можете создать один или несколько сценариев для всех или конкретных тегов.
---
- 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
Затем запустите сценарий с конкретными тегами, например, только для перенастройки служб аккаунтов.
ansible-playbook -i inventory/ site.yml --tags account
Лицензия
GPLv3+
Информация об авторе
Крис Смарт https://blog.christophersmart.com
Define and manage guests and networks on a KVM host with Ansible
ansible-galaxy install csmart/ansible-role-swift