Workflow 新烹饪书的厨师工作流程

Workflow 新烹饪书的厨师工作流程,workflow,chef-infra,chef-solo,Workflow,Chef Infra,Chef Solo,在编写自己的食谱时,我发现自己始终处于这个循环中: 在本地计算机上更改食谱 将修改后的食谱上载到chef服务器 在远程计算机上运行chef客户端 重复 由于我是chef的新手,我经常重复这个循环,但我发现从chef服务器上频繁上传和下载相当麻烦 经验丰富的厨师用户如何缓解这一周期?我通过免费托管解决方案学习了Chef,但我不确定我是否应该只使用Chef solo,并在拥有多台服务器和更多Chef经验后,再回到托管版本 是否有一个工作流程,可以让我在使用托管厨师的同时,直接在远程机器上快速尝试更改

在编写自己的食谱时,我发现自己始终处于这个循环中:

  • 在本地计算机上更改食谱
  • 将修改后的食谱上载到chef服务器
  • 在远程计算机上运行chef客户端
  • 重复
  • 由于我是chef的新手,我经常重复这个循环,但我发现从chef服务器上频繁上传和下载相当麻烦

    经验丰富的厨师用户如何缓解这一周期?我通过免费托管解决方案学习了Chef,但我不确定我是否应该只使用Chef solo,并在拥有多台服务器和更多Chef经验后,再回到托管版本


    是否有一个工作流程,可以让我在使用托管厨师的同时,直接在远程机器上快速尝试更改我的烹饪书,而不必上传它们?

    我在笔记本电脑上本地使用。当烹饪书准备好后,它会被推送到新的Git存储库主页,并集成到我的production chef服务器基础架构中

    以下示例在virtualbox映像上运行nginx

    例子 安装vagrant插件(只需执行一次):

    用于生成新的

    编辑以下文件(详细信息如下):


  • Vagrantfile在我的测试中,我大部分时间都会经历这个循环。但当我需要尝试对菜谱进行一些小改动时,我也会使用Chef solo。如果您有一台测试机,带有chef repo的本地副本,那么您可以尝试在那里进行更改并运行chef solo以查看结果。这样就不需要上传了

    你看过Berkshellf+TK+Vagrant吗?我听说过这个组合,但我认为它是一个更高级的主题,只与测试有关。我只有一台小型服务器和两台工作站,仅供我使用,并注册为免费托管厨师的节点。目前,我只想获得经验,熟悉chef并快速运行我的修改,而不需要一个涉及许多机器缓慢往返的循环。我甚至不得不将Berkself替换为Library,因为这迫使我使用一个更适合于具有多个DevOp的服务器场的复杂工作流
    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"