berkflow, 基于 cookbook的部署工作流工具

分享于 

5分钟阅读

GitHub

  繁體 雙語
A Cookbook-Centric Deployment workflow tool
  • 源代码名称:berkflow
  • 源代码网址:http://www.github.com/berkshelf/berkflow
  • berkflow源代码文档
  • berkflow源代码下载
  • Git URL:
    git://www.github.com/berkshelf/berkflow.git
    Git Clone代码到本地:
    git clone http://www.github.com/berkshelf/berkflow
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/berkshelf/berkflow
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Berkflow

    使用Berkshelf和环境 cookbook Pattern 管理厨师环境的命令行 工具。

    环境 cookbook Pattern的TLDR ;你有一个顶级 cookbook,它被锁定到厨师环境中。 每个厨师环境一个应用程序。 这里厨师环境名为 {application_name}-{environment} ( 例如。 "myface开发")。

    要求

    安装

    安装 chef 并添加它,它是你的路径的gem 二进制目录

    $ export PATH=/opt/chefdk/bin:$HOME/.chefdk/gem/ruby/2.1.0/bin:$PATH

    将Berkflow安装到 ChefDK

    $ chef gem install berkflow
    $ which blo
    /Users/reset/.chefdk/gem/ruby/2.1.0/bin/blo

    用法

    $ blo help

    升级厨师环境

    Berkflow公开了将厨师环境配置为特定环境 cookbook 版本的命令,并在该环境的所有节点上运行厨师客户端。

    $ blo upgrade myface-dev myface 1.2.3
    Applying cookbook locks to myface-dev...
    Discovering nodes in myface-dev...
    Running Chef Client on 10 nodes...
    Successfully ran Chef Client on 10 nodes
    Done. See berkflow_out/20140331172904 for logs.

    你还可以通过通过 latest 升级到在 Chef server 上找到的cookbook的最新版本

    $ blo upgrade myface-dev myface latest

    或者只是将版本留空

    $ blo upgrade myface-dev myface

    你的Chef server 必须满足以下要求:

    • myface-dev 环境必须存在
    • myface cookbook ( 它是依赖)的版本 1.2.3必须上载到服务器上
    • myface版本 1.2.3必须有一个具有 Berksfile.lock的Berksfile.lock. cookbook,它被称为environment环境 cookbook""

    注意:早期版本的Berkshelf生成了一个chefignore文件,其中包含 Berksfile.lock.,这将阻止你的Berksfile.lock 被上传。 从 cookbook的chefignore中删除这一行。 这已经在Berkshelf主机中修复,并将随 Berkshelf 3.0.

    默认情况下,你登录到当前计算机的用户和默认id_rsa密钥将用于SSH身份验证。 请参见帮助菜单,了解如何覆盖SSH设置。

    在厨师环境中运行厨师客户

    Berkflow已经介绍了如果你只想在厨师环境中的所有节点上运行in客户端。

    
    $ blo run_chef myface-dev
    
    
    Discovering nodes in myface-dev...
    
    
    Running Chef Client on 10 nodes...
    
    
    Successfully ran Chef Client on 10 nodes
    
    
    Done. See berkflow_out/20140331180610 for logs.
    
    
    
    

    在厨师环境中运行 shell-命令

    运行任意 shell 命令也是可能的 !

    
    $ blo exec myface-dev"ls -lah"
    
    
    Discovering nodes in myface-dev...
    
    
    Executing command on 10 nodes...
    
    
    Successfully executed command on 10 nodes
    
    
    Done. See berkflow_out/20140331180708 for logs.
    
    
    
    

    使用 blo exec 执行的shell 命令在默认情况下不运行。 使用--sudo标志提升。

    $ blo exec myface-dev "ls -lah" --sudo

    将Berkshelf软件包安装到 Chef server 中

    通过Berkflow可以轻松地将 berks package 生成的包安装到 Chef server。

    $ blo install https://github.com/berkshelf/berkshelf-cookbook/releases/download/v0.3.1/cookbooks.tar.gz

    它也适用于 filepaths

    
    $ blo install cookbooks.tar.gz
    
    
    
    

    安装软件包将把每个 cookbook 上传并冻结到你配置的Chef server 中。 已经冻结的烹饪内容将被跳过,除非你指定--force标志。

    
    $ blo install cookbooks.tar.gz --force
    
    
    
    

    • fork ( https://github.com/reset/berkflow/fork )
    • 创建你的特征分支( git checkout -b my-new-feature )
    • 提交你的更改( git commit -am 'Add some feature' )
    • 推送到分支( git push origin my-new-feature )
    • 创建新的拉请求

    作者

    Jamie Winsor ( jamie@vialstudios.com )


    tool  DEP  流程  Cookbook  部署