まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:openstack

個人的にご縁のある IDCF 様がゴールデンウィークにクラウドを使った面白い企画をやっていました:
抽選でスターバックスギフトカードプレゼント【IDCFからの宿題第2弾】

IDCF 様のクラウド環境を使って、git のサーバーである GitLab 環境を構築してみよう、というものです。GitLab は GitHub のサーバーを自分専用に作るような環境で、特に Community Edition は無料のオープンソースで提供されています。導入も非常に簡単で 22/80 番ポートの開いたサーバーがあれば数分で専用 GitHub が構築できる、というものです。 そして IDCF 様の企画では同環境を IDCF クラウド上に作成して、その活用方法を含めてブログにまとめると抽選でスタバのギフトカードがもらえる、というものです。興味ある方はこの週末にチャレンジしてみましょう!


で、自分はスタバカードにも興味はありますが、ちょっとだけ(?)脱線して、同じ環境を IBM Bluemix 上で作ってみることにしました。 完全な悪ノリです、はい。まあでも仮想マシン起動後の作業は共通ということで・・・ (^^;

なお、GitLab CE(Community Edition) 環境の具体的な構築方法はこちらを参照ください。以下は基本的にこの手順をそのまま実行しています:
Download GitLab Community Edition(CE)


まず GitLab を導入するには SSH でログインできるサーバーが必要です。というわけで Bluemix の OpenStack VM 機能を使って CentOS の仮想マシンを1つ作成します。バージョンは個人的に慣れている 6.5 で。この辺りの手順はこちらを参照ください:
Bluemix 上で OpenStack VM インスタンスを作成する


ちなみに GitLab の推奨環境としては 2CPU + 2GB メモリですが、100 ユーザー程度であれば 1CPU + 1GB メモリ + 1GB スワップメモリでも OK とのこと。Bluemix の仮想マシンは現時点で最小スペックの m1.small でも 1CPU + 2GB メモリ + 2GB スワップメモリなので、前提条件としては充分だと思います:
2015050801


仮想マシンが立ち上がったら Bluemix かどうかを意識する必要はありません。まず SSH でログインし、とりあえず root で yum update しておきます:
# yum update

最初に必要な依存ライブラリをまとめて導入&起動しておきます:
# yum install openssh-server postfix cronie git
# /etc/init.d/postfix start
# chkconfig postfix on
# lokkit -s http -s ssh

次に GitLab 本体をダウンロードしてインストールし、起動します:
# curl -O https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-ce-7.10.1~omnibus.2-1.x86_64.rpm
# rpm -ivh gitlab-ce-7.10.1~omnibus.2-1.x86_64.rpm
# vi /etc/gitlab/gitlab.rg (external_url の値を自分自身のIPアドレスに変更)
# gitlab-ctl reconfigure
2015050802


最後にこのサーバーにブラウザでアクセスして、ユーザーID(root) と初期パスワード(5iveL!fe)を指定してログインします:
2015050803


初回ログイン時には初期パスワードを変更するよう指示されます。自分専用のパスワードに変更します:
2015050804


一度、強制ログアウトされるので再度 root ユーザーと新しいパスワードでログインするとウェルカム画面が表示されます。これで GitLab が使える環境が整ったことになります!
2015050805


あとはリポジトリの管理単位となるプロジェクトを作り(10,000個まで作れるらしい)、ユーザーのグループを作って、プロジェクト毎のアクセス権を柔軟に制御することもできます。

新規にユーザーを登録すると、メール認証が必要になります。となるとメールサーバーを用意/設定する必要があります。それが面倒な場合は以下の設定を加えて、ユーザー登録と同時にメール認証が済んだことにすることもできます:
# vi /opt/gitlab/embedded/service/gitlab-rails/app/modules/user.rb

(以下の行を追加)
  default_value_for :confirmed_at, Time.now


この設定後にユーザーを登録すると、同時にメール認証までは終わったことになります。ただその時点ではまだパスワードが設定されていないのでログインできません。管理者がユーザーを登録後に初期パスワードを設定してあげる必要があることに注意してください。

(参考)
ユーザを登録する


また、環境によっては GitLab が使う git ユーザーの ssh アクセスを許可していない可能性もあります。その場合は以下の2つの設定をしておくとアクセス制限を解除できます:
# vi /etc/shadow

git:!!:16569::::::
  ↓
git:*:16569:::::: (パスワードを設定していないユーザーの SSH ログインを許可する)
# vi /etc/ssh/sshd_config

AllowUsers xxxx yyyy git (AllowUsers に半角スペース区切りで git を追加)

# service sshd reload

もちろん github を使っている状況で無理に GitLab 環境に移行する必要はありませんが、ソースコードを自前環境で管理したい場合や、必ずしも公開したくないソースコードを管理したい場合などに GitLab は非常に簡単で便利だと思いました。


まず最初に、今回のブログエントリは IBM Bluemix の中でも現状では承認制のベータ機能を紹介するものなので、Bluemix アカウントを持つ全ての人が使えるわけではない、ということをお断りしておきます。

ただ、それでもこの機能はこれまでの IBM Bluemix では苦手としていた自由度の高いサーバーインスタンスを作る(もはやサーバーである必要もなく、デスクトップでもいいけど)という点で大きなアドバンテージのある機能なので、既に使える人や、今後承認されて使えるようになる人向けに紹介します。


IBM Bluemix はオープンソースの PaaS である CloudFoundry をベースにしたクラウド環境です。ということもあって、これまでは「Bluemix は PaaS」と紹介することも多くありました。これはこれで間違いではないのですが、PaaS 故の得意・不得意分野がありました。例えば「アプリケーションサーバーを追加する」とか「データベースサーバーを追加する」といった目的であれば PaaS の土俵なので、IaaS 環境と比べても非常に高いアドバンテージを発揮できていました。しかし「サーバーではなくひたすらバッチ処理を実行するインスタンスを追加したい」とか「SSH でログインして必要に応じて各種ログを見たい」といった自由度の高い目的を実現しようとすると PaaS の特徴が制約となってしまい、IaaS 環境と比べて面倒に感じることもありました。

そんな中、IBM Bluemix は進化を遂げました。もともとは CloudFoundry をベースとした PaaS でしたが、今では Docker コンテナとして利用することもできます(これも承認制)し、更には今回紹介する OpenStack の VM インスタンスを作成することもできます。こうなるともはや PaaS と呼ぶことに抵抗が出てきます。IBM Bluemix は今や「CloudFoundry をベースとした IBM サービスの PaaS であり、Docker のコンテナであり、OpenStack VM の IaaS でもある統合クラウド環境」と説明する方が的確だと感じます(長いけど)。
2015050601


これは非常に魅力的なクラウド環境です。例えばアプリケーションサーバーは Docker のコンテナ資産として用意されているものを流用しながらバックエンドサービスで IBM のコグニティブ(認識型人工知能)サービスを使ったり、あるいはアプリケーションサーバーは OpenStackVM で自由にミドルウェアや管理機能を導入してパブリッククラウドを構築した上で、IBM CastIron をベースとした統合サービスを使って社内データに安全にアクセスする機能と統合したり、といったエンタープライズクラウド環境を IBM Bluemix だけで実現することができるようにもなったことを意味しています。


前置きが長くなりましたが、今回はこの中の OpenStack VM インスタンスを生成して利用する手順を紹介します。この IaaS 的なインスタンスが Bluemix にどのように統合されているのか、といった点で、今後この機能を利用できるユーザーが増えた時の手助けになれば嬉しいです。


では改めて Bluemix 環境内に OpenStack の VM を作成する手順を紹介します。2015/05/06 現在、この機能を使うためには事前に申請を行う必要があります。そしてその申請が受け付けられた、というメールを受け取れば Bluemix 上に OpenStack VM を作成することができるようになります。この点を事前にクリアしている場合のみ以下の手順が使えるようになります:
2015050501


Bluemix にログイン後、ダッシュボードの「仮想マシン」を選択すると OpenStack の VM の状態が表示されます。この図では8つの vCPU、12GB のメモリ、11 個のパブリック IP が使える状態になっていることが分かり、この範囲内で VM を生成して利用することができます。またこの図ではまだ1つも VM が動いていませんが、生成済みの VM がある場合はこの画面から参照することもできます。ここで「仮想マシンの作成」をクリックして、今から作る VM の内容を指定します:
2015050502


VM の内容を指定する画面に切り替わります。この画面では作成する VM の OS、名前、スペック、そしてアクセス用の認証鍵を指定します。なお OS は手持ちのディスクイメージをアップロードすることも可能です。ここでは OS は CentOS 6.5、名前は dotnsf-vm1(任意)、スペックは m1.small(CPU * 1、メモリ 2GB、ディスク 10GB)を指定しました。最後に認証鍵を新規に追加します。Secret Key と書かれた箇所の下の "+Add Key" 部分をクリックします:
2015050503


ここで認証に使う鍵をインポートして追加します。こちらで紹介した方法などであらかじめ鍵ファイルのペア(秘密鍵と公開鍵)を用意しておきます。"Add Key" 画面で "IMPORT" を選び、Key Name に鍵の名前を入力します。そして公開鍵をテキストエディタで開き、その中身を Public Key to import 欄にコピー&ペーストして最後に "OK" をクリックします:
2015050504


ここまでの手順が成功すると公開鍵がインポートされ、一つ前の画面に戻った時の Secret Key として、追加した鍵が選択できるようになります。インポートした鍵を選択して最後に "CREATE" ボタンで VM を作成します:
2015050505


これで指定されたスペックの VM が作成され、起動が始まります。ダッシュボード画面で少し待つと起動も完了し、IP アドレスの割り振りも完了して VM インスタンスとして利用可能な状態になります。なお IP アドレスはパブリックアドレスとプライベートアドレスの2つが割り振られますが、最初に表示されているのがパブリックアドレスです。なおこの画面からインスタンスの数を変更することも可能です:
2015050506


また左ペインの "Auto-scale" を選択するとオートスケールの設定を行うことも可能です:
2015050511


最後に作成した VM に SSH からログインしてみます。用意した秘密鍵が使えるツール(Windows であれば TeraTerm など)で VM のパブリック IP アドレスに SSH2 でログインします:
2015050507


認証ではユーザー名は ibmcloud 、パスフレーズは秘密鍵を作成した時に指定したパスフレーズ、そして秘密鍵として用意した秘密鍵のファイルを指定します。最後に OK ボタン:
2015050508


全て正しい情報が指定されていれば作成した VM に ibmcloud ユーザーで SSH ログインできます:
2015050509


この ibmcloud ユーザーは sudo 権限を持っているので "sudo /bin/sh" と実行すると root ユーザーでのシェルに切り替わります。こうなればツールのインストールも設定ファイルの書き換えも自由にできます:
2015050510


ここまでできればもう普通の CentOS インスタンスと同様です。アプリケーションサーバーをインストールするなり、データベースサーバーをインストールするなり、X Window と VNC サーバーを導入してリモートデスクトップ環境にしたり、自由な目的で使えるインスタンスが Bluemix 内に生成できました!


今回は Bluemix 上に仮想マシンを生成する手順を紹介しました。Bluemix はこれ以外にも Docker コンテナを扱うこともできます。PaaS としてのリリースから1年経ちますが、いつの間にか IaaS 環境まで取り込まれていました。この進化のスピードについていくのも大変ですが(苦笑)、ますます魅力的なプラットフォームになりました。







 

このページのトップヘ