Chef-templates
提供:Dev Guides
シェフ-テンプレート
インフラストラクチャでは、*構成管理*は、ホストをどの程度適切に構成するかに関するものです。 一般に、すべての構成は構成ファイルを使用して行われます。 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ロジックをテンプレートファイルに埋め込む場合に使用されます。 これを使用して式を4回ループします。