标签: vagrant

使用 vagrant 和 Chef 在 Ubuntu 中设置 Windows VM

我正在运行 Ubuntu,我想通过 Vagrant 和 Chef 在 Virtualbox 中设置一个 VM。我想我缺少的是用于 Windows Server 2008 R2 x64 试用版的 .box。

有谁知道我在哪里可以找到.box?如果没有,我将如何为 Windows Server 2008 构建 Vagrant .box?

windows virtualbox chef vagrant

6
推荐指数
1
解决办法
6506
查看次数

流浪者/厨师 - nginx 食谱扩展

我对使用 Chef 还很陌生,尤其是使用 vagrant,所以对于更有经验的用户来说,这很可能是一个愚蠢的问题。

我正在使用这本食谱:https : //github.com/opscode-cookbooks/application_nginx

我只想添加我自己的站点配置(vhost)。

它必须是以下之一:

  1. 将我自己的食谱和模板直接添加到食谱中
  2. 创建我自己的食谱,以某种方式扩展 nginx 食谱以仅添加我需要的特定行为。

选项 1 对我来说似乎不正确,我不知道如何在不必完全分开食谱的情况下完成选项 2。

任何人都可以就如何实现这一目标提出建议吗?

nginx provisioning chef chef-solo vagrant

5
推荐指数
1
解决办法
1828
查看次数

配置apt在vagrant box中使用代理

我正在使用 Vagrant 设置虚拟机进行测试。我希望虚拟机内部的 apt 可以在主机上使用代理,以允许缓存所有下载内容在运行的虚拟机实例之间持续存在,不仅是为了提高速度,而且还允许我在启动 vagrant 实例时启动没有网络连接。

我已经设置了正在运行的代理,我想我已经告诉 apt 通过在 Vagrant 脚本中设置它来使用它:

config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTP { Proxy "http://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; FTP { Proxy "ftp://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTPS { Proxy "https://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
Run Code Online (Sandbox Code Playgroud)

它正在部分工作,即当我的 wifi 连接被禁用但 Squid 正在运行并且它的缓存中有一些条目时,对源的初始请求命中缓存并工作。我还可以从 Squids 日志文件中看到一些击中 Squid 的请求:

1367492453.816     34 127.0.0.1 TCP_REFRESH_MODIFIED/200 592 GET http://security.ubuntu.com/ubuntu/dists/precise-security/Release.gpg - …
Run Code Online (Sandbox Code Playgroud)

proxy squid apt vagrant

5
推荐指数
2
解决办法
4928
查看次数

Vagrant - 通过主机名从主机访问来宾

我有游民1.2.2安装在我的机器; 一台笔记本电脑。我在具有不同网络设置的三个不同环境中使用同一台笔记本电脑。

我的 VagrantFile 看起来像:

Vagrant.configure("2") do |config|
    config.vm.box = "lucid32"
    config.vm.network :forwarded_port, guest: 80, host: 88
    config.vm.network :forwarded_port, guest: 56789, host: 56789
    config.vm.network :public_network, :bridge => 'Intel(R) 82579V Gigabit Network Connection'
    config.vm.hostname = "web"
end
Run Code Online (Sandbox Code Playgroud)

它成功地将主机名设置为web无头 Ubuntu 中的主机名。

但是当我尝试web从主机操作系统 (Windows) ping 时,它无法解析 IP 地址。

当我搬到其他办公室时,我无法每次更改 Windows 中的主机文件,因为 C 类子网掩码和 IP 范围不同。

有没有办法通过主机名从主机访问来宾web

networking hostname static-ip vagrant

5
推荐指数
2
解决办法
3万
查看次数

预填充 vagrant 同步文件夹内容

我目前正在构建一个相当复杂的服务器堆栈(一个 ruby​​ on rails 应用程序),我希望开发人员能够在不必自己安装所有东西的情况下工作。因此我使用 Vagrant 来允许他们这样做。

这个想法是,当您第一次安装映像时,它将拉取最新的源并安装依赖项,源通过同步文件夹公开(vagrant 内置功能),以便开发人员可以提交源并在他们自己的环境中编辑它们。Vagrant-box 仅用于服务器。

Vagrantfile 中的同步文件夹条目:

config.vm.synced_folder "gameeso/", "/var/gameeso", :create => "true" 
Run Code Online (Sandbox Code Playgroud)

该图像是一个带有 upstart 脚本的 Ubuntu 服务器(脚本在启动时执行,并且仅在 Internet 连接启动时执行):

  • 从 Github 拉取最新的开发分支(如果文件夹不存在)

  • 安装依赖项(这是由脚本完成的)

  • 启动服务器

所有这些都发生在一个同步文件夹中。我对这种方法有一些问题,主要是 Vagrant 清除了我的来宾系统上的同步文件夹。 我通过在 upstart 脚本中添加 'sleep 10' 解决了这个问题,所以它可以等到 Vagrant 设置同步文件夹。

当然,这不是一种安全的方法(如果启动时间超过 10 秒,虽然现在不太可能,我宁愿不知道;))

