■Java(デフォルト6)
□実行方法
- git clone git://github.com/opscode-cookbooks/java.git
- git clone git://github.com/opscode-cookbooks/windows.git
- git clone git://github.com/opscode-cookbooks/chef_handler.git
vim /chef-repo/cookbooks/java.json
{
"override_attributes": {
"java": {
"install_flavor": "oracle"
}
},
"run_list": [
"recipe[java]"
]
}
chef-solo -j /chef-repo/cookbooks/java.json
□実行結果
- open-jdk-1.6.0がインストールされた
java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.9) (rhel-1.57.1.11.9.el6_4-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) ⇒20140228追記:1.6.0_30がインストールされるようになっていた
- yum installで実施しているみたいだが非常に時間がかかる(賞味30分くらい)
- Chef::Exceptions::CookbookNotFound: Cookbook windows not found. If you're loading windows from another cookbook, make sure you configure the dependency in your metadata対策
上記2つのcookbooks「windows」と「chef_hander」も必要
- ※override_attributesに関して
chef-soloにoverride_attributesの概念はない roleに対してはoverrideできるが、レシピに記載されているdefaultのattributeに対してchef-soloの場合効果がない override_attributesを指定しないでjsonに直接実行すれば、default_attributeの値を上書きして実行してくれる
■Java(java7へ変更)
□実行方法
- git clone するものは上記のJava(デフォルト6)と同様
vim /chef-repo/cookbooks/java.json
{
"java": {
"install_flavor": "oracle",
"jdk_version": 7,
"java_home": "/usr/local/java",
"oracle" : {
"accept_oracle_download_terms": true
}
},
"run_list": [
"recipe[java]"
]
}
chef-solo -j /chef-repo/cookbooks/java.json
□実行結果
- oracle javaの1.7がインストールされた
java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) ⇒20140228追記:1.7.0_51がインストールされるようになっていた
■Emacs
□実行
- git clone git://github.com/opscode-cookbooks/emacs.git
vim /chef-repo/cookbooks/emacs.json
{
"run_list": [
"recipe[emacs]"
]
}
chef-solo -j /chef-repo/cookbooks/emacs.json
□実行結果
- GNU Emacs 23.1.1 (x86_64-redhat-linux-gnu) of 2012-03-01 on c6b18n3.bsys.dev.centos.org
■Tomcat7
⇒20140228追記:すいません、うまく動作しないようです
FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
が出てうまくインストールできません
□実行
git clone git://github.com/opscode-cookbooks/tomcat.git
- git clone git://github.com/mcortesi/tomcat.git
- git clone git://github.com/opscode-cookbooks/java.git
- git clone git://github.com/opscode-cookbooks/windows.git
- git clone git://github.com/opscode-cookbooks/chef_handler.git
yum -y install yum-plugin-priorities
rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
yum clean all
yum -y update
vim /chef-repo/cookbooks/tomcat.json
{
"tomcat": {
"base_version": 7
},
"java": {
"install_flavor": "oracle",
"jdk_version": 7,
"java_home": "/usr/local/java",
"oracle" : {
"accept_oracle_download_terms": true
}
},
"run_list": [
"recipe[java]",
"recipe[tomcat]"
]
}
chef-solo -j /chef-repo/cookbooks/tomcat.json
□実行結果
■Tomcat7 その2
□実行
- git clone git://github.com/opscode-cookbooks/java.git
- git clone git://github.com/opscode-cookbooks/windows.git
- git clone git://github.com/opscode-cookbooks/chef_handler.git
- git clone git://github.com/bryanwb/chef-tomcat.git
cp -ipr chef-tomcat tomcat (tomcatという自分自身と同じ内容のcookbooksが必要)
- git clone git://github.com/opscode-cookbooks/ark.git
- git clone git://github.com/opscode-cookbooks/logrotate.git
vim /chef-repo/cookbooks/chef-tomcat.json
{
"run_list": [
"recipe[chef-tomcat]"
]
}
chef-solo -j /chef-repo/cookbooks/chef-tomcat.json
□実行結果
- /usr/local/tomcat/default/bin/version.sh
- Server version: Apache Tomcat/7.0.32
■MongoDB
□実行
- git clone git://github.com/kakakikikeke/cookbooks-jpackage.git
- git clone git://github.com/edelight/chef-mongodb.git
cp -ipr chef-mongodb mongodb (mongodbという自分自身と同じ内容のcookbooksが必要)
- git clone git://github.com/opscode-cookbooks/apt.git
- git clone git://github.com/opscode-cookbooks/yum.git
- git clone git://github.com/opscode-cookbooks/python.git
- git clone git://github.com/opscode-cookbooks/build-essential.git
- git clone git://github.com/opscode-cookbooks/yum-epel.git
- git clone git://github.com/opscode-cookbooks/runit.git
vim /chef-repo/cookbooks/chef-mongodb.json
{
"run_list": [
"recipe[cookbooks-jpackage]",
"recipe[chef-mongodb]"
]
}
chef-solo -j /chef-repo/cookbooks/chef-mongodb.json
□実行結果
- MongoDB shell version: 2.4.2
⇒20140228追記:2.4.9がインストールされるようになってました
- 自作のcookbooksを使って10genのリポジトリを追加しています
■Redis
□実行
- git clone git://github.com/brianbianco/redisio.git
- git clone git://github.com/bmhatfield/chef-ulimit.git
mv chef-ulimit ulimit
vim /chef-repo/cookbooks/redisio.json
{
"run_list": [
"recipe[redisio::install]",
"recipe[redisio::enable]"
]
}
chef-solo -j /chef-repo/cookbooks/redisio.json
□実行結果
- redis-cli 2.6.11
⇒20140228追記:2.6.17がインストールされるようになってました
- 設定ファイルは /etc/redis/6379.conf にある
- デフォルトのポートは6379でLISTENしている
- 起動ファイルは /etc/init.d/redis6379 にある
- sentinelの起動は以下で実施できます(設定ファイルは作成してください)
/usr/local/bin/redis-server /etc/redis/sentinel.conf --sentinel
■Jenkins
□実行
- git clone git://github.com/opscode-cookbooks/apache2.git
- git clone git://github.com/opscode-cookbooks/iptables.git
- git clone git://github.com/opscode-cookbooks/chef_handler.git
- git clone git://github.com/opscode-cookbooks/windows.git
- git clone git://github.com/opscode-cookbooks/java.git
- git clone git://github.com/opscode-cookbooks/apt.git
- git clone git://github.com/opscode-cookbooks/essential.git
- git clone git://github.com/opscode-cookbooks/ohai.git
- git clone git://github.com/opscode-cookbooks/yum.git
- git clone git://github.com/opscode-cookbooks/nginx.git
- git clone git://github.com/opscode-cookbooks/runit.git
- git clone git://github.com/opscode-cookbooks/jenkins.git
- git clone git://github.com/opscode-cookbooks/build-essential.git
vim /chef-repo/cookbooks/jenkins.json
{
"run_list": [
"recipe[jenkins::master]"
]
}
⇒20140228追記:レシピがserverではなくmasterに名称変更してました
chef-solo -j /chef-repo/cookbooks/jenkins.json
□実行結果
- URI::InvalidURIError: ruby_block[block_until_operational] (jenkins::server line 52) had an error: URI::InvalidURIError: the scheme http does not accept registry part: :8080 (or bad hostname?
なんてエラーが最後にでるのですが、どうやらインストールはできているみたい
- /var/lib/jenkins/jenkins.war にwarがあります
- chkconfigには登録されずにrunitで起動しています(/etc/sv/jenkins/run にrunit用のコマンドあり)
- /etc/service/jenkins にシンボリックリンクがあるので、これを削除すれば自動起動しなくなります
- sv start/stop/status jenkinsで各種起動や確認ができます
- /etc/init.d/jenkins start|stopでも起動や停止ができます
- Error executing action `enable` on resource 'runit_service[jenkins]'
rpm -ivh /root/rpmbuild/RPMS/runit-2.1.1.rpm(rpmがない場合はネットから探してくる)
- Java7インストール時のattributesを指定しないと「openJDK 1.6.0_24」がインストールされます
- runsvdir -P -H /etc/service でrunsv自体が止まってしまった場合に再起動できます
- runsv jenkins: fatal: unable to lock supervise/lock: temporary failure
rm /etc/sv/jenkins/supervise/lock で一旦lockファイルを削除してからrunsvdirで起動してください
- 起動ログ等は/var/log/messagesに吐かれています
■RabbitMQ
□実行
- git clone git://github.com/opscode-cookbooks/rabbitmq.git
- git clone git://github.com/opscode-cookbooks/erlang.git
- git clone git://github.com/opscode-cookbooks/apt.git
- git clone git://github.com/opscode-cookbooks/yum.git
- git clone git://github.com/opscode-cookbooks/build-essential.git
vim /chef-repo/cookbooks/rabbitmq.json
{
"run_list": [
"recipe[rabbitmq]"
]
}
chef-solo -j rabbitmq.json
□実行結果
- rabbitmqctl status | grep RabbitMQ
{running_applications,[{rabbit,"RabbitMQ","3.0.4"},
■Zabbix
□実行
- git clone git://github.com/laradji/zabbix.git
- git clone git://github.com/opscode-cookbooks/database.git
- git clone git://github.com/opscode-cookbooks/aws.git
- git clone git://github.com/opscode-cookbooks/mysql.git
- git clone git://github.com/opscode-cookbooks/build-essential.git
- git clone git://github.com/opscode-cookbooks/openssl.git
- git clone git://github.com/opscode-cookbooks/postgresql.git
- git clone git://github.com/opscode-cookbooks/apt.git
- git clone git://github.com/opscode-cookbooks/xfs.git
- git clone git://github.com/opscode-cookbooks/apache2.git
- git clone git://github.com/opscode-cookbooks/ark.git
- git clone git://github.com/opscode-cookbooks/powershell.git
- git clone git://github.com/opscode-cookbooks/windows.git
- git clone git://github.com/opscode-cookbooks/chef_handler.git
- git clone git://github.com/opscode-cookbooks/nginx.git
- git clone git://github.com/opscode-cookbooks/ohai.git
- git clone git://github.com/opscode-cookbooks/runit.git
- git clone git://github.com/opscode-cookbooks/yum.git
- git clone git://github.com/opscode-cookbooks/ufw.git
- git clone git://github.com/opscode-cookbooks/firewall.git
- git clone git://github.com/yevgenko/cookbook-php-fpm.git
- git clone git://github.com/chocolatey/chocolatey-cookbook.git
mv chocolatey-cookbook/ chocolatey
mv cookbook-php-fpm/ php-fpm
vim /chef-repo/cookbooks/zabbix.json
{
"run_list": [
"recipe[yum::epel]",
"recipe[apache2::mod_php5]",
"recipe[database::mysql]",
"recipe[mysql::server]",
"recipe[zabbix]",
"recipe[zabbix::database]",
"recipe[zabbix::server]",
"recipe[zabbix::web]"
],
"zabbix": {
"server": {
"install": true
},
"web": {
"install": true,
"fqdn": "hostname"
},
"agent": {
"servers": [
"hostname",
"hostname"
]
},
"database": {
"dbpassword": "mysql",
"rds_master_user": "mysql",
"rds_master_password": "mysql"
}
},
"mysql": {
"server_debian_password": "mysql",
"server_root_password": "mysql",
"server_repl_password": "mysql"
}
}
chef-solo -j /chef-repo/cookbooks/zabbix.json
□実行結果
- recipe[zabbix]のみを指定するとzabbix_agentのみがインストールされます
- zabbix-serverのバージョンは2.0.3
- /opt/zabbix配下にインストールされる
- Forbiddenになる場合はパーミッションが755になっていることとSELinuxが無効になっていることを確認する
chmod 755 /opt/zabbix; chmod 755 /opt/zabbix/*
- http://localhost/でzabbixの管理画面が表示されます(apacheのDocumentRootに登録される)
- zabbix-serverインストール時に以下のエラーになる場合はリンクの記事を参考にしてください
- Node attributes are read-only when you do not specify which precedence level to set
http://kakakikikeke.blogspot.com/2013/05/chefzabbix-cookbooksnode-attributes-are.html
- Option source must be a kind of [String]! You passed {"default"=>"zabbix_agentd.init-rh.erb"}.
http://kakakikikeke.blogspot.com/2013/05/chef-zabbixoption-source-must-be-kind.html
- FATAL: Errno::ENOENT: execute[generate-module-list] (apache2::default line 68) had an error: Errno::ENOENT: No such file or directory - /usr/local/bin/apache2_module_conf_generate.pl /usr/lib64/httpd /etc/httpd/mods-available
理由はわからないがchef-soloを再実行すると上手く動作する
- zabbixのDBはmysqlがインストールされバージョンは5.1.69、ユーザ名/パスワードはzabbix/mysqlとなる
- デフォルトのzabbixのユーザ名/パスワードはadmin/zabbixになります
■Squid
□実行
- git clone git://github.com/opscode-cookbooks/squid.git
vim /chef-repo/cookbooks/squid.json
{
"run_list": [
"recipe[squid]"
]
}
chef-solo -j /chef-repo/cookbooks/squid.json
□実行結果
- Squid Cache: Version 3.1.10
■PHP
□実行
- git clone git://github.com/opscode-cookbooks/php.git
vim /chef-repo/cookbooks/php.json
{
"run_list": [
"recipe[php]"
]
}
chef-solo -j /chef-repo/cookbooks/php.json
□実行結果
■Apache2
□実行
- git clone git://github.com/opscode-cookbooks/apache2.git
vim /chef-repo/cookbooks/apache2.json
{
"run_list": [
"recipe[apache2]",
"recipe[apache2::mod_ssl]",
"recipe[apache2::mod_proxy_ajp]"
],
"apache": {
"default_site_enabled": true
}
}
chef-solo -j /chef-repo/cookbooks/apache2.json
□実行結果
- Apache/2.2.15
- 80番ポートにブラウザでアクセスするとapacheのデフォルト画面が見れる
SSLの設定に関して
443番はプロセスがあがってますが、画面は見れない
とりあえず画面をSSLで見れるように設定するには以下を実施する
cd /etc/httpd/sites-available
cp default default-ssl
cd /etc/httpd/sites-enabled/
ln -s /etc/httpd/sites-available/default-ssl 000-default-ssl
emacs 000-default-ssl
以下の部分を修正
ポート番号を修正
80⇒443
SSLの設定を追記
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
cd /etc/httpd/ssl/
openssl genrsa -aes128 1024 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
service httpd restart
■Capistrano
□実行
wget http://community.opscode.com/cookbooks/capistrano/versions/0_7_0/downloads
tar xvzf capistrano.tar.gz
※githubで公開はされてないようです
vim /chef-repo/cookbooks/capistrano.json
{
"run_list": [
"recipe[capistrano]"
]
}
chef-solo -j /chef-repo/cookbooks/capistrano.json
□実行結果
- Capistrano v2.15.4
- インストール自体はgemから実施している様子
- 依存しているパッケージはないけど、ruby, gemのインストールは必須だと思われる
■Git
□実行
以下依存関係のあるcookbooksです ["build-essential", "dmg", "yum", "runit", "chef_handler", "windows", :git] git://github.com/opscode-cookbooks/... から全てgit cloneしてください
vim /chef-repo/cookbooks/git.json
{
"run_list": [
"recipe[git]"
]
}
chef-solo -j /chef-repo/cookbooks/git.json
□実行結果
■Erlang
□実行
git clone git://github.com/opscode-cookbooks/erlang.git
git clone git://github.com/opscode-cookbooks/apt.git
git clone git://github.com/opscode-cookbooks/build-essential.git
git clone git://github.com/opscode-cookbooks/yum.git
vim /chef-repo/cookbooks/erlang.json
{
"run_list": [
"recipe[erlang]"
]
}
chef-solo -j /chef-repo/cookbooks/git.json
□実行結果
- Erlang R14B04 (erts-5.8.5)
■Python
□実行
git clone git://github.com/opscode-cookbooks/python.git
git clone git://github.com/opscode-cookbooks/yum.git
git clone git://github.com/opscode-cookbooks/build-essential.git
vim /chef-repo/cookbooks/python.json
{
"run_list": [
"recipe[python]"
]
}
chef-solo -j /chef-repo/cookbooks/python.json
□実行結果