Workflow 新烹饪书的厨师工作流程
在编写自己的食谱时,我发现自己始终处于这个循环中:Workflow 新烹饪书的厨师工作流程,workflow,chef-infra,chef-solo,Workflow,Chef Infra,Chef Solo,在编写自己的食谱时,我发现自己始终处于这个循环中: 在本地计算机上更改食谱 将修改后的食谱上载到chef服务器 在远程计算机上运行chef客户端 重复 由于我是chef的新手,我经常重复这个循环,但我发现从chef服务器上频繁上传和下载相当麻烦 经验丰富的厨师用户如何缓解这一周期?我通过免费托管解决方案学习了Chef,但我不确定我是否应该只使用Chef solo,并在拥有多台服务器和更多Chef经验后,再回到托管版本 是否有一个工作流程,可以让我在使用托管厨师的同时,直接在远程机器上快速尝试更改
是否有一个工作流程,可以让我在使用托管厨师的同时,直接在远程机器上快速尝试更改我的烹饪书,而不必上传它们?我在笔记本电脑上本地使用。当烹饪书准备好后,它会被推送到新的Git存储库主页,并集成到我的production chef服务器基础架构中 以下示例在virtualbox映像上运行nginx 例子 安装vagrant插件(只需执行一次): 用于生成新的 编辑以下文件(详细信息如下):
vagrant plugin install vagrant-omnibus
vagrant plugin install vagrant-berkshelf
vagrant plugin install vagrant-chef-zero
$ berks cookbook demo
create demo/files/default
create demo/templates/default
create demo/attributes
create demo/definitions
create demo/libraries
create demo/providers
create demo/recipes
create demo/resources
create demo/recipes/default.rb
create demo/metadata.rb
create demo/LICENSE
create demo/README.md
create demo/Berksfile
create demo/Thorfile
create demo/chefignore
create demo/.gitignore
run git init from "./demo"
create demo/Gemfile
create demo/Vagrantfile
vagrant up
vagrant provision
vagrant destroy -f && vagrant up
Vagrant.require_plugin "vagrant-omnibus"
Vagrant.require_plugin "vagrant-berkshelf"
Vagrant.require_plugin "vagrant-chef-zero"
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Box config
config.vm.box = "saucy64"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/saucy/current/saucy-server-cloudimg-amd64-vagrant-disk1.box"
# Virtualbox config
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", 1024]
end
# Networking config
config.vm.network "private_network", ip: "10.0.0.10"
# Plugin config
config.omnibus.chef_version = :latest
config.chef_zero.enabled = true
config.berkshelf.enabled = true
# Chef config
config.vm.provision :chef_client do |chef|
chef.add_recipe "demo"
end
end
name 'demo'
maintainer 'YOUR_NAME'
maintainer_email 'YOUR_EMAIL'
license 'All rights reserved'
description 'Installs/Configures demo'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.1.0'
depends "nginx"
site :opscode
metadata
#
# Cookbook Name:: demo
# Recipe:: default
#
# Copyright (C) 2014 YOUR_NAME
#
# All rights reserved - Do Not Redistribute
#
include_recipe "nginx"