我的问题是:有没有更好的方法让来宾主机(流浪者图像)填充同步文件夹?

当然,非常感谢提前!

ubuntu ruby-on-rails upstart vagrant

5
推荐指数
1
解决办法
1225
查看次数

远程自动配置到 XenServer 管理程序

我目前正在开展一个项目,在该项目中我使用 Vagrant 和 Ansible 配置在 VirtualBox 中创建本地环境。我目前在一所大学工作,我们有一个 XenServer 管理程序(免费版)。我无法直接从我的位置访问虚拟机管理程序,但我可以通过 ssh 连接到同一网络上的 Ubuntu 服务器并转发端口,以便我可以使用 XenCenter 连接到它:

ssh <remote machine> -L80:<xen-server>:80 -L443:<xen-server>:443 -L5900:<xenserver>:5900 -L59001...etc to 5910
Run Code Online (Sandbox Code Playgroud)

59xx 端口是因为 XenCenter 将 VNC 控制台放在这些端口上。(我实际上在 Windows 上使用腻子,因为我无法让 OpenXenCenter/Linux 与这种类型的隧道连接)。Citrix XenCenter 连接正常,我可以创建一个新的 VM,但是我无法通过 XenCenter 或其他 VNC 客户端访问控制台。

如果我能让 VNC 控制台工作,我可以创建一个基本框,然后复制它并根据需要使用不同的 ansible playbook 重新配置副本。

但我真的不在乎能否获得控制台,只要我可以自动配置单个 VM。如果我能用另一台机器上的客户端指向虚拟机管理程序并编写具有特定 IP 地址的 VM 创建脚本,那就太好了。Vagrant 不支持 Xen 作为提供者。我发现使用 libvirt 的 Xen 支持有限,但即便如此,它似乎更适合安装在标准发行版(如 Ubuntu 或 OpenSUSE)上的 Xen,而不是作为独立的 Citrix Hypervisor。有 xen-tools,但这似乎也适用于本地 linux 发行版上的 xen。

有没有办法使用 Vagrant 或其他类型的配置工具远程配置 XenServer 实例?

xen provisioning xenserver libvirt vagrant

5
推荐指数
1
解决办法
6821
查看次数

Vagrant / Puppet 工作流程

我是 puppet 和 vagrant 的新手,但我正在开发我自己的 Puppet 清单,旨在设置一个 vagrant 框。也就是说,puppet 清单位于主机上我的 Vagrant 目录中,而 vagrant 正在调用 puppet —— 没有 puppet 服务器。

问题是,我的工作流程是:

 while(not working as desired) {
     vagrant destroy
     amend manifest
     vagrant up
 }
Run Code Online (Sandbox Code Playgroud)

......这意味着相当多的等待。

什么是更好的工作方式?

puppet vagrant

4
推荐指数
1
解决办法
707
查看次数

是否有一种简化的方法可以从现有的 CentOS 5.10 服务器导出设置以进行本地 Vagrant 配置?(人偶、厨师、贝壳或其他)

我最近开始学习如何使用 Vagrant 来启动本地开发环境。(在对各种 WAMP 堆栈选项感到沮丧之后)到目前为止,Vagrant 很棒……学习曲线很小,但从长远来看看起来很有希望。

在尝试使我的 VM 看起来像我的在线服务器的乏味过程之后……在我看来,Vagrant 缺少了一个部分。现在的过程似乎或多或少像手动试错。第一次快速设置或轻松保持与上游服务器同步的理想选择。

诚然,我可能不确切知道我在寻找什么......因此问题。

是否有一种简化的方法可以从现有的 CentOS 5.10 服务器导出设置以进行本地 Vagrant 配置?(人偶、厨师、贝壳或其他)

这样的事情是我所设想的......

(连接到在线服务器...)

  1. 检测 repo 差异并根据需要启用、禁用、添加本地。
  2. 检测包,并同步本地匹配。(从本地安装或删除)
  3. 获取 httpd.conf,调整本地(如果需要)并同步。
  4. 获取 php.ini,调整本地(如果需要)并同步。
  5. 获取 MySQL 设置,调整本地(如果需要)并同步。
  6. 获取时区并同步。
  7. [您对应该同步的其他内容的建议在这里欢迎...]

理想情况下,这将在配置期间运行,并且基本上保持本地版本与在线版本同步。这将消除不断手动调整本地设置以保持同步的需要。如果某些内容在线更改(由主机或内部)......它会自动传播。(当然,理想情况下,您可以标记设置以根据您的需要调整行为)

或者,我想如果我可以在不打包各种用户特定数据的情况下打包在线服务器,那也可以。但是,据我所知,这似乎不太可能……而且效率肯定不会很高。

