Vagrant: ネットワークインターフェイス用に構成済みのPCIスロットをvagrantが尊重するようにします

作成日 2016年12月08日  ·  3コメント  ·  ソース: hashicorp/vagrant

これは#4590のフォローアップアイテムです。

systemd linuxでは、NICはeth0またはeth1ではなく、 ens32またはens33ようなIDで識別されます。 systemd IDは、NICのPCIスロットに基づいています。 VagrantがVMを起動すると、NICが再初期化され、PCIスロットが変更される可能性があります。

問題は、OSに特定の場所(例:ens33)でネットワークインターフェイスを初期化するように指示する構成(通常は/ etc / network / interfaces内)があることです。 VagrantがPCIスロットを32に変更すると、VM内のネットワークは開始できません。

ここには2つのアプローチがあります。

  1. Vagrantは常にPCIスロット32を使用すると推測できます(これは特定の状況では当てはまるかもしれませんが、どれかはわかりません)。

  2. Vagrantは、決定論的動作を使用して、VMXファイルで指定された既存のNICを識別できます(これは、VM内で既に構成されているものを反映している必要があります)。

いずれにせよ、私はこれを決定論的にしたいので、次のようになります。

  1. Vagrantをサポートするためにpacker構成に手動オーバーライドを追加する必要はありませんが、他のコンテキストではVMを使用できなくなります
  2. Vagrantfileに手動オーバーライドを追加する必要はありません。
  3. Vagrantの誤動作を回避するために、OS内に手動オーバーライドを追加する必要はありません。

パッカー-> Vagrant

デフォルトでは、packerはPCIスロット33のNICを初期化しますが、Vagrantはこれを32に変更します。代わりに、VagrantがVMXファイルを解析し、すでに割り当てられているのと同じPCIスロットを再割り当てすることをお勧めします。

また、NICに常にPCIスロット32を使用するようにPackerを変更し、NICが再初期化されたときにVagrantが決定論的にPCIスロット32を使用することが示されている場合に限ります。 私はこれを証明することができませんでした。

私はこれを少なくとも3つの方法で回避できますが、箱から出してこの機能は壊れており、VagrantはPackerでのVMXビルドなどの他のワークフローを壊します。回避策はOSによって異なるため、これはかなり面倒です。

bug providevmware

最も参考になるコメント

@cbednarski起動時のpciスロット番号の変更を確実に再現し、それを分離して、Vagrantプラグインがスロット番号の変更の原因であることを示すことができました。 これをクリアするカスタム定義の構成を削除しないようにデバイスをセットアップします。

全てのコメント3件

@cbednarski起動時のpciスロット番号の変更を確実に再現し、それを分離して、Vagrantプラグインがスロット番号の変更の原因であることを示すことができました。 これをクリアするカスタム定義の構成を削除しないようにデバイスをセットアップします。

また、 Vagrantfileは、現在のバージョンのスロット番号を保持します。

Vagrant.configure(2) do |config|
   ...
   config.vm.provider :vmware_fusion do |vmware|
     vmware.vmx["ethernet0.pcislotnumber"] = "33"
   end
end

この@chrisrobertsを調べてくれてありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価