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'
# 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
# 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
# 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
# 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}'
# ceph auth caps client.{ID} mon 'allow r, allow command "osd blacklist"' osd '{existing-OSD-user-capabilities}'
コンピュートノードに戻ります。
ssh {your-compute-node}
# ssh {your-compute-node}
シークレットの UUID を生成し、後で nova-compute
を設定するためにシークレットの UUID を保存します。
uuidgen > uuid-secret.txt
# 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
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
# 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