gpt4 book ai didi

ssh - 如何在 vagrant 基础(基线)框中包含并引用自定义 ssh key ? (虚拟盒)

转载 作者:行者123 更新时间:2023-12-02 09:46:22 25 4
gpt4 key购买 nike

在 vagrant 文档中,我没有找到有关在使用“vagrant package”时如何在同一基线框中引用包含的 Vagrantfile 中包含的文件的提示。有人可以帮忙吗?

详细信息:

从头开始为 vagrant 创建新的基线框时,您可以自由使用标准 vagrant 不安全 ssh key 或创建自定义新 key 。我做了最后一件事。当我将 Vagrantfile 与此附加行一起使用时,这个新的基线框可以与我的自定义 key 配合使用:

config.ssh.private_key_path = "custom_key_file"

现在我决定将我的基线框分发给我的团队成员。那没问题。只需输入:

vagrant package --output custom.box

所有其他团队成员都会将“custom_key_file”复制到项目根目录,并使用以下内容创建一个“Vagrantfile”(使用版本控制系统完成):

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "custombox"
config.ssh.private_key_path = "custom_key_file"
end

完成后,每个团队成员输入以下内容即可快速轻松地获得基于 custom.box 的虚拟机:

vagrant box add custombox custom.box
vagrant up

工作正常。

现在我想在分发之前稍微调整一下我的基线框。我想包含“custom_key_file”和一个“Vagrantfile.pkg”,其内容如下:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "custombox"
config.ssh.private_key_path = "custom_key_file"
end

要创建调整后的基线框,我输入:

vagrant package --output custom2v.box --vagrantfile Vagrantfile.pkg --include custom_key_file

当我提取 custom2v.box 时,我可以看到有这棵树:

C:.
│ box-disk1.vmdk
│ box.ovf
│ Vagrantfile

└───include
custom_key_file
_Vagrantfile

“include/_Vagrantfile”包含我的 Vagrantfile.pkg 的内容。我可以按如下方式添加该框:

vagrant box add custombox2v custom2v.box

对于一个新项目,现在很容易为 vagrant 启用它。只需添加一个“Vagrantfile”,如下所示:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "custombox2v"
end

但是当我这样做时:

vagrant up

我收到以下错误消息:

[...]
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

SSH:
* `private_key_path` file must exist: custom_key_file

有人可以帮忙吗?

最佳答案

原因是Vagrant的load order and merging of its configs.

您想要发生的是 Vagrant 使用位于 box 存档内的私钥。

当你运行“up”时真正发生的事情是 Vagrant 将你的配置与“加载和合并”路径上的其他一些配置合并。

所以最后你有一个大的配置和设置:

config.ssh.private_key_path = "custom_key_file"

因此 Vagrant 会在与您的 Vagrantfile 相同的文件夹中查找 custom_key_file,这就是您收到错误的原因。

检查this answerthis issue了解如何配置 Vagrant 以查找相对于 box 的 Vagrantfile 的 key 。

关于ssh - 如何在 vagrant 基础(基线)框中包含并引用自定义 ssh key ? (虚拟盒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com