適切な権限があれば、ユーザーはOpenStackMitakaの指定されたホスト/コンピューティングノードでVMを起動できます。 –availability_zone zone:hostを使用するだけです。 openstack server createの実行中の引数 以下に示すコマンド:
$openstack server create --image --flavor m1.tiny --key_name test --availability-zone nova:compute3
この操作を実行するには、 create:forced_host を使用して、指定したホストでインスタンスを起動できる役割を設定する必要があります。 policy.jsonのオプション nova構成フォルダーの下。デフォルトでは、このオプションは adminに対してのみ有効になっています 役割。
したがって、ファイル /etc/nova/policy.jsonを開きます ファイルを作成し、次の行を変更します:
"compute:create:forced_host": "is_admin:True",
に
"compute:create:forced_host": "",
次に、次のコマンドを使用して、有効な計算ホストを一覧表示します。
$ openstack hypervisor list +----+----------------------------+ | ID | Hypervisor Hostname | +----+----------------------------+ | 1 | compute2 | | 2 | compute3 | +----+----------------------------+
上記のリストにあるサーバーの名前を使用して、特定のホストにインスタンスを強制します。
$ openstack server create --flavor m1.small --image cirros --key-name mykey --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --security-group default --availability-zone nova:compute3 ubuntu1-on-compute3
Ok!待って。エラーメッセージ付きの上記のコマンド:
Policy doesn't allow os_compute_api:servers:create:forced_host to be performed. (HTTP 403) (Request-ID: req-993cd21d-e546-4e68-bad7-3ebc70bfd18a)
これは、管理者によって設定されたポリシーが、通常のユーザーが特定のノードにインスタンスをスケジュールすることを許可していないことを明確に示しています。解決策は、以下に示すように、通常のユーザーでも特定のホストにVMをスケジュールできるようにするルールを作成することです。
ファイル/etc/nova/policy.jsonを開きます コントローラノードでファイルを作成し、以下に変更します。
"os_compute_api:servers:create:forced_host": "rule:admin_api",
に
"os_compute_api:servers:create:forced_host": "",
そして、 nova-apiを再起動します 以下に示すサービス:
#/etc/init.d/nova-api restart
注:これらの変更は、計算ノードで行う必要はありません。
これで、通常のユーザーとして、特定のホストでVMを起動できるようになります。