2014年8月17日日曜日

SoftLayer の CentOS 6.5 を CentOS 7 にアップグレードしてみた

SoftLayer では、CentOS 7 が未だ用意されていないので、CentOS 6.5 の minimal インストールを CentOS 7 にアップグレードしてみました。
以下のコマンドで発注した仮想マシンで試しました。


$ sl vs create --key=00000 --datacenter=hkg02 --hostname=centos7 --domain=example.com --cpu=1 --memory=1024 --disk=25 --san --hourly --os=CENTOS_6_64 --postinstall=https://raw.githubusercontent.com/pcserver-jp/SoftLayer/master/co6.hkg02.sh -y
:.........:......................................:
:    name : value                                :
:.........:......................................:
:      id : 5868492                              :
: created : 2014-08-17T13:19:43+09:00            :
:    guid : f614fb5b-5c6a-47cf-a594-017daf014764 :
:.........:......................................:


--key=00000 は、事前登録してある ssh 鍵の ID です。「sl sshkey list」コマンドで調べることができます。
プロビジョニング・スクリプトとして指定しているスクリプトは、GitHub においてあります。
私が必要と思っている最小限の設定が入れてあります。
やっていることは以下の通りです。

wheel グループに所属するユーザはパスワードなしで sudo コマンドを実行できるように設定
・sshd の設定変更(rootログイン禁止、公開鍵認証以外禁止)
・iptables設定
  ・SoftLayer 標準の Ping 監視を受け入れる
  ・プライベート・ネットワーク内からの ping を受け入れる
  ・東京または香港経由で SSL VPN 接続している端末からの ssh 接続を受け入れる
  ・パブリック・ネットワークのパケットは DROP
  ・プライベート・ネットワークのパケットは REJECT
・IPv6 無効化
・DNS 設定変更
・ネットワーク・マネージャによる制御を無効化
・NIC オフロード機能無効化

2014/9/1追記
・カーネル起動パラメータ追加
・Rescue 起動追加

・パスワードのハッシュ化方法を RHEL6 標準の SHA512 に変更
・root アカウントのパスワードをランダムな50文字に変更
・wheel グループに所属する一般ユーザ sl-admin を追加
  ・初期パスワードは「sl-admin
  ・初回ログイン時にパスワード変更を強制
  ・SoftLayer によって root に登録された ssh 公開鍵を登録
・タイムゾーンを東京に設定
・キーボードを日本語106キーボードに変更
・物理マシンの場合、yum 設定を RHEL6 標準に変更
・不要な cron を無効化
・不要なサービスを停止
・物理マシンの場合は NTP 設定変更

ログインします。パスワード変更が要求されます。パスワード変更後、セッションが切れます。


You are required to change your password immediately (root enforced)
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user sl-admin.
Changing password for sl-admin.
(current) UNIX password: sl-admin
New password: ********
Retype new password: ********
passwd: all authentication tokens updated successfully.


再度ログインします。
プロビジョニング・スクリプトの実行でエラーが発生していないことを確認します。


$ sudo grep post_install /var/log/messages


CentOS 6 を最新化し、再起動します。


$ sudo yum -y update
$ sudo reboot


ブラウザで http://dev.centos.org/centos/6/upg/x86_64/Packages/ にアクセスし、パッケージのリストを確認します。パッケージがアップデートされているかもしれないので、以下のコマンドは書き直す必要が出てくるものと思われます。
書き直したら、ログインして実行します。


$ sudo yum -y localinstall http://dev.centos.org/centos/6/upg/x86_64/Packages/{openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-content-1.0.8-1.0.1.el6.centos.noarch.rpm,openscap-devel-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-engine-sce-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-engine-sce-devel-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-extra-probes-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-python-1.0.8-1.0.1.el6.centos.x86_64.rpm,openscap-utils-1.0.8-1.0.1.el6.centos.x86_64.rpm,preupgrade-assistant-1.0.2-33.0.3.el6.centos.x86_64.rpm,preupgrade-assistant-contents-0.5.13-1.0.5.el6.centos.noarch.rpm,preupgrade-assistant-ui-1.0.2-33.0.3.el6.centos.x86_64.rpm,redhat-upgrade-tool-0.7.22-3.el6.centos.noarch.rpm}


CentOS 7 化するためのコマンドを実行します。


$ sudo yum -y install m2crypto python-simplejson
$ yes | sudo preupg
$ sudo redhat-upgrade-tool --nogpgcheck --network 7.0 --instrepo http://mirrors.service.networklayer.com/centos/7/os/x86_64/ --force


再起動すると、起動シーケンスの中で CentOS 7 にアップグレードされます。コンソールを開いて眺めておくのがよいと思います。


$ sudo reboot


以下のディレクトリにログ等が保存されています。

/root/preupgrade/
/root/preupgrade-results/

ログインして、CentOS 7 として、アップデートを実行します。


$ sudo sed -i -e 's/^mirrorlist/#mirrorlist/' -e 's/RPM-GPG-KEY-CentOS-6/RPM-GPG-KEY-CentOS-7/' /etc/yum.repos.d/CentOS-Base.repo
$ sudo yum clean all
$ sudo yum -y update
$ sudo yum -y remove kernel*.el6


CentOS 6 のパッケージがどれだけ残っているか確認します。


$ rpm -qa | grep el6 | sort


色々と残っていますが、下手に削除できないので、とりあえずこのままとします。

0 件のコメント:

コメントを投稿