LoginSignup
2

More than 5 years have passed since last update.

posted at

OSのRubyと違うバージョンでPuppetを動かす方法

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でいれたサーバからコピーするとかの方がよいかもです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2