chef-infra - 与 Chef 一起供应 Vagrant

标签 chef-infra vagrant

我正在深入研究如何将我的开发环境迁移到 Vagrant,但在与 Chef 一起处理 VM 配置过程时遇到了一些困难。我以前从未使用过 Chef,并且该领域的 Vagrant 文档故意较弱(超出范围),因此我可以帮忙。

我想让它尽可能便携,所以我认为从 URL 加载 Recipe 是有意义的,所以这就是我在 Vagrantfile 中尝试的:

config.vm.provision :chef_solo do |chef|
    chef.recipe_url = 'https://github.com/opscode/cookbooks/tarball/master'
    chef.add_recipe 'nginx'
    chef.add_recipe 'mysql'
    chef.add_role 'web'

    # You may also specify custom JSON attributes:
    # chef.json = { :mysql_password => '' }
end

我不认为我只是误解了某些东西,但我还没有找到看起来适合这个 Vagrant 上下文的文档源。

谢谢。

最佳答案

您上面展示的方式肯定会正常工作。

但是,如果您打算单独使用 Chef,我建议将说明书直接嵌入到版本控制的存储库中。这使得在您提交的每个时间点,Vagrantfile 都与说明书的正确版本保持一致。因此,两年后,当您查看今天的代码时,这些 Recipe 在技术上应该仍然有效。

如果您想采用此方法,请创建一个目录,例如包含 Recipe 的 cookbooks。然后像这样配置 Vagrant:

config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "cookbooks"
    chef.add_recipe 'nginx'
    chef.add_recipe 'mysql'
    chef.add_role 'web'

    # You may also specify custom JSON attributes:
    # chef.json = { :mysql_password => '' }
end

关于chef-infra - 与 Chef 一起供应 Vagrant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941034/

相关文章:

laravel - 从 Windows 系统中删除 Homestead 和 Vagrant 最干净的方法是什么?

virtual-machine - VBox管理 : error: Failed to create the host-only adapter

chef-infra - gitlab-ctl 重新配置 : Unable to determine node name

vagrant - 如何更改 Chef kitchen.yml 中的框名称?

java - 为什么 java 说明书依赖于这么多其他说明书?

database-design - 包含 TB 及以上规模数据的 Elasticsearch 集群的推荐设置是什么?

php - 如何在 HHVM 上向浏览器输出/显示 fatal error

chef-infra - 关于设置 Chef 推送作业的任何指示?

version - Chef Recipe 版本删除,或更新特定版本

laravel - NPM 安装失败,出现 ETXTBSY 错误,文本文件正忙