fbpx

CL LAB

HOME > CL LAB > Chef > [和訳] Chef Supermarketを使おう: ガイドツアー #getchef

[和訳] Chef Supermarketを使おう: ガイドツアー #getchef

 ★ 10

本稿は Using Chef Supermarket: A Guided Tour (2015/03/16) の和訳です。

SupermarketはChefコミュニティの中央に位置する、Cookbook、ツール、プラグインの共有を行う情報センターです。Chefコミュニティメンバーが、コミュニティCookbookをダウンロードしたり、Cookbookの共同作業を行ったり、他のコミュニティメンバーに使ってもらうためにCookbookをアップロードしたりする場所です。また、Chefのエコシステムを改善するためのツールについての情報共有を行う場所でもあります。Supermarketは、個人または企業でContributor License Agreements (CLA's)に署名することで、Chefのオープンソースプロジェクトに参加しやすくするようにしてあります。詳しい情報はSupermarketのアナウンス記事を参照してください。

現在、Supermarketには2つのバージョンがあります。

パブリックSupermarket

Chef Supermarketのサイトです。これはオープンソースプロジェクトなので、GitHubレポジトリからダウンロードしたり、開発に参加することもできます。

プライベートSupermarket

独自のインフラ上でプライベートに動作させられるSupermarketです。このガイドではSupermarketのプライベートバージョンは説明しませんが、同じ原理の多くが適用できます。プライベートSupermarketのガイドにご期待ください!

Supermarketを始めよう

Supermarketを使うためにいくつか必要なものがあります。

Knife

SupermarketとやりとりするにはKnifeが必要になります。

Knife (やその他SupermarketとChefの両方に必要な多くのツール)を最も簡単にインストールするにはChef Development Kitをインストールするとよいでしょう。

knife.rbファイルを設定してください。

このガイドでは、KnifeとSupermarketを使う基礎を説明していきます。各種コマンドやオプションの詳しい情報は、knife cookbook siteを参照してください。

Supermarketを閲覧する

これで、Supermarketサイトに存在するコミュニティCookbookを閲覧するいくつかの方法が取れるようになりました。

リスト

Supermarketから利用できるすべてのコミュニティCookbookのリストを取得するには、次のように実行します。

$ knife cookbook site list

次のような大量の出力が得られるはずです。

  1password                            minecraft
  301                                  mineos
  7-zip                                minidlna
  AWS_see_spots_run                    minitest
  AmazonEC2Tag                         minitest-handler
  Appfirst-Cookbook                    mirage
  CVE-2014-3566-poodle                 mlocate
  CVE-2015-0235                        mod_security
  Obfsproxy                            mod_security2
  R                                    modcloth-hubot
  Rstats                               modcloth-nad
  SysinternalsBginfo                   modman
  VRTSralus                            modules
  abiquo                               mogilefs
  acadock                              mongodb
  accel-ppp                            mongodb-10gen
  accounts                             mongodb-agents
  accumulator                          monit
  [などなど]

検索

特定のCookbookを見つけるには? 2015年2月に最も多くダウンロードされたCookbookはmysql Cookbookでした。もしこのCookbookを検索したいなら、次のようなコマンドを使えばよいでしょう。

$ knife cookbook site search mysql

次のような結果が得られます。

  mysql:
    cookbook
:            http://cookbooks.opscode.com/api/v1/cookbooks/mysql
    cookbook_description
: Provides mysql_service, mysql_config, and mysql_client resources
    cookbook_maintainer
: chef
    cookbook_name
:       mysql
  mysql-apt-config
:
    cookbook
:            http://cookbooks.opscode.com/api/v1/cookbooks/mysql-apt-config
    cookbook_description
: Installs/Configures mysql-apt-config
    cookbook_maintainer
: tata
    cookbook_name
:       mysql-apt-config
  mysql-multi
:
    cookbook
:            http://cookbooks.opscode.com/api/v1/cookbooks/mysql-multi
    cookbook_description
: MySQL replication wrapper cookbook
    cookbook_maintainer
: rackops
    cookbook_name
:       mysql-multi

最初のmysql Cookbookに注目してみましょう。

表示

特定のCookbookに関する詳しい情報を表示したいなら、次のように実行します。

$ knife cookbook site show mysql

次のような結果が得られます。

average_rating:
  category
:          Other
  created_at
:        2009-10-28T19:16:54.000Z
  deprecated
:        false
  description
:       Provides mysql_service, mysql_config, and mysql_client resources
  external_url
:      http://github.com/opscode-cookbooks/mysql
  foodcritic_failure
: true
  issues_url
:
  latest_version
:    http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/6.0.15
  maintainer
:        chef
  metrics
:
    downloads
:
      total
:   79275449
    versions
:
      0.10.0
: 927561
      0.15.0
: 927536
      0.20.0
: 927321
      0.21.0
: 927298
      0.21.1
: 927311
      0.21.2
: 927424
      0.21.3
: 927441
      0.21.5
: 927326
      0.22.0
: 927297
      0.23.0
: 927353
      0.23.1
: 927862
      0.24.0
: 927316

Cookbookの特定のバージョンを詳しく見たいなら、次のようにコマンドにバージョンを含めます。

$ knife cookbook site show mysql 0.10.0

次のような結果が得られます。

average_rating:
  cookbook
:         http://cookbooks.opscode.com/api/v1/cookbooks/mysql
  file
:             http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0.10.0/download
  license
:          Apache 2.0
  tarball_file_size
: 7010
  version
:          0.10.0

Supermarketからダウンロード、インストールする

コミュニティサイトからCookbookをダウンロード、インストールする準備はできましたか?

ダウンロード

Cookbookをtar.gzアーカイブとしてダウンロードし、カレントワーキングディレクトリに置くには、downloadコマンドを使います。

$ knife cookbook site download mysql

インストール

CookbookのインストールはCookbookダウンロードと似ていますが、Cookbookをtar.gzとして保存するのではなく、Cookbookを展開し、オリジナルのCookbookに追従できるようにgitブランチを設定します。Stack Overflowのすばらしい説明を見てください。

また、依存関係を解決し、依存するCookbookについて新しいブランチを作成します。

$ knife cookbook site install mysql

注意: 「ERROR: IOError: Cannot open or read /Users/nshamrell/chef-repo/cookbooks/mysql/metadata.rb」というエラーが出たら、使っているKnifeのバージョンを確認してください。

$ knife -v

Chef: 12.0.2より低いなら、Knifeのバージョンを更新する必要があります。しかし、もしChef DKとrvmを使っているなら、次のようにしてみてください。

$ rvm use system

そして再実行してください。

$ knife cookbook site install mysql

Supermarketにアップロードする

では、CookbookをSupermarketにアップロードしましょう。もし独自のCookbookを持っているなら、是非そうしてください! もしSupermarketにアップロードの練習のためにとても基本的な独自のCookbookを作るというガイダンスが必要なら、Supermarketドキュメントの「Create Cookbook」を見てください。

共有

SupermarketにCookbookをアップロードする前に、少し準備する必要があります。まず、knife.rb設定ファイルを見てください。例えば.chef/knife.rbです。

次のような行になっている必要があります。もしまだ存在していなければ、追加してください。

  # Supermarketにログインするためのログイン名に置き換えてください。
  node_name "nellshamrell"

  # client.pemファイルへのパスを定義してください。
  # Chefアカウントにサインアップしたときに生成されたキーです。
  client_key "#{ENV['HOME']}/.chef/client.pem"

  # アップロードするCookbookを置いてあるディレクトリです。
  cookbook_path [ '/Users/nshamrell/Projects/my_chef_repo/cookbooks' ]

また「source_url」と「issues_url」の両方をCookbookのmetadataに追加することを推奨します。SupermarketにCookbookが表示された際、GitHubレポジトリのようなCookbookのソースへのリンクとGitHubイシューのようなイシュートラッカーも表示されます。

では、次のコマンドでSupermarketにCookbookをアップロードしましょう!

$ knife cookbook site share "my_apache2_cookbook" "Web Servers"

ここではCookbookが属するSupermarketカテゴリとして「Web Servers」を定義しています。使用可能な他のカテゴリは「Databases」、「Process Management」、「Monitoring & Trending」、「Programming Languages」、「Package Management」、「Applications」、「Networking」、「Operating Systems & Virtualization」、「Utilities」、「Other」です。

stove

stoveはCookbookを共有するためのもう一つのツールです。詳しい情報はGitHubのプロジェクトページを見てください。

非共有

SupermarketからCookbookを非共有する必要になってしまったら、「unshare」コマンドを使います。

$ knife cookbook site unshare my_apache2_cookbook

これはSupermarketサイトからCookbookを削除します。

もし、

ERROR: Invalid Redirect: DELETE request was redirected from https://supermarket.getchef.com/api/v1/cookbooks/my_apache2_cookbook to https://supermarket.chef.io/api/v1/cookbooks/my_apache2_cookbook. Only GET and HEAD support redirects.
Change your server location in knife.rb to the server's FQDN to avoid unwanted redirections.

このようなエラーが出てしまったら、Chefバージョンを12.1.1以上にアップグレードする必要があります。Chef ClientダウンロードサイドからOSに合ったものをダウンロード、インストールしてください。

詳しくはSupermarketドキュメントを参照してください。

これでChef Supermarketの基本を身につけることができました! Happy cooking!

CL LAB Mail Magazine

CL LABの情報を逃さずチェックしよう!

メールアドレスを登録すると記事が投稿されるとメールで通知します。

メールアドレス: 登録

※登録後メールに記載しているリンクをクリックして認証してください。

Related post