警告

就我个人而言,我使用的是带有 cPanel 的 CentOS 5.10 服务器。cPanel 似乎在服务器端做了很多不一定立即显而易见的事情。一个例子是许多包名称以 cPanel 开头,看起来是专有的,但同时与我可能想要同步的内容相关。(例如cpanel-php53)据我目前所知,这些不能轻易同步......因此需要采取变通办法。另一个例子可能与预期的路径不同,但我不太确定,因为我对 CentOS 和 cPanel 的默认安装不够熟悉,无法确定任何特性。

到目前为止我所做的...

在我决定询问是否有更好的方法可以与 Vagrant 更紧密地合作之前,我做了一些事情。这并不可怕,但并不真正“精简”或全面。以下是详细信息...

  1. 我学会了如何yum repolist all在两台机器上运行以及如何使用 来查看文件系统中的 repos cd /etc/yum.repos.d; ll;,但没有学习如何使用此信息自动同步 repos。

  2. 我写了一个 shell 脚本来让本地的包与远程的包非常接近。然而,虽然它做得很好,但它并不完美,我想知道是否有更好的方法。问题...

    • 我不确定是否允许删除本地独有的软件包。(另外,抛出一些错误)
    • 除了从安装列表中完全删除每个包之外,我还没有弄清楚如何补偿以“cpanel”为前缀的包,这些包似乎是我真正想要的(PHP、MySQL 等)的替代品。
    • 这不能作为 Vagrant 供应商运行,因为它本质上需要用户输入。同样,运行此程序并删除“本地独有”的软件包将消除先前在配置期间运行的 yum 安装。

 

#!/usr/bin/env bash

# This script …
Run Code Online (Sandbox Code Playgroud)

shell centos puppet chef vagrant

4
推荐指数
1
解决办法
222
查看次数

Jenkins 2.x 禁用初始管理员设置

我们使用 Jenkins 作为 cron 服务器,通过 api 添加/启动 cron。我们创建了一个安装 jenkins 的 vagrant box。由于 2.0 版 jenkins 需要在禁用config.xml 中的安全性之前创建一个管理员帐户(链接)。如果在 jenkins 中没有创建管理员,config.xml(禁用安全)将被覆盖。有什么办法可以避免这种情况(也许可以通过 bash 命令创建一个管理员)?

automation security jenkins vagrant

4
推荐指数
1
解决办法
9499
查看次数

在 archlinux 上安装 vagrant 插件

我正在尝试在 ArchLinux 中安装 vagrant 插件并在 marshal_load 处重新输入错误 Marshal.load。这是调试打开的输出:

vagrant plugin install vagrant-hostmananger --debug
 INFO global: Vagrant version: 1.9.4
 INFO global: Ruby version: 2.2.5
 INFO global: RubyGems version: 2.4.5.1
 INFO global: VAGRANT_OLD_ENV_XDG_CURRENT_DESKTOP="GNOME"
 INFO global: VAGRANT_OLD_ENV_TILIX_ID="0bec956b-314e-4c6a-a2e2-14727c07c7ab"
 INFO global: VAGRANT_OLD_ENV_ZSH="/usr/share/oh-my-zsh"
 INFO global: VAGRANT_OLD_ENV_GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
 INFO global: VAGRANT_OLD_ENV_LC_CTYPE="en_US.UTF-8"
 INFO global: VAGRANT_OLD_ENV_COLORTERM="truecolor"
 INFO global: VAGRANT_OLD_ENV_LSCOLORS="Gxfxcxdxbxegedabagacad"
 INFO global: VAGRANT_OLD_ENV_GIO_LAUNCHED_DESKTOP_FILE_PID="1173"
 INFO global: VAGRANT_OLD_ENV_GDM_LANG="en_US.UTF-8"
 INFO global: VAGRANT_OLD_ENV_SESSION_MANAGER="local/archerite:@/tmp/.ICE-unix/975,unix/archerite:/tmp/.ICE-unix/975"
 INFO global: VAGRANT_OLD_ENV_GIO_LAUNCHED_DESKTOP_FILE="/etc/xdg/autostart/org.gnome.SettingsDaemon.MediaKeys.desktop"
 INFO global: VAGRANT_OLD_ENV_OLDPWD="/home/gerassum/Projects/ogsm-app"
 INFO global: VAGRANT_OLD_ENV_DISPLAY=":1"
 INFO global: VAGRANT_OLD_ENV_DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
 INFO global: VAGRANT_OLD_ENV_XDG_SESSION_TYPE="x11"
 INFO global: VAGRANT_OLD_ENV_XDG_SEAT="seat0"
 INFO global: VAGRANT_OLD_ENV_USERNAME="gerassum"
 INFO …
Run Code Online (Sandbox Code Playgroud)

arch-linux vagrant

4
推荐指数
1
解决办法
1380
查看次数