csmart.swift

エクスプレス

これは、OpenStack Swift クラスターを設定および管理する役割です。 現在、Proxy、Account、Container、Object のすべての Swift サービスを実行している PACO ノードをサポートしています。

主な作業内容:

  • Swift ノードの準備(SELinux の設定と SSH アクセスの確認を含む)
  • リポジトリの追加とパッケージのインストール
  • ロギング、rsyncd、および memcached などの依存サービスの設定
  • プロキシ VIPs のフェイルオーバー用の keepalived の設定
  • Swift PACO サービスの設定
  • 初期アカウント、コンテナ、オブジェクトリングの作成
  • 各ノードのディスクを準備し、リングに従ってフォーマットとマウント
  • リングのビルドと配布
  • 分散の設定
  • 以下のような簡単な運用タスク:
    • リングの更新と配布
    • PACO サービスの再設定
    • 分散およびレプリケーションレポートの生成

要件

事前に存在する CentOS 8 Stream ノードのインベントリ(ネットワークが設定されているもの)。 クラスターにはすべての Swift ノードを管理するための管理用ボックスが必要です(swift_admin グループに含まれる)。 もし別の管理ホストがない場合は、Swift ノードの1つを管理ボックスとして使用できます。

仮想 Swift クラスターを構築する場合は、https://github.com/csmart/ansible-role-virt-infra にある csmart.virt_infra Ansible ロールの使用を検討してください。

サンプルインベントリとプレイブックは、csmart.virt_infracsmart.swift の両方に対して、https://github.com/csmart/virt-infra-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 の 4 番目のオクテット)

    • 各プロキシノードは、VIP IP の 4 番目のオクテットを優先順位に従って列挙する必要があります。例えば、デフォルトの外向きサブネット 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

以下は、必要なグループを持つ3ノードの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

このロールには、各タイプのタスク用のタグも含まれているので、すべてまたは特定のタグに対して1つ以上のプレイブックを作成することができます。

---
- 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.swift
ライセンス
gpl-3.0
ダウンロード
99
所有者
Just another Linux guy.