- 厨师教程
- 厨师 - 主页
- 厨师 - 概述
- 厨师 - 建筑
- Chef - 版本控制系统设置
- 厨师 - 工作站设置
- Chef - 客户端设置
- 厨师 - 测试厨房设置
- 厨师 - 刀具设置
- 厨师 - 独奏设置
- 厨师 - 食谱
- Chef - 食谱依赖项
- 厨师 - 角色
- 厨师 - 环境
- Chef - Chef-Client 作为守护进程
- 厨师 - Chef-Shell
- 厨师 - 测试食谱
- 厨师 - 美食评论家
- 厨师 - ChefSpec
- 使用测试厨房测试食谱
- 厨师 - 节点
- 厨师 - 厨师-客户运行
- 高级厨师
- 动态配置菜谱
- 厨师 - 模板
- Chef - 带有 Chef DSL 的纯 Ruby
- 厨师 - 红宝石宝石与食谱
- 厨师 - 图书馆
- 厨师 - 定义
- Chef - 环境变量
- 厨师 - 数据袋
- Chef - 数据包脚本
- Chef - 跨平台食谱
- 厨师 - 资源
- 轻量级资源提供者
- 厨师 - 蓝图
- Chef - 文件和包
- 厨师 - 社区食谱
- 厨师有用的资源
- 厨师 - 快速指南
- 厨师 - 有用的资源
- 厨师 - 讨论
厨师 - Chef-Shell
写厨师食谱总是很困难。这使得事情变得更加困难,因为将它们上传到 Chef 服务器、配置流浪虚拟机、检查它们如何失败、冲洗和重复的反馈周期很长。如果我们在一次完成所有这些繁重的工作之前可以尝试测试一些片段或食谱,那就会更容易。
Chef 附带了 Chef-Shell,它本质上是与 Chef 的交互式 Ruby 会话。在 Chef-Shell 中,我们可以创建 -
- 属性
- 写食谱
- 初始化 Chef 运行
它用于动态评估菜谱的各个部分,然后将其上传到 Chef 服务器并在节点上执行完整的菜谱。
运行外壳
步骤 1 - 以独立模式运行 Chef-Shell。
mma@laptop:~/chef-repo $ chef-shell loading configuration: none (standalone chef-shell session) Session type: standalone Loading...[2017-01-12T20:48:01+01:00] INFO: Run List is [] [2017-01-12T20:48:01+01:00] INFO: Run List expands to [] done. This is chef-shell, the Chef Shell. Chef Version: 11.0.0 http://www.opscode.com/chef http://wiki.opscode.com/display/chef/Home run `help' for help, `exit' or ^D to quit. Ohai2u mma@laptop! chef >
步骤 2 - 在 Chef-Shell 中切换到属性模式
厨师 > 属性模式
步骤 3 - 设置属性值。
Chef:attributes > set[:title] = "厨师食谱"
《厨师食谱》
厨师:属性>退出
:属性
厨师 >
步骤 4 - 切换到食谱模式。
厨师 > 食谱模式
步骤 5 - 创建文件资源。
chef:recipe > file "/tmp/book.txt" do chef:recipe > content node.title chef:recipe ?> end => <file[/tmp/book.txt] @name: "/tmp/book.txt" @noop: nil @ before: nil @params: {} @provider: Chef::Provider::File @allowed_ actions: [:nothing, :create, :delete, :touch, :create_if_missing] @action: "create" @updated: false @updated_by_last_action: false @supports: {} @ignore_failure: false @retries: 0 @retry_delay: 2 @source_line: "(irb#1):1:in `irb_binding'" @elapsed_time: 0 @ resource_name: :file @path: "/tmp/book.txt" @backup: 5 @diff: nil @cookbook_name: nil @recipe_name: nil @content: "Chef Cookbook"> chef:recipe >
步骤 6 - 开始运行 Chef 以创建具有给定内容的文件。
厨师:食谱 > run_chef
[2017-01-12T21:07:49+01:00] INFO: Processing file[/tmp/book.txt] action create ((irb#1) line 1) --- /var/folders/1r/_35fx24d0y5g08qs131c33nw0000gn/T/cheftempfile20121212- 11348-dwp1zs 2012-12-12 21:07:49.000000000 +0100 +++ /var/folders/1r/_35fx24d0y5g08qs131c33nw0000gn/T/chefdiff20121212- 11348-hdzcp1 2012-12-12 21:07:49.000000000 +0100 @@ -0,0 +1 @@ +Chef Cookbook \ No newline at end of file [2017-01-12T21:07:49+01:00] INFO: entered create [2017-01-12T21:07:49+01:00] INFO: file[/tmp/book.txt] created file /tmp/book.txt
怎么运行的
Chef-Shell 从交互式 Ruby (IRB) 会话开始,该会话增强了一些特定功能。
它提供了诸如attributes_mode和interactive_mode之类的模式。
它有助于编写命令,这些命令写在菜谱或食谱中。
它以交互模式运行一切。
我们可以以三种不同的模式运行 Chef-Shell:独立模式、客户端模式和独奏模式。
独立模式- 这是默认模式。未加载任何食谱,并且运行列表为空。
客户端模式- 在这里,厨师外壳充当厨师客户端。
独奏模式- 在这里,厨师外壳充当厨师独奏客户端。