Incusを初期化するには

Incus のインスタンスを作成する前に、Incus の設定と初期化をする必要があります。

対話式の設定

対話式の設定プロセスを開始するには以下のコマンドを実行します。

incus admin init

注釈

シンプルな設定では、このコマンドは通常ユーザで実行できます。 しかし、初期化プロセス中により高度な操作(例えば、既存のクラスタに参加するなど)を行う際はroot権限が必要な場合があります。 この場合は、コマンドをsudo付きで実行するかrootユーザで実行してください。

このツールは必要な設定を決定するために一連の質問をします。 質問はあなたが入力した回答に応じて動的に調整されます。 質問は以下の領域をカバーします。

クラスタリング(クラスタリングについてクラスタを形成するには参照)

クラスタは複数の Incus サーバーを結合します。 クラスタメンバーは同じ分散データベースを共有し、Incus クライアント(incus)や REST APIT を使って統一的に管理できます。

デフォルトの回答はnoで、クラスタリングは有効化されません。 yesと回答すると、既存のクラスタに接続するか、クラスタを新規作成できます。

ネットワーク(ネットワークについてネットワークデバイス参照)

インスタンスにネットワークへのアクセスを提供します。

Incus に新しいブリッジを作成させる(推奨)こともできますし、既存のネットワークブリッジやインターフェースを使うこともできます。

後から追加のブリッジを作成して、インスタンスに割り当てることもできます。

ストレージプール(ストレージプール、ボリューム、バケットについてストレージドライバー参照)

インスタンス(とほかのデータ)はストレージプール内に保管されます。

お試し用にはループバックベースのストレージプールを作ることもできます。 しかし、本番環境での利用には、ループバックベースのストレージではなく空のパーティション(または完全なディスク)を使うほうが良いです(ループバックベースのストレージのほうが遅くサイズを縮小できないため)。

お勧めのバックエンドはzfsbtrfsです。

後から追加のストレージブールを作成できます。

リモートアクセス(リモート API へのアクセスリモートAPI認証参照)

ネットワーク越しにサーバーへリモートアクセスできるようにします。

デフォルトの回答はnoで、リモートアクセスは有効化されません。 yesと回答すると、ネットワーク越しにサーバーへ接続できます。

サーバーにクライアント証明書を追加する(手動にてあるいはトークンを使用して)ことを選択できます。

イメージの自動更新(イメージについて参照)

イメージサーバーからイメージをダウンロードできます。 この場合、イメージを自動的に更新できます。

デフォルトの回答はyesで、Incus はダウンロードされたイメージを定期的に更新します。

YAML incus admin init プリシード(非対話式の設定参照)

yesと回答すると、このコマンドはあなたが選択した設定オプションのサマリをターミナルに表示します。

最小構成のセットアップ

デフォルトのオプションで最小構成のセットアップを作成する場合は、incus admin initコマンドに--minimalフラグを追加することで、設定の行程をスキップできます。

incus admin init --minimal

注釈

最小構成のセットアップは基本的な設定は提供しますが、設定は速度や機能に最適化されません。 特に、デフォルトで使用されるdirストレージドライバは他のドライバより遅く、高速なスナップショット、インスタンスのコピーや起動、クォータや最適化されたバックアップを提供しません。

最適化された環境を使いたい場合は、代わりに対話式の設定プロセスを行ってください。

非対話式の設定

incus admin initコマンドは--preseedコマンドラインオプションをサポートし、Incus デーモンの設定、ストレージプール、ネットワークデバイス、プロファイルを YAML プリシードファイルを使って非対話的に設定できます。

たとえば、完全に新しく Incus をインストールした状態から始める場合、以下のコマンドで Incus を設定できます。

    cat <<EOF | incus admin init --preseed
config:
  core.https_address: 192.0.2.1:9999
  images.auto_update_interval: 15
networks:
- name: incusbr0
  type: bridge
  config:
    ipv4.address: auto
    ipv6.address: none
EOF

このプリシード設定は Incus デーモンを 192.0.2.1 のアドレスの 9999 ポートで HTTPS 接続をリッスンするようにし、15 時間ごとにイメージを自動的に更新し、incusbr0という名前のネットワークブリッジを作成して IPv4 アドレスを自動的に割り当てるようにします。

既存のIncus環境を再構成する

新しく Incus をインストールして設定する場合は、プリシードファイルを使って指定した設定を適用できます(YAML が適切なキーと値を含む限りは)。 指定した設定と矛盾する既存の状態はありません。

しかし、既存の Incus 環境をプリシードファイルで再構成する場合は指定した YAML の設定が既存の設定と矛盾するかもしれません。 このような矛盾を回避するために、以下のルールが実施されます。

  • 指定された YAML 設定は既存のエンティティを上書きします。 これは既存のエンティティを正構成する場合は、変更するキーだけではなくエンティティの設定全体を指定する必要があることを意味します。

  • 指定した YAML 設定が存在しないエンティティを含む場合、それらは作成されます。

これはREST APIPUTリクエストと同様の挙動です。

ロールバック

新しい設定の一部が既存の状態と矛盾する(たとえば、ストレージプールのドライバーをdirからzfsに変更しようとするなど)場合、プリシードを指定したコマンドは失敗し、それ以前に適用したすべての変更をロールバックしようと試みます。

たとえば、新しい設定によって作成されたエンティティを削除し、上書きしたエンティティは元の状態に戻します。

ロールバックでエンティティを上書きするときに失敗した場合の挙動はREST APIPUTと同様です。

注釈

ロールバックの行程は稀ではありますが失敗する可能性があります(たいていはバックエンドのバグか制限によるものです)。 そのため、Incus デーモンをプリシードで再構成する際は慎重に行うほうが良いです。

デフォルトプロファイル

対話式の初期化モードと異なり、incus admin init --preseedコマンドは、指定した YAML ファイルで明示的に指定しない限りは、デフォルトプロファイルを変更しません。

インスタンスに対して、通常はルートディスクデバイスとネットワークインターフェースをデフォルトプロファイルにアタッチしたいでしょう。 これの設定例は下記のセクションを参照してください。

設定形式

さまざまなエンティティのサポートされるキーと値はREST APIのドキュメントに記載されているのと同じですが、利便性のため YAML 形式に変換されています。 しかし、YAML は JSON のスーパーセットですので、JSON も使えます。

以下のスニペットは設定可能なほとんどの設定を含むプリシードファイルの例です。 これをあなたのプリシードファイルのテンプレートとして使用し、必要な設定を追加、変更、削除して利用できます。

# Daemon settings
config:
  core.https_address: 192.0.2.1:9999
  images.auto_update_interval: 6

# Storage pools
storage_pools:
- name: data
  driver: zfs
  config:
    source: my-zfs-pool/my-zfs-dataset

# Network devices
networks:
- name: incus-my-bridge
  type: bridge
  config:
    ipv4.address: auto
    ipv6.address: none

# Profiles
profiles:
- name: default
  devices:
    root:
      path: /
      pool: data
      type: disk
- name: test-profile
  description: "Test profile"
  config:
    limits.memory: 2GiB
  devices:
    test0:
      name: test0
      nictype: bridged
      parent: incus-my-bridge
      type: nic