LoginSignup
2
2

More than 5 years have passed since last update.

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

Posted at

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

2
2
0

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
  3. You can use dark theme
What you can do with signing up
2
2