Create: 2013/08/17
LastUpdate: 2013/08/17
ここでは、Chef11 を使用して、CentOS6.4(32bit)に SOS JobScheduler をインストールしてみます。
Chef11 は、「 [CentOS6] Chef11 + Chefspec で試すインフラの構成管理」 で構築したクライアント・サーバ型のテスト環境を使用します。
[テスト環境]
- 192.168.1.67(centos6g) ・・・ Chefサーバ、Chefワークステーション
- 192.168.1.69(centos6i) ・・・ Chefノード、SOS JobScheduler
今回は、「 [CentOS6] ジョブ管理 - SOS JobScheduler」で紹介した、「2.Managerのセットアップ手順」を、なるべく、そのままレシピにすることにしますが、OSのインストールについては、レシピに含めません。
CentOS6.4の最小構成の状態にレシピを適用することにします。
Chefの環境と使用方法などは、「 [CentOS6] Chef11 + Chefspec で試すインフラの構成管理」を参考にしてください。
1.Cookbook の作成
"sosjs" の名称で Cookbook を作成したので、以下に紹介します。
Cookbook は、下図の Download ボタンをクリックするとアーカイブを入手できます。
ダウンロードした場合、『免責事項』に同意したものとみなします。
※files ディレクトリの jdk / mysql-connector / scheduler_linux は、同梱していないので、「 2.Managerのセットアップ手順」を参照して入手してください。
Cookbook の構成は、以下のとおり。
$ tree sosjs sosjs ├── CHANGELOG.md ├── README.md ├── attributes │ └── default.rb ├── definitions ├── files │ └── default │ ├── jdk-7u13-linux-i586.rpm │ ├── mysql-connector-java-5.1.23.tar.gz │ └── scheduler_linux.1.3.12.3044.tar.gz ├── libraries │ ├── provider_database_mysql.rb │ ├── provider_database_mysql_user.rb │ ├── resource_database.rb │ ├── resource_database_user.rb │ ├── resource_mysql_database.rb │ └── resource_mysql_database_user.rb ├── metadata.rb ├── providers ├── recipes │ ├── default.rb │ ├── java.rb │ ├── jobscheduler.rb │ ├── mysql.rb │ ├── os.rb │ └── user.rb ├── resources ├── spec │ ├── default_spec.rb │ ├── java_spec.rb │ ├── jobscheduler_spec.rb │ ├── mysql_spec.rb │ ├── os_spec.rb │ └── user_spec.rb └── templates └── default ├── gdm_custom.conf.erb ├── inittab.erb ├── jobscdl.erb ├── my.cnf.erb ├── scheduler_install.xml.erb ├── selinux_config.erb ├── sudoers.erb ├── sysconfig_clock.erb ├── sysconfig_i18n.erb └── vnc-server.erb 11 directories, 35 files各レシピと、「 2.Managerのセットアップ手順」 の対応は以下のとおり。
※は、主に、Chefで処理する都合上変更した箇所です。
- sosjs::os
2.1.CentOS6.3(32bit版)のインストール
※OSインストールは除く - sosjs::user
2.2.JobScheduler用のOSアカウント作成
※ sudo はttyを無効にし、jobsをパスワードなしに設定 - sosjs::mysql
2.3.MySQLのインストール - sosjs::java
2.4.Javaのインストール - sosjs::jobscheduler
2.5.JobSchedulerFullInstall のインストール
※ バッチインストールを実施。また、イベントハンドラを有効に設定
$ cat sosjs/attributes/default.rb # OS Setting Run Flag ( 1: run 0: pass ) default["sosjs"]["os"]["run_selinux"] = 1 default["sosjs"]["os"]["run_iptables"] = 1 default["sosjs"]["os"]["run_i18n"] = 1 default["sosjs"]["os"]["run_timezone"] = 1 default["sosjs"]["os"]["run_gnome"] = 1 # OS Account default["sosjs"]["os"]["user"] = "jobs" default["sosjs"]["os"]["password"] = "$1$UJEz6zz2$m6nk14YF5.1y5upgZatI/." default["sosjs"]["os"]["shell"] = "/bin/bash" # MySql default["sosjs"]["mysql"]["charset"] = "utf8" default["sosjs"]["mysql"]["db"] = "scdl" default["sosjs"]["mysql"]["user"] = "scdl_user" default["sosjs"]["mysql"]["password"] = "scdl_pass" # Install Files default["sosjs"]["files"]["java"] = "jdk-7u13-linux-i586.rpm" default["sosjs"]["files"]["jdbc"] = "mysql-connector-java-5.1.23.tar.gz" default["sosjs"]["files"]["js"] = "scheduler_linux.1.3.12.3044.tar.gz" # Install params default["sosjs"]["install"]["jdbc"] = "/opt/mysql-connector-java-5.1.23/mysql-connector-java-5.1.23-bin.jar"attributes 各パラメータの意味は以下のとおり。
- [OS Setting Run Flag]は、設定を実行するかどうかを指定します。SElinux や ファイヤーウォールが無効になっているサーバを使用する場合などは、設定値を "0" にすれば、設定実行をパスします。
- [OS Account]は、JobScheduler用のユーザです。パスワードは"jobs"ですが暗号化してあります。
- [MySql]は、JobScheduler用のデータベースです。
- [Install Files]は、パッケージのソースです。 Cookbook に同梱します。
- [Install params]は、jdbc のパスです。 [Install Files]の jdbcアーカイブ は、/opt に解凍するので、解凍後のjdbcファイルのフルパスを指定します。
2.Cookbook のテスト
sosjs の Cookbook には、Chefspec のテストコードも同梱しています。
Chefワークステーションで Chefspec を実行して、すべて正常であれば以下のように表示されます。
$ rspec -fd --color sosjs sosjs::java should install java should install mysql-jdbc sosjs::jobscheduler should install jobscheduler should start service sosjs::mysql should install mysql should setting mysql should start service should create link should install gem should create database (PENDING: no example.) sosjs::os should disable SElinux should disable iptables should setting LANG should setting clock should install Gnome Desktop should install VNC server should setting xinetd should setting custom.conf should setting inittab should install package sosjs::user should create user should setting sudo Pending: sosjs::mysql should create database # no example. # ./sosjs/spec/mysql_spec.rb:36 Finished in 0.6854 seconds 22 examples, 0 failures, 1 pendingfoodcritic を実行すると、以下のように表示されます。
sosjs::os でエラーが2件出力されますが、動作には問題ないようだったので、今回は無視しました。(ruby に詳しくないので、エラーの対処方法がわかりませんでした)
$ foodcritic ./sosjs FC023: Prefer conditional attributes: ./sosjs/recipes/os.rb:16 FC023: Prefer conditional attributes: ./sosjs/recipes/os.rb:40
3.Cookbook のレシピ実行
Cookbookを実行して、Chefノード(centos6i)にJobScheduler をインストールします。
Chefノード(centos6i)は、Chefサーバに登録済とします。
まず、sosjs の Cookbook をChefサーバにアップロードしたいので、Chefワークステーションで以下のように knife コマンドを実行します。
$ knife cookbook upload sosjs Uploading sosjs [0.1.0] Uploaded 1 cookbook.次に、Chefノード(centos6i)の Run_list に sosjs のレシピを追加したいので、Chefワークステーションで以下のように knife コマンドを実行します。
$ knife node run_list add centos6i recipe[sosjs::os],recipe[sosjs::user],recipe[sosjs::mysql],recipe[sosjs::java],recipe[sosjs::jobscheduler] centos6i: run_list: recipe[sosjs::os] recipe[sosjs::user] recipe[sosjs::mysql] recipe[sosjs::java] recipe[sosjs::jobscheduler]Chefノード(centos6i)に root ユーザでログインし、以下のようにレシピを実行します。
# /opt/chef/bin/chef-clientレシピの実行が完了したら、サーバをリブートします。
Chef でランレベルを "3" → "5" に変更したので、サーバをリブートして、GUI を使えるようにします。
なお、JobScheduler 関連のサービスは、自動的に開始します。
リブート完了後、ブラウザで JobScheduler のJOCにアクセスできれば、インストール成功です。
- http://192.168.1.69:4444/