[CentOS6][Chef] Chef11 で SOS JobScheduler をインストールする


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 ボタンをクリックするとアーカイブを入手できます。
ダウンロードした場合、『免責事項』に同意したものとみなします。

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で処理する都合上変更した箇所です。
attributes については以下のようなパラメータを使用しています。
$ 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 pending
foodcritic を実行すると、以下のように表示されます。
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/