2.2. Ceph クライアント認証の設定
Ceph monitor ノードから、Cinder、Cinder Backup、および Glance の新しいユーザーを作成します。
# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' # ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
client.cinder
、client.cinder-backup
、および client.glance
のキーリングを適切なノードに追加し、それらの所有権を変更します。
# ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring # ssh {your-cinder-volume-server} chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring # ceph auth get-or-create client.cinder-backup | ssh {your-cinder-backup-server} tee /etc/ceph/ceph.client.cinder-backup.keyring # ssh {your-cinder-backup-server} chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring # ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring # ssh {your-glance-api-server} chown glance:glance /etc/ceph/ceph.client.glance.keyring
nova-compute
を実行しているノードには、nova-compute
プロセスのキーリングファイルが必要です。
# ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} tee /etc/ceph/ceph.client.cinder.keyring
nova-compute
を実行しているノードは、libvirt
に client.cinder
ユーザーの秘密鍵を保存する必要もあります。libvirt
プロセスでは、Cinder からブロックデバイスを接続中にクラスターにアクセスする必要があります。nova-compute
を実行しているノードに秘密鍵の一時コピーを作成します。
# ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key
exclusive-lock
機能を使用する Ceph Block Device イメージがストレージクラスターに含まれている場合には、すべての Ceph Block Device ユーザーにクライアントをブラックリストに登録するパーミッションがあるようにしてください。
# ceph auth caps client.{ID} mon 'allow r, allow command "osd blacklist"' osd '{existing-OSD-user-capabilities}'
コンピュートノードに戻ります。
# ssh {your-compute-node}
シークレットの UUID を生成し、後で nova-compute
を設定するためにシークレットの UUID を保存します。
# uuidgen > uuid-secret.txt
すべてのコンピュートノードで UUID は必要ありません。ただし、プラットフォームの整合性からは、同じ UUID を維持する方が適切です。
次に、コンピュートノードで秘密鍵を libvirt
に追加し、キーの一時コピーを削除します。
cat > secret.xml <<EOF <secret ephemeral='no' private='no'> <uuid>`cat uuid-secret.txt`</uuid> <usage type='ceph'> <name>client.cinder secret</name> </usage> </secret> EOF
# virsh secret-define --file secret.xml # virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml