プロジェクトの設定¶
プロジェクトは、キー/値の設定オプションのセットを通じて設定することができます。 これらのオプションを設定する方法については、プロジェクトの設定 を参照してください。
キー/値の設定は名前空間化されています。 次のオプションが利用可能です:
プロジェクトの機能¶
プロジェクトの機能は、プロジェクト内でどのエンティティが隔離され、どのエンティティがdefaultプロジェクトから継承されるかを定義します。
feature.* オプションが true に設定されている場合、対応するエンティティはプロジェクト内で隔離されます。
注釈
特定のオプションを明示的に設定せずにプロジェクトを作成すると、このオプションは以下の表で与えられた初期値に設定されます。
ただし、feature.* オプションのいずれかを解除すると、初期値に戻るのではなく、デフォルト値に戻ります。
すべての feature.* オプションのデフォルト値は false です。
| Key: | features.images |
| Type: | bool |
| Default: |
|
| Initial value: |
|
この設定はイメージとイメージエイリアスの両方に適用されます。
| Key: | features.networks |
| Type: | bool |
| Default: |
|
| Initial value: |
|
| Key: | features.networks.zones |
| Type: | bool |
| Default: |
|
| Initial value: |
|
| Key: | features.profiles |
| Type: | bool |
| Default: |
|
| Initial value: |
|
| Key: | features.storage.buckets |
| Type: | bool |
| Default: |
|
| Initial value: |
|
プロジェクトの制限¶
プロジェクトの制限は、プロジェクトに属するコンテナや VM が使用できるリソースの上限を定義します。
limits.* オプションによっては、プロジェクト内で許可されるエンティティの数に制限が適用されることがあります(たとえば limits.containers や limits.networks)。また、プロジェクト内のすべてのインスタンスのリソース使用量の合計値に制限が適用されることもあります(たとえば、 limits.cpu や limits.processes)。
後者の場合、制限は通常、各インスタンスに設定されている リソース制限 に適用されます(直接またはプロファイル経由で設定されている場合)、実際に使用されているリソースではありません。
たとえば、プロジェクトの limits.memory 設定を 50GB に設定した場合、プロジェクトのインスタンスで定義されたすべての limits.memory 設定キーの個別の値の合計が 50GB 未満に保たれます。
limits.memory 設定の合計が 50GB を超えるインスタンスを作成しようとすると、エラーが発生します。
同様に、プロジェクトの limits.cpu 設定キーを 100 に設定すると、個々の limits.cpu 値の合計が 100 未満に保たれます。
プロジェクトの制限を使用する場合、以下の条件を満たす必要があります:
limits.*設定のいずれかを設定し、インスタンスに対応する設定がある場合、プロジェクト内のすべてのインスタンスに対応する設定が定義されている必要があります(直接またはプロファイル経由で設定)。 インスタンスの設定オプションについては リソース制限 を参照してください。CPUピンニング が有効になっている場合、CPUピンニング 設定は使用できません。 これは、プロジェクトで CPUピンニング を使用するためには、プロジェクト内の各インスタンスの CPUピンニング 設定を CPU の数、または CPU のセットや範囲ではなく、数値に設定する必要があることを意味します。
limits.memory設定は、パーセンテージではなく絶対値で設定する必要があります。
| Key: | limits.cpu |
| Type: | integer |
この値はプロジェクトのインスタンスに設定される個々のlimits.cpu設定の合計の最大値です。
| Key: | limits.disk |
| Type: | string |
この値はプロジェクトのすべてのインスタンスボリューム、カスタムボリューム、イメージで使用されるディスクスペース合計の最大値です。
| Key: | limits.disk.pool.POOL_NAME |
| Type: | string |
この値はすべてのインスタンスボリューム、カスタムボリューム、この特定のストレージプール上のプロジェクトのイメージで使用される総計のディスクスペースの最大値です。
| Key: | limits.memory |
| Type: | string |
この値はプロジェクトのインスタンスに設定される個々のlimits.memory設定の合計の最大値です。
| Key: | limits.processes |
| Type: | integer |
この値はプロジェクトのインスタンスに設定される個々のlimits.processes設定の合計の最大値です。
プロジェクトの制約¶
プロジェクトのインスタンスがセキュリティーに関連する機能(コンテナのネストや raw LXC 設定など)にアクセスできないようにするには、restricted 設定オプションを true に設定します。
その後、さまざまな restricted.* オプションを使用して、通常は restricted によってブロックされる個々の機能を選択し、プロジェクトのインスタンスで使用できるように許可できます。
たとえば、プロジェクトを制限し、すべてのセキュリティー関連機能をブロックしつつ、コンテナのネストを許可するには、次のコマンドを入力します:
incus project set <project_name> restricted=true
incus project set <project_name> restricted.containers.nesting=allow
セキュリティーに関連する各機能には、関連する restricted.* プロジェクト設定オプションがあります。
機能の使用を許可する場合は、その restricted.* オプションの値を変更してください。
ほとんどの restricted.* 設定は、block(デフォルト)または allow に設定できる二値スイッチです。
ただし、一部のオプションは、より細かい制御のために他の値をサポートしています。
注釈
restricted.* オプションを有効にするには、restricted 設定を true に設定する必要があります。
restricted が false に設定されている場合、restricted.* オプションを変更しても効果はありません。
すべての restricted.* キーを allow に設定することは、restricted 自体を false に設定することと同等です。
| Key: | restricted |
| Type: | bool |
| Default: |
|
restricted.*キーが有効になるにはこのオプションを有効にする必要があります。
制限を一時的に解除するには、関連するキーを削除する代わりにこのオプションを無効にできます。
| Key: | restricted.backups |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.cluster.groups |
| Type: | string |
設定された場合、このオプションはクラスタグループが指定されたクラスタグループ以外にターゲットするのを禁止します。
| Key: | restricted.cluster.target |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
allowに設定すると、このオプションはインスタンスの作成や移動時にクラスタメンバー(直接あるいはグループ経由で)のターゲットを許可します。
| Key: | restricted.containers.interception |
| Default: |
|
設定できる値はallow、block、fullです。
allowに設定すると、通常安全なインターセプションオプションは許可されます。
ファイルシステムのマウントはブロックされたままです。
| Key: | restricted.containers.nesting |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
allowに設定すると、インスタンスに対してsecurity.nestingをtrueに設定できます。
| Key: | restricted.containers.privilege |
| Type: | string |
| Default: |
|
設定できる値はunprivileged、isolated、allowです。
unprivilegedに設定すると、このオプションはsecurity.privilegedをtrueに設定するのを禁止します。isolatedに設定すると、このオプションはsecurity.privilegedとsecurity.idmap.isolatedをtrueに設定するのを禁止します。allowに設定すると、制限はありません。
| Key: | restricted.devices.disk |
| Type: | string |
| Default: |
|
設定できる値はallow、block、managedです。
blockに設定すると、このオプションはroot以外のすべてのディスクデバイスの使用を禁止します。managedに設定すると、このオプションはpool=が設定されいているディスクデバイスの使用のみを許可します。allowに設定すると、どのディスクデバイスを使えるかについて制限はありません。
| Key: | restricted.devices.disk.paths |
| Type: | string |
restricted.devices.diskがallowに設定された場合、このオプションはdiskデバイスにどのsourceを使用できるかを制御します。
source設定を制限するパスの接頭辞のカンマ区切りリストを指定します。
このオプションが空の場合、すべてのパスが許可されます。
| Key: | restricted.devices.gpu |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.infiniband |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.nic |
| Type: | string |
| Default: |
|
設定できる値はallow、block、managedです。
blockに設定すると、このオプションはすべてのネットワークデバイスの使用を禁止します。managedに設定すると、このオプションはnetwork=が設定されいているネットワークデバイスの使用のみを許可します。allowに設定すると、どのネットワークデバイスを使えるかについて制限はありません。
| Key: | restricted.devices.pci |
| Type: | string |
| Default: |
|
Possible values are allow or block.
| Key: | restricted.devices.proxy |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.unix-block |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.unix-char |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.unix-hotplug |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.devices.usb |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
| Key: | restricted.idmap.gid |
| Type: | string |
このオプションはインスタンスのraw.idmap設定内で許可されるホストのGIDの範囲を指定します。
| Key: | restricted.idmap.uid |
| Type: | string |
このオプションはインスタンスのraw.idmap設定内で許可されるホストのUIDの範囲を指定します。
| Key: | restricted.images.servers |
| Type: | string |
このプロジェクトでの利用を許可するイメージサーバーのドメインのカンマ区切りリスト。 このオプションが設定されない場合、すべてのイメージサーバーにアクセスできます。
| Key: | restricted.networks.access |
| Type: | string |
このプロジェクト内で使用できるネットワーク名のカンマ区切りリストを指定します。 このオプションを設定しない場合、すべてのネットワークが使用できます。
この設定はrestricted.devices.nic設定に依存することに注意してください。
| Key: | restricted.networks.integrations |
| Type: | string |
このプロジェクト内のネットワークで使用できるネットワーク統合のカンマ区切りリストを指定します。
| Key: | restricted.networks.subnets |
| Type: | string |
| Default: |
|
このプロジェクト内で使うために割り当てられるuplinkのネットワークからのネットワークサブネットのカンマ区切りリストを指定します。
<uplink>:<subnet>の形式で指定します。
| Key: | restricted.networks.uplinks |
| Type: | string |
このプロジェクト内のネットワークのuplinkとして使用できるネットワーク名のカンマ区切りリストを指定します。
| Key: | restricted.networks.zones |
| Type: | string |
| Default: |
|
このプロジェクト内で使用できるネットワークゾーン(あるいはその配下の何か)のカンマ区切りリストを指定します。
| Key: | restricted.snapshots |
| Type: | string |
| Default: |
|
| Key: | restricted.storage-pools.access |
| Type: | string |
このプロジェクト内で使えるストレージプール名のカンマ区切りリストを指定します。このオプションが未指定の場合すべてのストレージプールがアクセス可能です。
| Key: | restricted.virtual-machines.lowlevel |
| Type: | string |
| Default: |
|
設定できる値はallowかblockです。
allowと設定すると、raw.qemu、volatile.*、などの低レベルのVMオプションが使用できます。
プロジェクト固有の設定¶
プロジェクトに対していくつかの サーバー設定 オプションを上書きできます。 また、プロジェクトにユーザーメタデータを追加することができます。
| Key: | backups.compression_algorithm |
| Type: | string |
このプロジェクト内でバックアップに使用できる圧縮アルゴリズムを指定します。
設定できる値はbzip2、gzip、lz4、lzma、xz、zstd、noneです。
| Key: | images.auto_update_cached |
| Type: | bool |
| Key: | images.auto_update_interval |
| Type: | integer |
間隔を時間で指定します。
キャッシュされたイメージの更新の確認を無効化するには、このオプションを0に設定します。
| Key: | images.compression_algorithm |
| Type: | string |
設定できる値はbzip2、gzip、lz4、lzma、xz、zstd、noneです。
| Key: | images.default_architecture |
| Type: | string |
| Key: | images.remote_cache_expiry |
| Type: | integer |
使用していないキャッシュされたイメージが期限切れになる日数を指定します。
| Key: | network.hwaddr_pattern |
| Type: | string |
| Scope: | global |
クラスター内で使用するMACアドレステンプレート(例10:66:6a:xx:xx:xx)を指定します。
テンプレート内のxは0-fのランダムな文字に置き換えられます。
誕生日のパラドックスに注意してください!単独のxxはたった8個のアドレス、2つのxx:xxでは118個のアドレス、3つのxx:xx:xxでは1881個のアドレス、4つのxx:xx:xx:xxでは30084個のアドレスでで衝突の確率が10%あります。これを保護するガードレールは一切提供していません。