Provisioner

ChefでTomcatをバイナリインストールする(とりあえず動いた編)

投稿日:2014/06/02 更新日:

先日の記事に引き続き、ChefでTomcatをバイナリインストールする練習です。

取り急ぎ、先日の記事でなんとなくのレシピの骨子になるようなものを書きました。
今回は、具体的にレシピを書いて行ってとりあえず動くところまではもっていけました。
が、多分グダグダのレシピになっています。バージョンがベタ書きになっていたりして非常にメンテナス性の悪いものなので、後日修正したいと思います。

今の状態でレシピの全文を書いてもあまり意味がないと思いますので、先日のレシピの骨子にしたがって要所となる部分だけ記載していきたいと思います。

Tomcatアーカイブファイルの転送

cookbook_file "#{Chef::Config[:file_cache_path]}/apache-tomcat-7.0.54.tar.gz" do
    mode 00644
end

バイナリファイルはfiles/defaultディレクトリに配置しておきます。
これで、Chefのテンポラリディレクトリにファイルが転送されます。

Tomcatユーザー、グループの作成

user "tomcat" do
    comment  "tomcat user"
    home     "/home/tomcat"
    shell    "/bin/false"
    password nil
    supports :manage_home => true
    action   [:create, :manage]
end

group "tomcat" do
    members ['tomcat']
    action :create
end

Tomcatを実行するためのユーザーとグループを作成しています。ユーザーリソースでは、パスワードをなしにしてさらにログインシェルを/bin/falseとしログインできないようにしてあります。
グループリソースでは、tomcatユーザーをグループに追加するようにしてあります。

アーカイブ・ファイルの展開と配置

これが大変だった。
Chef実践入門の3章まで読んでいましたが、理解が弱かった部分があり多少インターネットで検索しました。

bash "install tomcat7" do
    code <<-EOF
        cd #{Chef::Config[:file_cache_path]}
        tar zxf apache-tomcat-7.0.54.tar.gz -C /var
        chown -R tomcat.tomcat /var/apache-tomcat-7.0.54
    EOF
    creates "/var/tomcat7"
end

link "/var/tomcat7" do
    to "/var/apache-tomcat-7.0.54"
end

template "/etc/profile.d/tomcat.sh" do
    source "tomcat.sh.erb"
    owner "root"
    group "root"
    mode 0644
end

tarでアーカイブを解凍して、tomcatオーナーに変更してます。createsというのは条件みたいなもので、この場合/var/tomcat7が存在する場合はこのリソースを実行しないようになります。まぁ実行する度にインストールしないようにするための抑止です。
インストールしたディレクトリにシンボリックリンクを作成してます。
また、Tomcat用の環境設定ファイルも合わせて配置してTomcatの起動ファイルから読み込みます。

起動ファイルの作成

template "/etc/rc.d/init.d/tomcat7" do
    source "init.rc.erb"
    owner "root"
    group "root"
    mode 0755
end

templates/default/init.rc.erbを配置してあります。

サービスへの追加、起動

実はここ、うまくいっておりません。

bash "chkconfig tomcat7" do
    code <<-EOL
        chkconfig --add tomcat7
    EOL
end

service "tomcat7" do
    action [:enable, :start]
end

サービスへの追加はできているのですが実行後にTomcatが起動しないので現在調査中。
コマンドラインから起動シェルを実行すればうまくいくので、リソースの使い方が間違っているのだと思います。

まとめ

色々調べたりはしましたが、極端に時間をかけることなくTomcatのバイナリインストールが行えました。
しかしながら、バージョンなどの環境情報がハードコーディングしてあるので次はこの値をAttributeに移動させるなどしてもう少し改良していきたいと思います。

-Provisioner
-

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

AnsibleでWordPress環境を構築する

AnsibleでWordPressの動作環境を構築するplaybookを書きました。 Ansibleが2.0系になってからしっかりとつかっていなかったのと、今使っているVPSで稼働しているOSがCen …

AnsibleでZabbixSever3.0の環境を構築する

最近、何のブログかわからなくなってきておりますが、久々のAnsibleネタです。 AnsibleでZabbixServer3.0を構築するPlaybookを書きました。 playbook-zabbix …

Chef実践入門を買ってみた

昨年くらいからChefやDevOpsという言葉をよく耳にする機会があって、Chefはすごい便利そうだなーと色々なホームページを見て自分の環境に導入してみたが実際の業務に使えるというほど深く触れなかった …

ChefでTomcatをインストールする(パッケージインストール)

Chef実践入門を第三章まで読み進めました。 2章は実際にChefを動かしてみてどういうものかとりあえず触ってみる章でしたが、3章はRecipeの書き方など2章で書いて動いていた部分を詳細に説明する章 …

Windows7 64bitでChefとKnife-soloを実行

MacであればVagrantとChefの環境は比較的簡単に構築できます。 ですが会社だと政治的な理由?からどうしてもMacを利用できない。けどVagrantとChefを使いたいということがあるのではな …