csmart.swift

Swift

这是一个用于设置和管理 OpenStack Swift 集群的角色。 目前支持运行所有 Swift 服务的 PACO 节点:代理、帐户、容器和对象。

它将会:

  • 准备 Swift 节点,包括设置 SELinux 和确保 SSH 访问
  • 添加软件仓库并安装包
  • 配置依赖服务,比如日志记录、rsyncd 和 memcached
  • 配置 keepalived 以实现代理 VIP 的故障转移
  • 配置 Swift PACO 服务
  • 创建初始的帐户、容器和对象环
  • 准备每个节点的磁盘,按照环格式化和挂载
  • 构建和分发环
  • 配置扩散
  • 简单的操作任务,例如:
    • 更新和分发环
    • 重新配置 PACO 服务
    • 生成扩散和复制报告

要求

需要一份预先存在的 CentOS 8 Stream 节点清单,且其网络已配置好。 集群需要一个管理主机(包括在 swift_admin 组中),通过它管理所有 Swift 节点。 如果没有单独的管理主机,可以选用其中一个 Swift 节点作为管理主机。

如果构建虚拟的 Swift 集群,建议使用 csmart.virt_infra Ansible 角色,地址为 https://github.com/csmart/ansible-role-virt-infra。

示例清单和剧本可以在 https://github.com/csmart/virt-infra-swift 找到,适用于 csmart.virt_infracsmart.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 的列表,IP 的第四个八位字节

    • 每个代理节点应按优先级列出 VIP IP 的第四个八位字节。例如,基于默认的外部子网 203.0.113.0/24,一个节点想要 VIP 203.0.113.111203.0.113.112203.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+

作者信息

Chris Smart https://blog.christophersmart.com

关于项目

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

安装
ansible-galaxy install csmart.swift
许可证
gpl-3.0
下载
99
拥有者
Just another Linux guy.