最近この記事のアクセスが増えてきたので一旦内容を精査しました
主な修正点は以下です
細かい部分に関しては各cookbooksの検証結果内に赤字で追記しています
- git のインストールを事前手順に追加
- Tomcat7が動作しなくなっていたのを追記
- Tomcat7 その2の依存ライブラリ修正
- Jenkinsの実行レシピ名が変更になっていたので修正
- 誤字脱字修正
- 体裁修正
- その他、赤字での追記
■環境
CentOS 6.4 64bit
Chef 11.4.0(chef-soloを使用)
Chef 11.4.0(chef-soloを使用)
■事前作業
chef-soloのインストール
gitのインストール
gitのインストール
yum -y install git
cookbooksディレクトリの作成cd /; git clone git://github.com/opscode/chef-repo.git
mkdir /etc/chef
vim /etc/chef/solo.rb
mkdir /etc/chef
vim /etc/chef/solo.rb
file_cache_path "/tmp/chef-solo" cookbook_path ["/chef-repo/cookbooks"] role_path "/chef-repos/roles" log_level :debug以下作業ディレクトリは/chef-repo/cookbookとします
■chef-solo検証
■Java(デフォルト6)
■Java(java7へ変更)
■Emacs
■Tomcat7
■Tomcat7 その2
■MongoDB
■Redis
■Jenkins
■RabbitMQ
■Zabbix
■Squid
■PHP
■Apache2
■Capistrano
■Git
■Erlang
■Python
□実行方法
vim /chef-repo/cookbooks/java.json
□実行結果
- 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へ変更)
□実行方法
vim /chef-repo/cookbooks/java.json
□実行結果
- 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
□実行
vim /chef-repo/cookbooks/emacs.json
□実行結果
- 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)
が出てうまくインストールできません
□実行
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
□実行結果
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
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
□実行結果
- opscodeで提供されているtomcatのcookbooksがtomcat7に対応していないためforkして作られたcookbooksを使用する http://blog.cloudpack.jp/2013/01/server-news-centos6-tomcat7-rpm-yum.html
- jpackageのリポジトリとepelのリポジトリがenable状態になっているとyum updateで失敗するのでepelを無効にしておく必要あり
- Javaのcookbooksに依存しているのでjavaもcloneする必要あり
- 普通のtar展開によるtomcatインストールと違ってyumインストールはフォルダが変なところに置かれるのでわかりづらい
■Tomcat7 その2
□実行
vim /chef-repo/cookbooks/chef-tomcat.json
□実行結果
- 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
□実行
vim /chef-repo/cookbooks/chef-mongodb.json
□実行結果
- 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
□実行
vim /chef-repo/cookbooks/redisio.json
□実行結果
- git clone git://github.com/brianbianco/redisio.git
- git clone git://github.com/bmhatfield/chef-ulimit.git
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
□実行
vim /chef-repo/cookbooks/jenkins.json
chef-solo -j /chef-repo/cookbooks/jenkins.json
□実行結果
- 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
□実行
vim /chef-repo/cookbooks/rabbitmq.json
□実行結果
- 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
□実行
mv cookbook-php-fpm/ php-fpm
vim /chef-repo/cookbooks/zabbix.json
□実行結果
- 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 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
□実行
vim /chef-repo/cookbooks/squid.json
□実行結果
- 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
□実行
vim /chef-repo/cookbooks/php.json
□実行結果
- 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
□実行結果
- php 5.3.3
■Apache2
□実行
vim /chef-repo/cookbooks/apache2.json
□実行結果
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
以下の部分を修正
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
- 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.keycd /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
□実行結果
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
□実行結果
以下依存関係のある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
□実行結果
- git version 1.7.1
■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
□実行結果
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
□実行結果
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
□実行結果
- python 2.6.8
0 件のコメント:
コメントを投稿