LXDを初期化するには#

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

対話式の設定#

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

lxd init

注釈

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

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

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

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

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

MAASサポート(maas.ioMAAS - How to manage VM hosts参照)

MAASはベアメタルサーバーのデータセンターをビルドできるオープンソースのツールです。

デフォルトの回答はnoで、MAASサポートは有効化されません。 yesと回答すると、nameURLAPI keyを指定して既存のMAASサーバーに接続できます。

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

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

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

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

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

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

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

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

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

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

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

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

サーバーにクライアント証明書を追加する(手動にてあるいはトークンを使用して。これが推奨)かトラストパスワードを設定できます。

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

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

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

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

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

最小構成のセットアップ#

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

lxd init --minimal

注釈

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

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

非対話式の設定#

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

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

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

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

既存のLXD環境を再構成する#

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

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

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

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

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

ロールバック#

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

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

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

注釈

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

デフォルトプロファイル#

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

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

設定形式#

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

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

# デーモン設定
config:
  core.https_address: 192.0.2.1:9999
  core.trust_password: sekret
  images.auto_update_interval: 6

# ストレージプール
storage_pools:
- name: data
  driver: zfs
  config:
    source: my-zfs-pool/my-zfs-dataset

# ネットワークデバイス
networks:
- name: lxd-my-bridge
  type: bridge
  config:
    ipv4.address: auto
    ipv6.address: none

# プロファイル
profiles:
- name: default
  devices:
    root:
      path: /
      pool: data
      type: disk
- name: test-profile
  description: "Test profile"
  config:
    limits.memory: 2GB
  devices:
    test0:
      name: test0
      nictype: bridged
      parent: lxd-my-bridge
      type: nic