Chef-ruby-gems-with-recipes

提供:Dev Guides
移動先:案内検索

シェフ-レシピ付きRuby Gems

レシピは、基本的にRubyコードであるクックブックの主要な構成要素です。 Chefレシピ内ですべてのRuby言語機能を使用できます。 ほとんどの場合、Rubyビルドイン機能で十分ですが、場合によっては追加のRuby gemを使用する必要があります。 たとえば、レシピ自体からMySQLデータベースにアクセスする必要がある場合。

Chefレシピには、同じレシピ内で使用するために必要なRuby gemを取得する機能があります。

特定のレシピでiptable Gemを使用する

  • ステップ1 *-クックブックのデフォルトレシピを編集し、レシピ内で使用するgemをインストールします。
vipin@laptop:~/chef-repo $ subl
cookbooks/my_cookbook/recipes/default.rb
chef_gem 'ipaddress'
require 'ipaddress'
ip = IPAddress("192.168.0.1/24")
Chef::Log.info("Netmask of #{ip}: #{ip.netmask}")
  • ステップ2 *-変更したクックブックをChefサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
  • ステップ3 *-Chefクライアントを実行して出力を確認します。
user@server $ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-18T14:02:02+00:00] INFO: Netmask of 192.168.0.1:
255.255.255.0
...TRUNCATED OUTPUT...

作業方法

Chefの実行手順は、すべてのリソースをコンパイルするコンパイルフェーズと、ノードを目的の状態に収束させるためにChefがリソースプロバイダーを実行する実行フェーズで構成されます。 クックブック内に特定のRuby gemが必要な場合は、複雑化フェーズでgemをインストールする必要があります。

chef_gemリソースはまったく同じことを行います。Chefでは、オムニバスが唯一の作業方法です。 その主な機能は、宝石をChef自体で利用できるようにすることです。