Browse Month: February 2014

Software Collections for CentOS-6

Software Collections for CentOS-6 がリリースされました。

Software Collections というのは、RHEL で提供されている追加コンポーネントです。

この追加コンポーネントには、次のものが含まれています。

  • Perl 5.16.4
  • PHP 5.4.14
  • Python 2.7
  • Python 3.3
  • Ruby 1.9.3
  • MariaDB 5.5
  • MySQL 5.5
  • PostgreSQL 9.2
  • Node.js 0.10

Node.js のみ、テクニカルプレビューのようです。

これらが CentOS 6 で利用できるようになったようです。比較的バージョンの新しいものがあるので、自分でパッケージをビルドする必要がないので、便利ですね!

インストール方法は、とても簡単です。まず、Yum リポジトリを追加します。

$ sudo yum install centos-release-SCL

これをインストールすると、/etc/yum.repos.d/CentOS-SCL.repo ができます。

試しに Ruby 1.9.3 をインストールしてみましょう。

$ sudo yum install ruby193

そうすると、/opt/rh/ruby193 以下に Ruby 1.9.3 がインストールされます。
/opt/rh/ruby193/enable を読み込むと、PATH などを書き換えることができます。

$ source /opt/rh/ruby193/enable
$ ruby --version
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]

手っ取り早く、上記のものを使いたいときは、とても便利ですね。
Ruby に限っては、2 系を追加してほしいところですね。

Chef のパッケージをまとめてダウンロードする

Chef のパッケージをインストールするとき、通常は次の方法が公式サイトにて紹介されています。

$ curl -L https://www.opscode.com/chef/install.sh | sudo bash

たしかにこの方法でインストールすることが出来るんですが、パッケージのあるサイトが海外の S3 のため、非常に遅いので、まとめてダウンロードするプログラムをさくっと書いてみました。

プログラムは、次のような感じです。
例えば、EL5 用のパッケージをダウンロードしたいときには、次のコマンドを実行するだけです。

$ ruby get_packages.rb el5

これで実行カレントディレクトリにパッケージがまとめてダウンロードされます。ただし、ベータ版や i386 パッケージは除外しています。
あとは、このパッケージをまとめて yum リポジトリとかにすると便利ですよね。


#
# get_packages.rb
#
require 'net/http'
require 'rexml/document'

case ARGV[0]
when 'el5', 'el6', 'deb'
package = ARGV[0]
else
p 'Usage: get_packages.rb '
exit 1
end

baseurl = 'opscode-omnibus-packages.s3.amazonaws.com'

# get the XML data as a string
xml_data = Net::HTTP.get_response(URI.parse('http://' + baseurl)).body
doc = REXML::Document.new(xml_data)

Net::HTTP.start(baseurl) do |http|
doc.elements.each('ListBucketResult/Contents/Key') do |v|
# x86_64 packages only, exclude rc git packages
next if v.text =~ /^.*(git|rc|alpha|beta).*$/
case package
when 'el5'
next if v.text !~ /^.*.el5.x86_64.rpm$/
when 'el6'
next if v.text !~ /^.*.el6.x86_64.rpm$/
when 'deb'
next if v.text !~ /^.*amd64.deb$/
end

package_name = File.basename(v.text)
next if File.exist?(package_name)

puts 'Downloading ' + v.text
resp = http.get('/' + v.text)
open(package_name, 'wb') { |file|
file.write(resp.body)
}
end
end
puts "Done"

cobbler web を nginx 経由で使う方法の続き

http://www.sssg.org/blogs/naoya/archives/2495 で紹介した方法ですが、肝心の /cblr/svc/ 以下の uswsgi の設定が抜けていたのでご紹介します。

まず、uWSGI が必要なので、コンパイルします。

今回は、1.9 系の最新版を使ってみます。

# yum install python python-devel libxml2 libxml2-devel python-setuptools zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake -y
# wget http://projects.unbit.it/downloads/uwsgi-1.9.21.1.tar.gz
# tar zxf uwsgi-1.9.21.1.tar.gz
# cd uwsgi-1.9.21.1
# python setup.py build
# make

make すると、カレントディレクトリに uwsgi プログラムができるので、これを利用します。

cobbler の /cblr/svc 以下や cobbler web 用の uwsgi は、次のコマンドで起動します。

# /usr/sbin/uwsgi --wsgi-file /var/www/cobbler/svc/services.py --socket 127.0.0.1:9090 --processes 4 --master --harakiri 120
# /usr/sbin/uwsgi --wsgi-file /usr/share/cobbler/web/cobbler.wsgi --socket 127.0.0.1:9091 --processes 4 --master --harakiri 120

手動で起動する場合は、supervisord を利用すると便利ですね。

これで、http:///cblr/svc/op/ks/system/s1 とかで、サーバの kickstart を参照できますね!

cobbler をインストールすると、Apache HTTPd も一緒にインストールされるので、ポートが競合しないようにしましょう。