プロジェクトの設定

プロジェクトは、キー/値の設定オプションのセットを通じて設定することができます。 これらのオプションを設定する方法については、プロジェクトの設定 を参照してください。

キー/値の設定は名前空間化されています。 次のオプションが利用可能です:

プロジェクトの機能

プロジェクトの機能は、プロジェクト内でどのエンティティが隔離され、どのエンティティがdefaultプロジェクトから継承されるかを定義します。

feature.* オプションが true に設定されている場合、対応するエンティティはプロジェクト内で隔離されます。

注釈

特定のオプションを明示的に設定せずにプロジェクトを作成すると、このオプションは以下の表で与えられた初期値に設定されます。

ただし、feature.* オプションのいずれかを解除すると、初期値に戻るのではなく、デフォルト値に戻ります。 すべての feature.* オプションのデフォルト値は false です。

features.images

プロジェクトに異なる組のイメージを使用するかどうか

Key: features.images
Type:

bool

Default:

false

Initial value:

true

この設定はイメージとイメージエイリアスの両方に適用されます。

features.networks

プロジェクトに異なる組のネットワークを使用するかどうか

Key: features.networks
Type:

bool

Default:

false

Initial value:

false

features.networks.zones

プロジェクトに異なる組のネットワークゾーンを使用するかどうか

Key: features.networks.zones
Type:

bool

Default:

false

Initial value:

false

features.profiles

プロジェクトに異なる組のプロファイルを使用するかどうか

Key: features.profiles
Type:

bool

Default:

false

Initial value:

true

features.storage.buckets

プロジェクトに異なる組のストレージバケットを使用するかどうか

Key: features.storage.buckets
Type:

bool

Default:

false

Initial value:

true

features.storage.volumes

プロジェクトに異なる組のストレージボリュームを使用するかどうか

Key: features.storage.volumes
Type:

bool

Default:

false

Initial value:

true

プロジェクトの制限

プロジェクトの制限は、プロジェクトに属するコンテナや VM が使用できるリソースの上限を定義します。

