首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vagrant中运行一次命令块

如何在Vagrant中运行一次命令块
EN

Stack Overflow用户
提问于 2019-01-31 17:52:35
回答 1查看 313关注 0票数 0

如何在Vagrantfile中只运行一次命令块。尝试使用如果的情况,但没有成功。

Vagrantfile:

代码语言:javascript
复制
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

$hosts = {
    "node-1" => { memory: 1024, cpus: 2 },
    "node-2" => { memory: 4096, cpus: 2 }
}

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|      
  $hosts.each_with_index do |(hostname, parameters), index|  
    config.vm.define vm_name = hostname do |vm_config|
      vm_config.vm.hostname = hostname

      config.vm.provision "shell", inline: "echo index=#{index}"

      if index == 0
        config.vm.provision "shell", path: "./bootstrap-scripts/node-1.sh"
      end

    end
  end
end

控制台结果:

代码语言:javascript
复制
==> node-1: Importing base box 'generic/ubuntu1804'...
...
==> node-1: Running provisioner: shell...
    node-1: Running: inline script
    node-1: index=0

==> node-2: Importing base box 'generic/ubuntu1804'...
...
==> node-2: Running provisioner: shell...
    node-2: Running: inline script
    node-2: index=0
==> node-2: Running provisioner: shell...
    node-2: Running: inline script
    node-2: index=1

目标是只为第一台机器运行“./bootstrap- script /control.sh.sh”脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 19:48:09

来自流浪文献

多机器定义和提供程序重写的内部部分是延迟加载的。如果您更改在信任中使用的变量的值,这可能会导致问题.

each_with_index的内部行为可能会触发记录在案的问题,这就是为什么节点-2循环遍历两个索引的原因。因此,尝试在if中使用节点名。

另外,您需要使用vm_config,而不是config,您希望提供程序为每个节点申请。

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

https://stackoverflow.com/questions/54466525

复制
相关文章

相似问题

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