首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多群集的Vagrantfile设置

多群集的Vagrantfile设置
EN

Stack Overflow用户
提问于 2020-11-07 02:53:34
回答 1查看 31关注 0票数 1

我希望使用Vagrant创建多个相同的VM集群。

例如,假设我想要创建两个虚拟机,假设主机名为n1n2作为一个群集(clusterA)。然后,我想基本上重复相同的设置,但将接下来的2个VM命名为第二个群集(clusterB)上的n3n4。这两个集群具有完全相同的设置(即磁盘数量、网络设置、rpms和安装的软件包等),但是有两个独立的身份。

在某些情况下,我可能需要对每个集群做一些小的修改。

组织Vagrantfile的干净方法是什么?有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-11-07 02:53:34

这里有一种方法。

首先,我在基本项目文件夹create-cluster.sh中创建了一个shell脚本。此脚本将接受群集名称作为输入,并执行以下操作:

  1. mkdir ./$cluster_name
  2. cp ./Vagrantfile-template ./$cluster_name

cp ./settings.yaml ./$cluster_name

(复制此处的任何其他设置文件,即settings.yaml)

  • cd ./$cluster_name <--即clusterA、clusterB、etc...

  • vagrant up

因此,您最终得到了以下目录:

代码语言:javascript
复制
myproject/
|--- create-cluster.sh
|--- delete-cluster.sh
|--- Vagrantfile-template
|--- settings.yaml
|--- <any other external files required to build VM>
|
|--- clusterA
|    |-- Vagrantfile (copied from ../Vagrantfile-template)
|
|--- clusterB
|    |-- Vagrantfile (copied from ../Vagrantfile-template)

Vagrantfile-模板加载settings.yaml文件以导入任何唯一的设置。通过这种方式,可以将Vagrantfile写入以支持任意数量的节点、磁盘等。例如:

settings.yaml:

代码语言:javascript
复制
---
num-nodes: 2

Vagrantfile-tempale:

代码语言:javascript
复制
require "yaml"
$settings = YAML.load_file "settings.yaml"
num_nodes = $settings['num-nodes']

# Customize configuration specific settings
Vagrant.configure("2") do |config|
    config.vm.box = "centos/8"
    (1..num_nodes).each do |i|
        config.vm.define node-#{i} do |node|
            node.vm.hostname = node#{i}

        <other common setup, i.e. provisioners>
    end
end

这种方法允许一个通用的Vagrantfile设置,但也允许您单独管理每个集群,即vagrant haltvagrant destroy等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64720167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档