ChefでBerksを実行してOracle Javaをインストール

Chefでは、自分でレシピを書く以外でもコミュニティクックブックを利用することができるみたいです。 Apacheはもちろんかなりたくさんのクックブックがあり、Javaもありました。
というわけで、このCookbookを使ってOracleのJavaをインストールしてみたいと思います。

自分でCookbookをダウンロードして単独で利用する方法もあるとは思いますが、今回はBerkshelfを使いました。
Berkshelfは外部クックブックを管理するツールでクックブックに依存関係がある場合は依存するクックブックもダウンロードしてくれるみたいです。
Java業界で言うところのMavenとかGradleのようなものですかね。

実行環境

  • Windows7 64bit
  • Chef
  • Vagrant
  • VirtualBox

Berkshelfのインストール

コマンドラインから以下のコマンドを実行します。

gem install berkshelf

自分の環境では3.1.3がインストールされました。
ちなみに2系と3系ではコマンドの使い方が異なるので、注意が必要です。
今回はバージョン3に合わせて書きます。

Verksfileの作成

作業ディレクトリ、自分はVagrantfileがあるフォルダに「Berksfile」というファイルを作成してJavaのクックブックのインポートを宣言します。

source "https://api.berkshelf.com"

cookbook 'java'

berksコマンドの実行

berksコマンドを使ってクックブックのインポートを行いますが、コマンドを実行する前に作業フォルダとして指定するフォルダが存在する場合は削除します。
今回はcookbooksフォルダを指定しますので、すでに存在している場合は削除します。

berks vendor cookbooks

と実行すると、cookbooksフォルダにJavaフォルダが作成されました。

ノードに追加

ノードオブジェクトにJavaのクックブックを追加します。

{
  "java": {
    "install_flavor": "oracle",
    "jdk_version": 7,
    "oracle": {
      "accept_oracle_download_terms": true
    }
  },
  "run_list": [
    "recipe[java]"
  ]
}

また、今回は適当に指定しましたが、インストールオプションはかなり細かく指定できます。
socrata-cookbooks/java
今回のJavaのクックブックのバージョンは1.22.0なのですが、Oracle JDKのverion7を指定するとインストールされるバージョンは"1.7.0_51"となりました。
試してないのですが、特定のバージョンをインストールする場合はバージョンとチェックサムを指定すればインストールできるのではないかと思います。

実行

knife solo cookコマンドで実行します。
ターミナルでログインしてjava -versionでバージョンが表示されているとインストール完了です。