Puppet Advent Calendar 2015の9日目です。後日投稿するベンチマークの準備でつまった内容を、Tipsぽくまとめました。ベンチマークの投稿は、読みづらいくなりそうなので。。。もっと簡単にバージョン変更できる方法があれば、教えていただけるとうれしいです。
これは何
CentOS6とかだと、普通に入るRubyが1.8.7だったりしますが、もっと新しいRubyでPuppetを動かしたいとかあったりします。なので、他ツールに影響与えずに、Puppetが使うRubyだけ変える方法の紹介です。
方法① puppet-agent
新しいpuppet-agentを入れる。以前からのpuppetパッケージとは別物ぽいです。リポジトリ設定に使うrpmも違うので、旧puppetインストールと微妙にコマンドが違います。
puppet-agentをインストールすると、専用のRubyがセットで入ります。
OSの確認
# cat /etc/centos-release
CentOS release 6.7 (Final)
puppet-agentのインストール(CentOS6)。
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm
# yum clean all
# yum install -y puppet-agent
※CentOS7の場合
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
# yum clean all
# yum install -y puppet-agent
インストール後のPuppet側のバージョン確認。Ruby2.1.7
# /opt/puppetlabs/bin/puppet --version
4.3.1
# /opt/puppetlabs/bin/facter ruby
{
platform => "x86_64-linux",
sitedir => "/opt/puppetlabs/puppet/lib/ruby/site_ruby/2.1.0",
version => "2.1.7"
}
# /opt/puppetlabs/puppet/bin/ruby --version
ruby 2.1.7p400 (2015-08-18 revision 51632) [x86_64-linux]
OS側のバージョン確認。Ruby1.8.7
# ruby --version
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
共存できました。
方法② rbenv + Gems
Puppetのバージョンを変えずに、Rubyのバージョンを変えたい場合はこっち。ただちょっと手順は多いうえに、結局再インストールです。なので、Puppetのバージョンにこだわらなければ、方法①推奨です。
rbenvでRubyをインストール
このブログを参考にRubyを入れていきます。Rubyをビルドするので少し時間がかかります。
CentOS/RHEL に Ruby 2.x をインストールする
ビルドに必要なパッケージを入れる
ビルドするRubyのバージョンで必要なパッケージが違うので、ビルドエラーになったらエラー文を頼りに必要なパッケージを入れてください。
yum install -y git tar gcc make openssl-devel libffi-devel readline-devel
rbenvの準備
# cd /opt
# git clone git://github.com/sstephenson/rbenv.git
# mkdir /opt/rbenv/plugins
# cd /opt/rbenv/plugins
# git clone git://github.com/sstephenson/ruby-build.git
環境変数の設定
次回ログイン時にも有効にするために、/etc/profileなどに設定が必要ですが、今回は省略。
# export RBENV_ROOT="/opt/rbenv"
# export PATH="${RBENV_ROOT}/bin:${PATH}"
# eval "$(rbenv init -)"
Rubyインストール
rbenv install -lで、2.1.7があったので、2.1.7をインストール。古いバージョンだと、コード修正しないとビルドが通らないとかあるようなので、結構トライ&エラーです。
# rbenv install -l
Available versions:
:
2.1.7
:
# rbenv install 2.1.7
Downloading ruby-2.1.7.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz
Installing ruby-2.1.7...
Installed ruby-2.1.7 to /opt/rbenv/versions/2.1.7
Rubyのバージョン確認
2.1.7に設定時とシステムのに設定した場合での確認。Rubyの切り替えできました。今回は、デフォルトを切り替えているので、共存ではないです。
# rbenv global 2.1.7
# ruby --version
ruby 2.1.7p400 (2015-08-18 revision 51632) [x86_64-linux]
# rbenv global system
# ruby --version
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
PuppetをGemsでインストール
PuppetをGemsでインストール
rbenvで2.1.7に切り替え後、PuppetをGemsでインストール。
3.8.4があったので、3.8.4をインストール。
# rbenv global 2.1.7
# rbenv global
2.1.7
# gem list ^puppet$ --remote --all
*** REMOTE GEMS ***
puppet (4.3.1 ruby x64-mingw32 x86-mingw32, 4.3.0 ruby x64-mingw32 x86-mingw32, 4.2.3 ruby x64-mingw32 x86-mingw32, 4.2.2 ruby x64-mingw32 x86-mingw32, 4.2.1 ruby x64-mingw32 x86-mingw32, 4.2.0 ruby x64-mingw32 x86-mingw32, 4.1.0 ruby x64-mingw32 x86-mingw32, 4.0.0 ruby x64-mingw32 x86-mingw32, 3.8.4 ruby x64-mingw32 x86-mingw32, 3.8.3 ruby x64-mingw32 x86-mingw32, 3.8.2 ruby x64-mingw32 x86-mingw32, 3.8.1 ruby x64-mingw32 x86-mingw32, 3.7.5 ruby x64-mingw32 x86-mingw32, 3.7.4 ruby x64-mingw32 x86-mingw32, 3.7.3 ruby x64-mingw32 x86-mingw32, 3.7.2 ruby x64-mingw32 x86-mingw32, 3.7.1 ruby x64-mingw32 x86-mingw32, 3.7.0 ruby x64-mingw32 x86-mingw32, 3.6.2 ruby x86-mingw32, 3.6.1 ruby x86-mingw32, 3.6.0 ruby x86-mingw32, 3.5.1 ruby x86-mingw32, 3.4.3, 3.4.2, 3.4.1, 3.4.0, 3.3.2, 3.3.1, 3.3.0, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.1.1, 3.1.0, 3.0.2, 3.0.1, 3.0.0, 2.7.26, 2.7.25, 2.7.24, 2.7.23, 2.7.22, 2.7.21, 2.7.20, 2.7.19, 2.7.18, 2.7.17, 2.7.16, 2.7.14, 2.7.13, 2.7.12, 2.7.11, 2.7.9, 2.7.8, 2.7.6, 2.7.5, 2.7.4, 2.7.3, 2.7.1, 2.6.18, 2.6.17, 2.6.16, 2.6.15, 2.6.14, 2.6.13, 2.6.12, 2.6.11, 2.6.10, 2.6.9, 2.6.8, 2.6.7, 2.6.6, 2.6.5, 2.6.4, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 0.25.5, 0.25.4, 0.25.3, 0.25.2, 0.25.1, 0.25.0, 0.24.9, 0.24.8, 0.24.7, 0.24.6, 0.24.5, 0.24.4, 0.24.3, 0.24.2, 0.24.1, 0.24.0, 0.23.2, 0.23.1, 0.23.0, 0.22.4, 0.18.4, 0.16.0, 0.13.6, 0.13.2, 0.13.1, 0.13.0, 0.9.2)
# gem install puppet -v 3.8.4
インストール後の確認
puppetが入りました。
# puppet --version
3.8.4
ちなみに、システムのバージョンに戻した状態で、間違って実行するとpuppetを使えるRubyバージョンを教えてくれるようです。戻したバージョンにもpuppetがあれば、そっちが動くだけですが。。。
# rbenv global system
# rbenv global
system
# puppet --version
rbenv: puppet: command not found
The `puppet' command exists in these Ruby versions:
2.1.7
サービス用の設定
Gemsでインストールした場合、サービスとして動かすための設定はされないので、puppetをサービスとして動かす場合は別途設定が必要です。
- puppetグループ、ユーザ作成(serverの場合)
- /etc/puppet/*
- /etc/init.d/puppet
- /etc/sysconfig/puppet
- /etc/logrotate.d/puppet
参考:
Installing Puppet: From Gems
リンク先にサンプルファイルがありますが、同じバージョンをrpmでいれたサーバからコピーするとかの方がよいかもです。