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回ループします。