猫と一緒にガジェットライフ♪ムチャ(@mutoj_rdm821)です。
前回に続き、ChefでJavaアプリケーションのデプロイを行うクックブック”application_java”を使っていたときに遭遇した問題とその解決方法です。
前回記事はこちら↓
[Ruby] Chefで”database”クックブックを使ってCentOSにPostgreSQLを構成する際にはまったこと | 羽根帽子の太公望
クックブック”application_java”とは
Tomcatへのwarファイルのデプロイを自動化するものです。
どうも一般的にはChefのお仕事はミドルウェアの構成までで、その上で動くアプリケーションの構成については別のツール(Capistrano:カピストラーノなど)を使うようですが、今回は事情あってChefで全て行うというお達しでした。
クックブックは公式のコミュニティで配布されています。
そこからリンクされているgithubの方へ行くと、サンプルレシピが書いてあります。
application 'my-app' do path '/usr/local/my-app' repository '/nas/distro/my-app.war' revision '...' scm_provider Chef::Provider::File::Deploy java_webapp do database_master_role 'database_master' database do driver 'org.gjt.mm.mysql.Driver' database 'name' port 5678 username 'user' password 'password' max_active 1 max_idle 2 max_wait 3 end end tomcat end
別途”java”、”tomcat”、”application”クックブックも必要になります。これらもコミュニティで配布されています。
謎のエラーが発生
サンプル通りにchef-soloを実行すると、こんなエラーが出ました。
Error executing action `deploy` on resource 'deploy_revision[solr]'
コードを探ってもよくわからず・・・。
解決方法
色々探し回った結果、解決方法を見つけました。
配布元のリポジトリから別の人がforkしたリポジトリの、さらにtestというブランチに対応済みのコードがアップされていました。
こちらのクックブック一式を使うと正常にデプロイができました。
クックブックによっては、公式のコミュニティで配布されているものでも長いこと放置されていたりするので注意が必要です。かといって、bashリソースとかでシェルスクリプトをゴリゴリ書いてしまうと汎用性が失われるので、難しい所です。
今度技術評論社からChefの本が出るようなので、利用している人はチェックしてみてはいかがでしょうか。
それではみなさま良きガジェットライフを(´∀`)ノ