LoginSignup
6
6

More than 5 years have passed since last update.

AWS EC2上に作成したRHELのスナップショットをRubyで取得するまでの手順

Last updated at Posted at 2013-12-02

======================================================================

目的

AWS EC2上にRHELを起動して、AWS SDK for Ruby のスナップショットスクリプトを動かします。
そのために、AWS EC2上のRHELに以下の設定を施します。

  • ssh 設定(rootでなく、AmazonLinux 同様に、ec2-userでログインするようにする)
  • ruby の最新版をインストール(ソースからインストールする)
  • git の設定(サンプルスクリプトを取得するために設定)
  • AWS SDK for Ruby のスナップショット(バックアップ)サンプルスクリプトを動かしてみる

前提

バージョン

  • REHL:5.5
  • ruby:1.9.3(※本手順後)
  • git:1.8.3.4(※本手順後)

ssh 設定

RHELサーバ側設定手順

EC2上にサーバ建てた直後のデフォルト状態では、Amazon Linux はec2-user でログインするが、RHELは、root でログインするようになっているため、それをセキュリティ向上のため、Amazon Linux 同様に変更する。

パスワードログイン不許可設定

  1. root でログイン
  2. # vi /etc/ssh/sshd_config で、以下の通り編集
  • パスワード認証 = no にする
  • チャレンジレスポンス認証、すなわちPAM認証 = no にする
   PasswordAuthentication no
   ChallengeResponseAuthentication no

ssh root ログイン不許可設定

# vi /etc/ssh/sshd_config で、以下の通り編集

  • root ログイン = no にする
  • コメント行は削除しても良い
  PermitRootLogin no
  # PermitRootLogin without-password

root パスワード設定

# passwd で、root パスワード設定(※構築時はパスワード設定なし)

ログイン用ユーザ作成: ec2-user

# useradd ec2-user -d /home/ec2-user

公開鍵の移動

  1. # mv /root/.ssh /home/ec2-user/ ※root ログインはさせないため不要。そのため、公開鍵をログインユーザ側へ移動する
  2. # chown -R ec2-user:ec2-user /home/ec2-user/.ssh でユーザ権限

ssh サービス再起動

# service sshd restart

接続確認

Teraterm や、Terminal などで、AWS のPublicDNS&秘密鍵&ec2-user でログイン出来ることを確認する。

ワークステーション側設定

Vagrantfile のログインユーザをroot から、設定したログインユーザである、Pec2-user に変更する。

Vagrantfile 設定

$ vi Vagrantfile で、以下のログインユーザ設定をする。

  • コメント行は削除しても良い
  # override.ssh.username = "root"
  override.ssh.username = "ec2-user"

接続確認

$ vagrant ssh でログインして、ec2-user でログインできるか確認する


Ruby 設定

RHELサーバ側設定

yum で取ってくるRuby は、1.8.5 と古いため、最新版をソースからインストールする。

※ 参考情報:Rubyを最新ソースからインストール

既にインストール済みの古いRuby をアンインストール

# yum remove ruby

ソースをコンパイルするために必要なパッケージを事前にインストール

# yum -y install gcc zlib-devel openssl-devel sqlite sqlite-devel

Ruby インストールに必要なyaml パッケージをソースからインストール

# cd /usr/local/src
# curl -# -O http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
# tar -zxvf yaml-0.1.4.tar.gz
# cd yaml-0.1.4
# ./configure
# make; make install

安定版のRuby 1.9.3 をソースからインストール

# cd /usr/local/src
# curl -O -# ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz
# tar zxvf ruby-1.9.3-p448.tar.gz
# cd ruby-1.9.3-p488
# ./configure
# make; make install
# ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]

aws-sdk for Ruby インストール前に必要なdevel パッケージ をyum インストール

# yum -y install libxml2-devel libxslt-devel
  • 以下のパッケージが無いと、gem install aws-sdk でコケる。
    • libxml2-devel
    • libxslt-devel

※ 参考情報:develパッケージ
devel = development の略。 主に開発に関連したものが入っているパッケージで、開発用のツールだったり、コンポーネントだったり。動的な仕組み(機能がモジュール化されているもの)を使うソフトウェアの場合は、通常の使用でも必要になることもある。

RubyGems の最新化

# gem install rubygems-update
# update_rubygems
# gem -v
  • RubyGems はRuby 1.9 からRuby に同梱されているため、別途インストールは不要。
  • gem update –-system でも良いが、以下に示す方法が現在(2013/08/09時点)の主流らしい。
  • この方法であれば、バージョンダウンも可能で、バージョンダウンする際は、現在のRubyGems をアンインストール後、バージョン指定してインストールすれば良い。

aws-sdk for Ruby インストール

# gem install aws-sdk


git 設定

RHELサーバ側設定

GitHub で公開されているスクリプト等利用する機会が多いため、git をインストールしておく。

git 依存パッケージのインストール

# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel

最新のgit-core ファイル名を調べる

  • ココから最新のgit-core ファイル名を調べる
  • その際、ファイル名にrc(RC版) を含まないもので正式リリースされたものを選択する。

※ 参考情報:RC版とは?
RC版とは、ハードウエアやソフトウエアの開発段階のひとつで、製品候補としてのテスト工程に入ったもののことである。 評価段階として関係者などに提供されるベータ版の段階を終了し、より出荷段階に近づいた、出荷候補(release candidate)となるものがRC版であり、さらに改訂作業が進められることとなる。改訂の段階に応じてRC 1、RC 2、とバージョン分けされる場合も多い。RC版がテストを終了すれば、製品出荷(RTM)版として、製造の工程に移行されてゆく。

git をソースからインストール

前述で調べたファイル名を http://git-core.googlecode.com/files/[file-name] file-name に入れてダウンロードURLを作成

# cd /usr/local/src
# curl -O -# http://git-core.googlecode.com/files/git-1.8.3.4.tar.gz
# tar zxvf git-1.8.3.4.tar.gz
# cd git-1.8.1.1/
# ./configure 
# make prefix=/usr/local all
# make prefix=/usr/local install
  • ※ 以後は、Git のインストール後、アップデートでGit を通して最新版のGit を得ることができる。
    • $ git clone git://git.kernel.org/pub/scm/git/git.git

※ 参考情報:CentOS6.3にgitをソースコードから入れる


スナップショットのサンプルスクリプトを動かしてみる

RHELサーバ側作業

ネットを探って見つけた、AWS EBS のSnapshot 機能を動作させるRuby スクリプトサンプル をお借りして動作させてみる。

git clone でソースを取得する

HTTPS でgithub サーバからダウンロードしようとすると、落ちるので、git:// にする。

  • $ cd /home/ec2-user/
  • $ git clone git://gist.github.com/4248981.git create_ebs_snapshot

コマンドを起動する

$ ruby create_ebs_snapshot.rb -a [access-key-id] -s [secret-access-key] -v [volume-name] -g [save-snapshot-count]

  • ※ 他のオプションは、ソース参照

コマンドをcron 登録して自動実行させてみる

e.g. 5分置きに起動して、指定Volume のスナップショットを取得する

  • $ crontab -e
*/5 * * * * /usr/local/bin/ruby create_ebs_snapshot.rb -a [access-key-id] -s [secret-access-key] -v [volume-name] -g [save-snapshot-count]

スナップショットの取得確認をする

AWS Management Console > EC2 > Snapshot 画面より5分置きにスナップショットが指定世代数取得できているか確認する。

6
6
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
6
6