- 厨师教程
- 厨师 - 主页
- 厨师 - 概述
- 厨师 - 建筑
- Chef - 版本控制系统设置
- 厨师 - 工作站设置
- Chef - 客户端设置
- 厨师 - 测试厨房设置
- 厨师 - 刀具设置
- 厨师 - 独奏设置
- 厨师 - 食谱
- Chef - 食谱依赖项
- 厨师 - 角色
- 厨师 - 环境
- Chef - Chef-Client 作为守护进程
- 厨师 - Chef-Shell
- 厨师 - 测试食谱
- 厨师 - 美食评论家
- 厨师 - ChefSpec
- 使用测试厨房测试食谱
- 厨师 - 节点
- 厨师 - 厨师-客户运行
- 高级厨师
- 动态配置菜谱
- 厨师 - 模板
- Chef - 带有 Chef DSL 的纯 Ruby
- 厨师 - 红宝石宝石与食谱
- 厨师 - 图书馆
- 厨师 - 定义
- Chef - 环境变量
- 厨师 - 数据袋
- Chef - 数据包脚本
- Chef - 跨平台食谱
- 厨师 - 资源
- 轻量级资源提供者
- 厨师 - 蓝图
- Chef - 文件和包
- 厨师 - 社区食谱
- 厨师有用的资源
- 厨师 - 快速指南
- 厨师 - 有用的资源
- 厨师 - 讨论
厨师 - 模板
在基础设施中,配置管理就是关于如何配置主机。一般来说,所有的配置都是通过配置文件完成的。Chef 使用模板能够用动态值填充配置文件。
Chef 提供模板作为可在菜谱中使用的资源。配置文件的动态值可以从数据包、属性中检索,甚至可以通过将它们传递到模板中来计算它们。
如何使用它?
步骤 1 - 将模板添加到配方中。
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb template '/tmp/message' do source 'Test.erb' variables( hi: 'Tesing', world: 'Welt', from: node['fqdn'] ) end
步骤 2 - 添加ERB模板文件。
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb <%- 4.times do %> <%= @hi %>, <%= @world %> from <%= @from %>! <%- end %>
步骤 3 - 将修改后的食谱上传到 Chef 服务器。
vipin@laptop:~/chef-repo $ knife cookbook upload <Cookbook Name> Uploading my_cookbook [0.1.0] Run Chef Client on your node: user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2017-01-14T20:41:21+00:00] INFO: Processing template[/tmp/ message] action create (my_cookbook::default line 9) [2017-01-14T20:41:22+00:00] INFO: template[/tmp/message] updated content
步骤 4 - 验证上传文件的内容。
user@server:~$ sudo cat /tmp/message Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm! Hallo, Welt from vagrant.vm!
工作流程
Chef 使用 Erubis 作为其模板语言。它允许将纯 Ruby 代码嵌入模板中的特殊符号内。
如果要将变量或 Ruby 表达式的值打印到生成的文件中,请使用 <%= %>。
如果您想将 Ruby 逻辑嵌入到模板文件中,请使用 <%- %>。我们用它来循环我们的表达式四次。