Akrog.storage
Ansibleストレージロール
Ansibleストレージロールは、ベンダーに依存しない抽象化を提供し、インフラ管理者にストレージソリューションの自動化とプロビジョニングされたリソースへのアクセスを可能にします。
ストレージロールは、80を超えるブロックストレージドライバーをサポートしており、追加のストレージプロバイダーをサポートするために拡張することも可能です。
この抽象化のおかげで、サポートされているストレージ配列でタスクを自動化できる再利用可能なプレイブックを書くことができるようになりました。
これにより、開発者やアプリケーションオーナーがLinuxインスタンスから直接任意のインフラ上のストレージボリュームを管理および使用できるようになります。
ロールは複数のストレージタイプに対する抽象化を提供します:
- ブロックストレージ
- 共有ファイルシステム
- オブジェクトストレージ
ユースケース:
- 次のためのボリュームの自動プロビジョニング:
- ベアメタルホスト
- virt Ansibleモジュールで管理されるVM
- oVirt、OpenStack、VMWareで管理されるVM
- クラウドプロバイダー
- プロビジョニングされたボリュームの定期的なスナップショットを取得
- プロビジョニングのためのゴールデンボリュームを使用(ボリュームクローン)
- プロビジョニングされたボリュームのサイズ変更
- プロビジョニングされたボリュームのQoSを定義
- バックエンド間のボリューム移行を実行
機能
ストレージロールは現在、ブロックストレージをサポートしており、以下の操作を抽象化しています。
- バックエンドのステータスを取得
- ボリュームを作成
- ボリュームを削除
- ボリュームを拡張
- ボリュームをアタッチ
- ボリュームをデタッチ
はじめに
最初のストレージプレイブックを実行するための手順を紹介します。
例としてのプレイブックを実行すると、システムにパッケージがインストールされ、システムにVGが提供されます。これらのコマンドはVM内で実行するか、IP変数の値をVMのIPに変更することをお勧めします。
LVM VGを設定した後、プレイブックはボリュームを作成し、iSCSI経由でノードにアタッチし、アタッチ先のデバイスを表示し、デタッチし、最後にボリュームを削除します。
プレイブックを実行するために、まずロールをインストールする必要があります。
$ ansible-galaxy install Akrog.storage
ロールをインストールしたら、ロールを実行できます。
プレイブックを実行する方法はたくさんありますが、ここではシンプルさのために、ローカルホストでユーザーを使用して実行する方法を示します。sshd
が有効になっており、~/.ssh/authorized_keys
ファイルに自分の~/.ssh/id_rsa
が含まれ、ユーザーがパスワードなしでsudo
コマンドを実行できることを前提とします。
$ IP=127.0.0.1
$ cd ~/.ansible/roles/Akrog.storage/example
$ ansible-playbook -i $IP, lvm-backend.yml
ほとんどの実際のユースケースとは異なり、例では実際のストレージシステムを使用していません。プレイブックは最初にデバイスループでバックアップされたLVMボリュームグループ(VG)を作成します。このVGを使用してボリュームを作成し、LIOターゲットを使用してiSCSI経由でエクスポートできます。
概念
プロバイダーは、ストレージハードウェア上で操作を実行するためのAnsibleモジュールです。各プロバイダーは、特定のベンダーのハードウェアを少なくとも1つサポートする必要がありますが、デフォルトのプロバイダーのように、複数のハードウェアをサポートすることも可能です。
これらのプロバイダーの機能を公開するために、ストレージロールはバックエンドの概念を導入しています。バックエンドは、特定のストレージハードウェアを管理するためにプロバイダーに特定の設定を渡すことで構築されます。
ストレージロールには、コントローラーとコンシューマーの2種類のノードがあります。
コントローラーはストレージ管理ネットワークにアクセスでき、ストレージハードウェアの管理インターフェースに接続して制御する方法を知っています。例えば、ボリュームを作成してエクスポートするためです。
コンシューマーは、プロビジョニングしたリソースに接続するためにストレージデータネットワークにアクセスするだけで済みます。例えば、iSCSI経由でボリュームに接続するためです。
使用法と設定の詳細については、ドキュメントを参照してください: https://ansible-storage.readthedocs.io/en/docs/