LXDを初期化するには#
LXDインスタンスを作成する前に、LXDを設定と初期化する必要があります。
対話式の設定#
対話式の設定プロセスを開始するには以下のコマンドを実行します。
lxd init
注釈
シンプルな設定では、このコマンドは通常ユーザで実行できます。
しかし、初期化プロセス中により高度な操作(例えば、既存のクラスタに参加するなど)を行う際はroot権限が必要な場合があります。
この場合は、コマンドをsudo
付きで実行するかrootユーザで実行してください。
このツールは必要な設定を決定するために一連の質問をします。 質問はあなたが入力した回答に応じて動的に調整されます。 質問は以下の領域をカバーします。
- クラスタリング(クラスタリングについてとクラスタを形成するには参照)
クラスタは複数のLXDサーバを結合します。 クラスタメンバは同じ分散データベースを共有し、LXDクライアント(
lxc
)やREST APITを使って統一的に管理できます。デフォルトの回答は
no
で、クラスタリングは有効化されません。yes
と回答すると、既存のクラスタに接続するか、クラスタを新規作成できます。- MAASサポート(
maas.io
とMAAS - How to manage VM hosts参照) MAASはベアメタルサーバのデータセンターをビルドできるオープンソースのツールです。
デフォルトの回答は
no
で、MAASサポートは有効化されません。yes
と回答すると、name
、URL
、API key
を指定して既存のMAASサーバに接続できます。- ネットワーク(ネットワークについてとネットワークデバイス参照)
インスタンスにネットワークへのアクセスを提供します。
LXDに新しいブリッジを作成させる(推奨)こともできますし、既存のネットワークブリッジやインタフェースを使うこともできます。
後から追加のブリッジを作成して、インスタンスに割り当てることもできます。
- ストレージプール(ストレージプール、ボリューム、バケットについてとストレージドライバ参照)
インスタンス(と他のデータ)はストレージプール内に保管されます。
お試し用にはループバックベースのストレージプールを作ることもできます。 しかし、本番環境での利用には、ループバックベースのストレージではなく空のパーティション(または完全なディスク)を使うほうが良いです(ループバックベースのストレージのほうが遅くサイズを縮小できないため)。
お勧めのバックエンドは
zfs
とbtrfs
です。後から追加のストレージブールを作成することもできます。
- リモートアクセス(リモート 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.168.1.1:9999
images.auto_update_interval: 15
networks:
- name: lxdbr0
type: bridge
config:
ipv4.address: auto
ipv6.address: none
EOF
このプリシード設定はLXDデーモンを192.168.1.1のアドレスの9999ポートでHTTPS接続をリッスンするようにし、15時間ごとにイメージを自動的に更新し、lxdbr0
という名前のネットワークブリッジを作成してIPv4アドレスを自動的に割り当てるようにします。
既存のLXD環境を再構成する#
新しくLXDをインストールして設定する場合は、プリシードファイルを使って指定した設定を適用できます(YAMLが適切なキーと値を含む限りは)。 指定した設定と矛盾する既存の状態はありません。
しかし、既存のLXD環境をプリシードファイルで再構成する場合は指定したYAMLの設定が既存の設定と矛盾するかもしれません。 このような矛盾を回避するために、以下のルールが実施されます。
指定されたYAML設定は既存のエンティティを上書きします。 これは既存のエンティティを正構成する場合は、変更するキーだけではなくエンティティの設定全体を指定する必要があることを意味します。
指定したYAML設定が存在しないエンティティを含む場合、それらは作成されます。
これはREST APIのPUT
リクエストと同様の挙動です。
ロールバック#
新しい設定の一部が既存の状態と矛盾する(例えば、ストレージプールのドライバをdir
からzfs
に変更しようとするなど)場合、プリシードを指定したコマンドは失敗し、それ以前に適用した全ての変更をロールバックしようと試みます。
例えば、新しい設定によって作成されたエンティティを削除し、上書きしたエンティティは元の状態に戻します。
ロールバックでエンティティを上書きするときに失敗した場合の挙動はREST APIのPUT
と同様です。
注釈
ロールバックの行程は稀ではありますが失敗する可能性があります(たいていはバックエンドのバグか制限によるものです)。 そのため、LXDデーモンをプリシードで再構成する際は慎重に行うほうが良いです。
デフォルトプロファイル#
対話式の初期化モードと異なり、lxd init --preseed
コマンドは、指定したYAMLファイルで明示的に指定しない限りは、デフォルトプロファイルを変更しません。
インスタンスに対して、通常はルートディスクデバイスとネットワークインタフェースをデフォルトプロファイルにアタッチしたいでしょう。 これの設定例は下記のセクションを参照してください。
設定形式#
さまざまなエンティティのサポートされるキーと値はREST APIのドキュメントに記載されているのと同じですが、利便性のためYAML形式に変換されています。 しかし、YAMLはJSONのスーパーセットですので、JSONも使えます。
以下のスニペットは設定可能なほとんどの設定を含むプリシードファイルの例です。 これをあなたのプリシードファイルのテンプレートとして使用し、必要な設定を追加、変更、削除して利用できます。
# デーモン設定
config:
core.https_address: 192.168.1.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