limits.* オプションによっては、プロジェクト内で許可されるエンティティの数に制限が適用されることがあります(たとえば limits.containerslimits.networks)。また、プロジェクト内のすべてのインスタンスのリソース使用量の合計値に制限が適用されることもあります(たとえば、 limits.cpulimits.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 設定は、パーセンテージではなく絶対値で設定する必要があります。

limits.containers

プロジェクト内で作成できるコンテナの最大数

Key: limits.containers
Type:

integer

limits.cpu

プロジェクト内で使用できるCPUの最大数

Key: limits.cpu
Type:

integer

この値はプロジェクトのインスタンスに設定される個々のlimits.cpu設定の合計の最大値です。

limits.disk

プロジェクトで使用できる最大のディスクスペース

Key: limits.disk
Type:

string

この値はプロジェクトのすべてのインスタンスボリューム、カスタムボリューム、イメージで使用されるディスクスペース合計の最大値です。

limits.disk.pool.POOL_NAME

このプール上のプロジェクトで使用される最大ディスクスペース

Key: limits.disk.pool.POOL_NAME
Type:

string

この値はすべてのインスタンスボリューム、カスタムボリューム、この特定のストレージプール上のプロジェクトのイメージで使用される総計のディスクスペースの最大値です。

limits.instances

プロジェクト内で作成できるインスタンスの最大数

Key: limits.instances
Type:

integer

limits.memory

プロジェクトで使えるホストのメモリの使用リミット

Key: limits.memory
Type:

string

この値はプロジェクトのインスタンスに設定される個々のlimits.memory設定の合計の最大値です。

limits.networks

プロジェクトが持てるネットワークの最大数

Key: limits.networks
Type:

integer

limits.processes

プロジェクト内のプロセスの最大数

Key: limits.processes
Type:

integer

この値はプロジェクトのインスタンスに設定される個々のlimits.processes設定の合計の最大値です。

limits.virtual-machines

プロジェクト内で作成できるVMの最大数

Key: limits.virtual-machines
Type:

integer

プロジェクトの制約

プロジェクトのインスタンスがセキュリティーに関連する機能(コンテナのネストや 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 に設定する必要があります。 restrictedfalse に設定されている場合、restricted.* オプションを変更しても効果はありません。

すべての restricted.* キーを allow に設定することは、restricted 自体を false に設定することと同等です。

restricted

セキュリティセンシティブな機能へのアクセスをブロックするかどうか

Key: restricted
Type:

bool

Default:

false

restricted.*キーが有効になるにはこのオプションを有効にする必要があります。 制限を一時的に解除するには、関連するキーを削除する代わりにこのオプションを無効にできます。

restricted.backups

インスタンスやボリュームバックアップの作成を禁止するかどうか

Key: restricted.backups
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.cluster.groups

ターゲットできるクラスタグループ

Key: restricted.cluster.groups
Type:

string

設定された場合、このオプションはクラスタグループが指定されたクラスタグループ以外にターゲットするのを禁止します。

restricted.cluster.target

クラスタメンバーのターゲットを禁止するかどうか

Key: restricted.cluster.target
Type:

string

Default:

block

設定できる値はallowblockです。 allowに設定すると、このオプションはインスタンスの作成や移動時にクラスタメンバー(直接あるいはグループ経由で)のターゲットを許可します。

restricted.containers.interception

システムコールインターセプションのオプションの使用を禁止するかどうか

Key: restricted.containers.interception
Default:

block

設定できる値はallowblockfullです。 allowに設定すると、通常安全なインターセプションオプションは許可されます。 ファイルシステムのマウントはブロックされたままです。

restricted.containers.lowlevel

低レベルなコンテナオプションの使用を禁止するかどうか

Key: restricted.containers.lowlevel
Type:

string

Default:

block

設定できる値はallowblockです。 allowに設定すると、raw.lxcraw.idmapvolatile.*などの低レベルコンテナオプションが使用できます。

restricted.containers.nesting

ネストしたIncusの稼働を禁止するかどうか

Key: restricted.containers.nesting
Type:

string

Default:

block

設定できる値はallowblockです。 allowに設定すると、インスタンスに対してsecurity.nestingtrueに設定できます。

restricted.containers.privilege

特権コンテナのどの設定を禁止するか

Key: restricted.containers.privilege
Type:

string

Default:

unprivileged

設定できる値はunprivilegedisolatedallowです。

  • unprivilegedに設定すると、このオプションはsecurity.privilegedtrueに設定するのを禁止します。

  • isolatedに設定すると、このオプションはsecurity.privilegedsecurity.idmap.isolatedtrueに設定するのを禁止します。

  • allowに設定すると、制限はありません。

restricted.devices.disk

どのディスクデバイスが使用できるか

Key: restricted.devices.disk
Type:

string

Default:

managed

設定できる値はallowblockmanagedです。

  • blockに設定すると、このオプションはroot以外のすべてのディスクデバイスの使用を禁止します。

  • managedに設定すると、このオプションはpool=が設定されいているディスクデバイスの使用のみを許可します。

  • allowに設定すると、どのディスクデバイスを使えるかについて制限はありません。

restricted.devices.disk.paths

diskデバイスにどのsourceが使用できるか

Key: restricted.devices.disk.paths
Type:

string

restricted.devices.diskallowに設定された場合、このオプションはdiskデバイスにどのsourceを使用できるかを制御します。 source設定を制限するパスの接頭辞のカンマ区切りリストを指定します。 このオプションが空の場合、すべてのパスが許可されます。

restricted.devices.gpu

タイプgpuのデバイスの使用を禁止するかどうか

Key: restricted.devices.gpu
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.infiniband

タイプinfinibandのデバイスの使用を禁止するかどうか

Key: restricted.devices.infiniband
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.nic

どのネットワークデバイスが使用できるか

Key: restricted.devices.nic
Type:

string

Default:

managed

設定できる値はallowblockmanagedです。

  • blockに設定すると、このオプションはすべてのネットワークデバイスの使用を禁止します。

  • managedに設定すると、このオプションはnetwork=が設定されいているネットワークデバイスの使用のみを許可します。

  • allowに設定すると、どのネットワークデバイスを使えるかについて制限はありません。

restricted.devices.pci

タイプpciのデバイスの使用を禁止するかどうか

Key: restricted.devices.pci
Type:

string

Default:

block

Possible values are allow or block.

restricted.devices.proxy

タイプproxyのデバイスの使用を禁止するかどうか

Key: restricted.devices.proxy
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.unix-block

タイプunix-blockのデバイスの使用を禁止するかどうか

Key: restricted.devices.unix-block
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.unix-char

タイプunix-charのデバイスの使用を禁止するかどうか

Key: restricted.devices.unix-char
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.unix-hotplug

タイプunix-hotplugのデバイスの使用を禁止するかどうか

Key: restricted.devices.unix-hotplug
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.devices.usb

タイプusbのデバイスの使用を禁止するかどうか

Key: restricted.devices.usb
Type:

string

Default:

block

設定できる値はallowblockです。

restricted.idmap.gid

raw.idmap内でどのGIDの範囲を許可するか

Key: restricted.idmap.gid
Type:

string

このオプションはインスタンスのraw.idmap設定内で許可されるホストのGIDの範囲を指定します。

restricted.idmap.uid

raw.idmap内でどのUIDの範囲を許可するか

Key: restricted.idmap.uid
Type:

string

このオプションはインスタンスのraw.idmap設定内で許可されるホストのUIDの範囲を指定します。

restricted.images.servers

このプロジェクトで許可されるイメージサーバー(HTTPホスト)

Key: restricted.images.servers
Type:

string

このプロジェクトでの利用を許可するイメージサーバーのドメインのカンマ区切りリスト。 このオプションが設定されない場合、すべてのイメージサーバーにアクセスできます。

restricted.networks.access

このプロジェクト内でどのネットワーク名が使用できるか

Key: restricted.networks.access
Type:

string

このプロジェクト内で使用できるネットワーク名のカンマ区切りリストを指定します。 このオプションを設定しない場合、すべてのネットワークが使用できます。

この設定はrestricted.devices.nic設定に依存することに注意してください。

restricted.networks.integrations

このプロジェクト内でどのネットワーク統合が使用できるか

Key: restricted.networks.integrations
Type:

string

このプロジェクト内のネットワークで使用できるネットワーク統合のカンマ区切りリストを指定します。

restricted.networks.subnets

このプロジェクト内で使うためにどのネットワークサブネットが割り当てできるか

Key: restricted.networks.subnets
Type:

string

Default:

block

このプロジェクト内で使うために割り当てられるuplinkのネットワークからのネットワークサブネットのカンマ区切りリストを指定します。 <uplink>:<subnet>の形式で指定します。

restricted.networks.zones

このプロジェクト内でどのネットワークゾーンが使用できるか

Key: restricted.networks.zones
Type:

string

Default:

block

このプロジェクト内で使用できるネットワークゾーン(あるいはその配下の何か)のカンマ区切りリストを指定します。

restricted.snapshots

インスタンスやボリュームスナップショットの作成を禁止するかどうか

Key: restricted.snapshots
Type:

string

Default:

block

restricted.storage-pools.access

このプロジェクト内でどのストレージプール名が許可されるか

Key: restricted.storage-pools.access
Type:

string

このプロジェクト内で使えるストレージプール名のカンマ区切りリストを指定します。このオプションが未指定の場合すべてのストレージプールがアクセス可能です。

restricted.virtual-machines.lowlevel

低レベルのVMオプションの使用を禁止するかどうか

Key: restricted.virtual-machines.lowlevel
Type:

string

Default:

block

設定できる値はallowblockです。 allowと設定すると、raw.qemuvolatile.*、などの低レベルのVMオプションが使用できます。

プロジェクト固有の設定

プロジェクトに対していくつかの サーバー設定 オプションを上書きできます。 また、プロジェクトにユーザーメタデータを追加することができます。

backups.compression_algorithm

バックアップに使用できる圧縮アルゴリズム

Key: backups.compression_algorithm
Type:

string

このプロジェクト内でバックアップに使用できる圧縮アルゴリズムを指定します。 設定できる値はbzip2gziplz4lzmaxzzstdnoneです。

images.auto_update_cached

このプロジェクト内のキャッシュされたイメージを自動的に更新するかどうか

Key: images.auto_update_cached
Type:

bool

images.auto_update_interval

キャッシュされたイメージの更新を確認する間隔

Key: images.auto_update_interval
Type:

integer

間隔を時間で指定します。 キャッシュされたイメージの更新の確認を無効化するには、このオプションを0に設定します。

images.compression_algorithm

このプロジェクト内の新しいイメージの圧縮アルゴリズム

Key: images.compression_algorithm
Type:

string

設定できる値はbzip2gziplz4lzmaxzzstdnoneです。

images.default_architecture

アーキテクチャー混在のクラスタ内で使用するデフォルトのアーキテクチャー

Key: images.default_architecture
Type:

string

images.remote_cache_expiry

プロジェクト内で使用していないキャッシュされたリモートのイメージをいつ削除するか

Key: images.remote_cache_expiry
Type:

integer

使用していないキャッシュされたイメージが期限切れになる日数を指定します。

network.hwaddr_pattern

MACアドレステンプレート

Key: network.hwaddr_pattern
Type:

string

Scope:

global

クラスター内で使用するMACアドレステンプレート(例10:66:6a:xx:xx:xx)を指定します。 テンプレート内のx0-fのランダムな文字に置き換えられます。 誕生日のパラドックスに注意してください!単独のxxはたった8個のアドレス、2つのxx:xxでは118個のアドレス、3つのxx:xx:xxでは1881個のアドレス、4つのxx:xx:xx:xxでは30084個のアドレスでで衝突の確率が10%あります。これを保護するガードレールは一切提供していません。

user.*

ユーザーが指定する自由形式のキー/バリューペア

Key: user.*
Type:

string