Translate

2013年8月7日水曜日

CloudStack4.1.0をNIC1枚のPC(Ubuntu Server12.04.2)へKVMかさねがけしてインストールする

物理PC(NIC1枚)上にKVMかさねがけせずにUbuntu Server12.04.2を使って、管理サーバ、DBサーバ、ストレージ、ホスト全部1台にインストールする方法はこちら。ここに記載している手順よりシンプルですが..Consoleが上がりません..




NICが1枚しか刺さっていない1台の物理PCへ、
Ubuntu12.04.2LTSを使って、
4.2がでてきそうなこの時期に
CloudStack4.1をインストールしてみた。



物理構成(用意したもの)は以下の図のとおり。
あとUbuntu Server 12.04.2 LTSをCD-ROMへ予め焼いてある状態で、
インターネット接続はproxyなしで動作する環境になっています。



先に結論を書いておきますが、
上記のスペックでKVM重ねがけ構成した場合、
親サーバ側のOSがパニックを起こしてストップするため、
実用に耐えません



物理PC上に定義したネットワークは以下の図の通り。



KVMの親ガメ子ガメの2段構成。
管理サーバとストレージを分けたのは、
ゾーンの有効化に何度も失敗して管理サーバだけを上げ直せるように
ストレージを親ガメ側に用意しました。
ISOイメージはprivateネットワークをつかってHTTPダウンロード出来るようにしています。
#要グローバル設定変更

ネットワーク構成がこの枝とよくわからないと思うので論理構成を
別の絵にしてみました。



クライアントPCにrouteコマンド使わせるなんて
ホントは嫌だったけどしょうがない..

上記の物理構成の状態からインストルする手順をすべて
書き下したものが以下。


1. 物理マシンのセットアップ

1.1 OSのインストール


  • Ubuntu Server12.04.2LTS CD-ROMメディアを挿入し電源オン
  • 日本語
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語(かな 86) ※各自のキーボードによる
  • Alt + Shift
  • 戻る ※DHCPが引けたが固定IPを振る
  • ネットワークを手動で設定
  • 192.168.11.100
  • 255.255.255.0
  • 192.168.11.1
  • 192.168.11.1
  • william
  • royal ※ドメイン名は適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105 ※環境による
  • はい
  • はい
  • 499.8GB ※環境による
  • はい
  • いいえ
  • 空欄で次へ
  • 自動的にアップデートしない ※適宜変更
  • 続ける
  • はい
  • PCからCD-ROMを取り出す
  • 続ける ※再起動


1.2 プライマリ/セカンダリストレージ構築


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
  net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ssh openntpd nfs-kernel-server bridge-utils kvm qemu-utils qemu-kvm libvirt-bin virtinst apache2 virt-manager
  • vi /etc/network/interfaces

 (iface eth0 inet static以降を以下のように変更)
 iface eth0 inet manual
 iface br0 inet static
  address 192.18.11.100
  netmask 255.255.255.0
  network 192.168.11.0
  broadcast 192.168.11.255
  gateway 192.168.11.1
  dns-nameservers 192.168.11.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto br0

  • vi /etc/default/libvirt-bin

 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"

  • vi /etc/init/libvirt-bin.conf

 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"

  • vi /etc/libvirtd/libvirtd.conf

 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"

  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 80
  • ufw allow proto tcp from any to any port 8080
  • mkdir -p /export/primary /export/secondary
  • vi /etc/exports

 (最終行に以下の1行を追加)
 /export *(rw,async,no_root_squash,no_subtree_check)

  • exportfs -a
  • vi /etc/modprobe.d/nfs_lockd.conf

 (新規:以下の1行を追加)
 options lockd nlm_udpport=32769 nlm_tcpport=32803

  • vi /etc/default/nfs-kernel-server

 (修正前)
 RPCMOUNTDOPTS=--manage-gids
 (修正後)
 RCPMOUNTDOPTS="--port 892"

  •  vi /etc/default/nfs-common

 (修正前)
 STATDOPTS=
 (修正後)
 STATDOPTS="--port 662 --outgoing-port 2020"

  • ufw allow 111
  • ufw allow 662
  • ufw allow 32769/udp
  • ufw allow 32803/tcp
  • ufw allow 2049
  • ufw allow 892
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 #192.168.11.100 william.royal william
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • reboot
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud ※不要な場合もあり
  • ifconfig -a ※br0にIPアドレスが振られているのを確認
  • tasksel
  • Ubuntu desktopをチェック(スペースキー)
  • OK ※結構時間が掛かる
  • reboot


1.3 仮想マシン用ネットワーク設定


  • cloud ※パスワードは適当に変更すること
  • 画面左上2番めにあるFireFoxをクリック ※ブラウザ起動
  • 検索欄に「Ubuntu Serverdownload」と入力
  • 「Download Ubuntu Server | Ubuntu」をクリック
  • 「Get Ubuntu 12.04 LTS」をクリック
  • OK
  • ※ダウンロード終了後
  • 画面左上2番めにフォルダマークのアイコン(Home Folder)をクリック
  • 左にある「ダウンロード」フォルダをクリック
  • 「ubuntu-12.04.2-server-amd64.iso」を右クリック
  • 「Move to」>「Home」を選択
  • 左上のUbuntuマークのアイコン(Dash Home)をクリック
  • 検索欄に「Term」と入力
  • Byobu Terminalを選択 ※Terminalならなんでも可
  • sudo su -
  • cloud ※不要な場合もあり
  • cd /var/www
  • mkdir -p images
  • chmod a+rwx images
  • cd images
  • mv ~cloud/ubuntu-12.04.2-server-amd64.iso .
  • chmod a+rw ./ubuntu-12.04.2-server-amd64.iso
  • ※余裕があればブラウザで「http://192.168.100.1/images/ubuntu-12.04.2-server-amd64.iso」を指定しダウンロード出来るようになっていることを確認しておく
  • virt-manager & ※KVM管理コンソールが起動
  • 「localhost(QEMU)」行をダブルクリック ※Connection Details画面がポップアップ
  • 「Virtual Networks」タブを選択
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「private」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.100.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「public」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.200.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「storage」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.0.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 画面左上の「×」を押して画面を閉じる



2. 管理サーバ用仮想マシンのセットアップ

2.1 仮想マシンの構築


  • ※virt-managerが上がっている状態
  • 左上のアイコン(Create a new virtual machine)押下
  • Name欄に「management」と入力
  • 「Local install media(ISO images or CDROM)」をチェック
  • 「Forward」ボタン押下
  • 「Use ISO image」をチェック
  • 「Browse...」ボタン押下
  • 「Browse Local」ボタン押下
  • Place欄の「File System」をクリック
  • 「var」>「www」>「images」>「ubuntu-12.04.2-server-amd64.iso」を選択
  • 「Open」ボタン押下
  • OS type欄を「Linux」に変更
  • Version欄を「Ubuntu 12.04 LTS (Precise Pangolin)」に変更
  • 「Forward」ボタン押下
  • Memory(RAM)は「1024」MBのままにする
  • CPUsは「1」のままにする
  • 「Forward」ボタン押下
  • 「Enable storage for this virtual machine」をチェック
  • 「Create a disk image on the computer's hard drive」をチェック
  • 「10.0」GBへ変更
  • ※管理サーバは8.0GBではインストール出来ない (セカンダリストレージのテンプレートが展開できない)
  • 「Allocate entire disk now」のチェックをはずす
  • 「Forward」ボタン押下
  • 「Customize configuration before install」をチェック
  • Advanced optionsを「Virtual network 'private':NAT」に変更
  • 「Finish」ボタン押下
  • ※仮想マシンがすぐに起動せずVirtual Machine画面が表示
  • 「NIC:xx:xx:xx」をクリック ※xx:xx:xxは毎回変わる
  • Device model欄を「e1000」に変更
  • 「Apply」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'public':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'storage':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 画面左上の「Begin installation」ボタン押下
  • ※画面コンソールが立ち上がりOSのインストールが開始
  • 日本語
  • 画面コンソール上にマウスカーソルを移動しクリック ※コンソールから脱出する場合はCtl+Alt押下
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな86)
  • Alt + Shift
  • eth0: Intel Corporation 82540EM Gigabit Ethernet Controller
  • 続ける
  • ネットワークを手動で設定
  • 192.168.100.2 ※eth0は最初に設定したprivateを割り当てたネットワーク
  • 255.255.255.0
  • 192.168.100.1
  • 192.168.100.1 ※NAT設定しているので
  • george
  • royal
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • 仮想ディスク 1 (vda) - 10.7 GB Virtio Block Device
  • はい
  • 10.5 GB
  • はい
  • (空欄のまま)続ける
  • 自動的にアップデートしない
  • (なにも選択せずに)続ける
  • はい
  • 続ける ※再起動


2.2 管理サーバのセットアップ


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
  net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list

 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1

  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -
  • aptutude update && aptitude -y dist-upgrade && aptitude -y install ssh ntp nfs-common bridge-utils mysql-server cloudstack-management
  • cloud ※MySQLのrootパスワード
  • cloud
  • vi /etc/ntp.conf

 (serverから始まる行をすべてコメントアウト)
 (以下の1行を追加)
 server 192.168.100.1

  • service ntp restart
  • vi /etc/mysql/my.cnf

 ([mysqld]セクション内に以下の5行を追加)
 innodb_rollback_on_timeout=1
 innodb_lock_wait_timeout=600
 max_connections=350
 log-bin=mysql-bin
 binlog-format = 'ROW'

  • service mysql restart
  • cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:cloud
  • vi /etc/sudores

 (11行目に以下の1行を追加し強制保存)
 Defaults:cloud !requiretty

  • vi /etc/network/interfaces

 (eth0以降の設定を以下のように変更)
 auto eth0
 iface eth0 inet manual
 iface cloudbr0 inet static
  addres 192.168.100.2
  netmask 255.255.255.0
  network 192.168.100.0
  broadcast 192.168.100.255
  gateway 192.168.100.1
  metric 10
  dns-nameservers 192.168.100.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
 auto eth1
 iface eth1 inet manual
 iface cloudbr1 inet static
  addres 192.168.200.2
  netmask 255.255.255.0
  network 192.168.200.0
  broadcast 192.168.200.255
  metric 20
  bridge-ports eth1
  bridge-stp off
 auto cloudbr1
 auto eth2
 iface eth2 inet manual
 iface cloudbr2 inet static
  addres 192.168.0.2
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  metric 30
  bridge-ports eth2
  bridge-stp off
 auto cloudbr2

  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • reboot
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • reboot ※デフォルトNICがprivateネットワークになっていない場合があるのでもう1回リブート
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud ※不要な場合あり
  • ping www.google.com ※pingが通らない場合はネットワーク設定に誤りあり
  • ping 192.168.0.1 ※pingが通らない場合はネットワーク設定に誤りあり
  • cloudstack-setup-management
  • mkdir -p /mnt/secondary
  • mount -t nfs 192.168.0.1:/export/secondary /mnt/secondary
  • /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-mount-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
  • umount /mnt/secondary
  • cd /mnt
  • rmdir secondary
  • reboot



3. ホスト用仮想マシンのセットアップ

3.1 仮想マシンの構築


  • ※物理マシン上にvirt-managerが上がっている状態
  • 左上のアイコン(Create a new virtual machine)押下
  • Name欄に「agent」と入力
  • 「Local install media(ISO images or CDROM)」をチェック
  • 「Forward」ボタン押下
  • 「Use ISO image」をチェック
  • 「Browse...」ボタン押下
  • 「Browse Local」ボタン押下
  • Place欄の「File System」をクリック
  • 「var」>「www」>「images」>「ubuntu-12.04.2-server-amd64.iso」を選択
  • 「Open」ボタン押下
  • OS type欄を「Linux」に変更
  • Version欄を「Ubuntu 12.04 LTS (Precise Pangolin)」に変更
  • 「Forward」ボタン押下
  • Memory(RAM)は「3913」MBにする ※めいいっぱいとる
  • CPUsは「8」にする ※めいいっぱいとる
  • 「Forward」ボタン押下
  • 「Enable storage for this virtual machine」をチェック
  • 「Create a disk image on the computer's hard drive」をチェック
  • 「10.0」GBへ変更
  • ※管理サーバは8.0GBではインストール出来ない
  •  (セカンダリストレージのテンプレートが展開できない)
  • 「Allocate entire disk now」のチェックをはずす
  • 「Forward」ボタン押下
  • 「Customize configuration before install」をチェック
  • Advanced optionsを「Virtual network 'private':NAT」に変更
  • 「Finish」ボタン押下
  • ※仮想マシンがすぐに起動せずVirtual Machine画面が表示
  • 「NIC:xx:xx:xx」をクリック ※xx:xx:xxは毎回変わる
  • Device model欄を「e1000」に変更
  • 「Apply」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'public':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'storage':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 画面左上の「Begin installation」ボタン押下
  • ※画面コンソールが立ち上がりOSのインストールが開始
  • 日本語
  • 画面コンソール上にマウスカーソルを移動しクリック ※コンソールから脱出する場合はCtl+Alt押下
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな86)
  • Alt + Shift
  • eth0: Intel Corporation 82540EM Gigabit Ethernet Controller
  • 続ける
  • ネットワークを手動で設定
  • 192.168.100.3 ※eth0は最初に設定したprivateを割り当てたネットワーク
  • 255.255.255.0
  • 192.168.100.1
  • 192.168.100.1 ※NAT設定しているので
  • catherine
  • royal
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • 仮想ディスク 1 (vda) - 10.7 GB Virtio Block Device
  • はい
  • 10.5 GB
  • はい
  • (空欄のまま)続ける
  • 自動的にアップデートしない
  • (なにも選択せずに)続ける
  • はい
  • 続ける ※再起動



3.2 ホストのセットアップ


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list

 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1

  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -
  • aptutude update && aptitude -y dist-upgrade && aptitude -y install ssh ntp nfs-common bridge-utils kvm qemu-utils qemu-kvm libvirt-bin virtinst cloudstack-agent
  • vi /etc/default/libvirt-bin

 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"

  • vi /etc/init/libvirt-bin.conf

 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"

  • vi /etc/libvirtd/libvirtd.conf

 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"

  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 1798
  • ufw allow proto tcp from any to any port 16509
  • ufw allow proto tcp from any to any port 5900:6100
  • ufw allow proto tcp from any to any port 49152:49216
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • vi /etc/network/interfaces

 (eth0以降の設定を以下のように変更)
 auto eth0
 iface eth0 inet manual
 iface cloudbr0 inet static
  addres 192.168.100.3
  netmask 255.255.255.0
  network 192.168.100.0
  broadcast 192.168.100.255
  gateway 192.168.100.1
  metric 10
  dns-nameservers 192.168.100.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
 auto eth1
 iface eth1 inet manual
 iface cloudbr1 inet static
  addres 192.168.200.3
  netmask 255.255.255.0
  network 192.168.200.0
  broadcast 192.168.200.255
  metric 20
  bridge-ports eth1
  bridge-stp off
 auto cloudbr1
 auto eth2
 iface eth2 inet manual
 iface cloudbr2 inet static
  addres 192.168.0.3
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  metric 30
  bridge-ports eth2
  bridge-stp off
 auto cloudbr2

  • reboot
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • passwd
  • cloud ※rootのパスワード
  • cloud


4. ゾーンの構築


  • ※物理マシンにもどる
  • 画面左上のFirefoxアイコン(Firefoxウェブブラウザ)押下
  • (ブラウザが既に上がっている場合は不要)
  • http://192.168.100.2:8080/client を開く
  • Language欄を「Japanese」に変更
  • ユーザ名「admin」
  • パスワード「password」
  • ドメインは空欄のまま
  • 「ログオン」ボタン押下
  • 「CloudStackを使用したことがあるので、このガイドをスキップする」押下
  • 「インフラストラクチャ」押下
  • ゾーンの「すべてを表示」押下
  • 「+ゾーンの追加」押下
  • 「基本」をチェック
  • 「Next」押下
  • 名前に「zone01」と入力
  • DNS1に「192.168.200.1」と入力 ※publicネットワークのDNS(NAT)として
  • 内部DNS1に「192.168.100.1」と入力 ※privateネットワークのDNS(NAT)として
  • ハイパーバイザを「KVM」に変更
  • 「Next」押下
  • 管理の「Edit」押下
  • KVMトラフィックラベルに「cloudbr0」と入力 ※privateネットワーク
  • 「OK」押下
  • ゲストの「Edit」押下
  • KVMトラフィックラベルに「cloudbr1」と入力 ※publicネットワーク
  • 「OK」押下
  • トラフィックの種類上の「ストレージ」アイコンをドラッグしてPhysical Network 1の破線部内へドロップ
  • ストレージの「Edit」押下
  • KVMトラフィックラベルに「cloudbr2」と入力 ※storageネットワーク
  • 「OK」押下
  • 「Next」押下
  • ポッド名に「pod01」と入力 ※podの設定ではprivateネットワークの情報を設定する
  • 予約済みシステムゲートウェイに「192.168.100.1」を入力
  • 予約済みシステムネットマスクに「255.255.255.0」を入力
  • 予約済み開始システムIPアドレスに「192.168.100.101」を入力 ※非DHCPなので4より上を適当に割り当てる
  • 予約済み終了システムIPアドレスに「192.168.100.200」を入力
  • 「Next」押下
  • ゲストゲートウェイに「192.168.200.1」を入力 ※ゲストなのでpublicネットワークセグメントで記述
  • ゲストネットマスクに「255.255.255.0」を入力
  • ゲストの開始IPアドレスに「192.168.200.101」を入力 ※非DHCPなので4より上を適当に割り当てる
  • ゲストの終了IPアドレスに「192.168.200.200」を入力
  • 「Next」押下
  • ゲートウェイに「192.168.0.1」と入力 ※storageネットワークセグメントで記述
  • ネットマスクに「255.255.255.0」と入力
  • VLANは空欄のままにする
  • 開始IPアドレスに「192.168.0.101」と入力
  • 終了IPアドレスに「192.168.0.200」と入力
  • 「追加」押下
  • 「Next」押下
  • クラスタ名に「cluster01」と入力
  • 「Next」押下
  • ホスト名に「192.168.100.3」と入力 ※ホストのIPアドレスをprivateネットワークアドレスで記述
  • ユーザ名に「root」と入力
  • パスワードに「cloud」と入力
  • ホストタグは空欄のままにする
  • 「Next」押下
  • 名前に「primary01」と入力
  • プロトコルは「nfs」のままにする
  • サーバーに「192.168.0.1」と入力 ※物理PCのIPをstorageネットワーク指定
  • Pathに「/export/primary」と入力
  • ストレージタグは空欄のままにする
  • 「Next」押下
  • NFSサーバーに「192.168.0.1」と入力 ※物理PCのIPをstorageネットワーク指定
  • パスに「/export/secondary」と入力
  • 「Next」押下
  • 「Launch zone」押下
  • ※ゾーンを有効化するかのダイアログが表示される
  • ※ここからセカンダリVMの起動失敗するケースが多いので管理サーバの/var/log/cloudstack/management/management-server.logをtail -fで見ておいたほうが良い
  • 「はい」押下
  • ※管理コンソール画面に戻る
  • 右ではなく上の「インフラストラクチャ」を押下
  • 更新を押下
  • システムVMの「すべてを表示」を押下
  • 2つのVMが存在し、ステータスが両方「Running」になるまで待機(結構時間がかかる)
  • 画面左の「テンプレート」を押下
  • 「CentOS 5.5(64-bit) no GUI (KVM)」をクリック
  • 準備完了欄が「Yes」となるまで待機(すこじ時間がかかる)



5. テスト

※Ubuntu Server12.04.2LTSのISOイメージを取り込み、インスタンスを起動するところまで


5.1 ISOイメージの取り込み

※管理コンソールが立ち上がり、adminでログイン済みの状態
  • 画面左の「グローバル設定」を押下する
  • 画面右上の検索欄に「secstorage」と入力
  • 名前が「secstorage.allowed.internal.sites」の操作欄のアイコンをクリック
  • 値欄に「192.168.100.0/24」と入力する ※もっとサブネット絞って範囲狭めても良い
  • 「OK」を押す
  • 画面右上の「admin cloud」>「ログオフ」を選択
  • ※管理サーバのコンソール画面へ(ログイン画面)
  • cloud ※OSのユーザ名、適当に変更する
  • cloud ※OSのパスワード、適当に変更する
  • sudo reboot
  • cloud ※聞かれない場合あり
  • ※再起動されたら、画面コンソールのログイン画面へ
  • ユーザ名に「admin」と入力する
  • パスワードに「password」と入力する
  • 「ログイン」押下
  • 画面左の「テンプレート」を押下
  • 画面上のビューの選択を「ISO」に変更
  • 画面右上の「+ISOの登録」を押下
  • 名前欄に「Ubuntu Server 12.04.2 LTS」と入力
  • 説明欄に「Downloaded YYYY/MM/DD」と入力
  • URL欄に「http://192.168.100.1/images/ubuntu-12.04.2-server-amd64.iso」と入力
  • ゾーンは「All Zone」のままにする
  • 起動可能はチェックのままにする
  • OSの種類を「Ubuntu 12.04 (64-bit)」に変更する
  • 抽出可能のチェックはないままとする
  • パブリックをチェックする
  • おすすめをチェックする
  • 「OK」押下
  • 「Ubuntu Server 12.04.2 LTS」をクリックする
  • 準備完了欄が「Yes」になるまで待機(更新ボタンで再表示して確認する)


5.2 インスタンス作成


  • 画面左の「インスタンス」を押下する
  • 画面右上の「+インスタンスの追加」を押下
  • ゾーンの選択は「zone01」のままとする
  • ISOまたはテンプレートの選択は「ISO」をチェック
  • 「次へ」押下
  • おすすめタブのUbuntu Server 12.04.2 LTSがチェックされているままとする
  • Hypervisorは「KVM」のままとする
  • 「次へ」押下
  • 「Small Instance」をチェックしたままにする
  • 「次へ」押下
  • 「Small」をチェックしたままにする
  • 「次へ」押下
  • 「default」をチェックする
  • 名前(オプション)欄に「Test」と入力する
  • グループへの追加(オプション)欄を空欄のままとする
  • 「VMの起動」押下
  • 画面左の「インスタンス」を押下する
  • 「Test」をクリックし、詳細タブの一番上にアイコン群がならぶまで待機する
  • アイコン群の右端のアイコン(コンソールの表示)をクリックする
  • ※UbuntuのインストーラのLanguage選択が出ればOK、あとは継続するかは適宜

以上


なぜ、コンソールの表示までで止まっているのかというと、
このままUbuntuをインストールしている最中に

親ガメ(192.168.11.100)のOSがパニックを起こしてしまいました..

CloudStackを試す場合は孫ガメまで作らないといけないので
メモリのリソースが足りないのかも..

子供が管理サーバとホストの2インスタンス、
孫がSecondary StorageVM、Console ProxyVMと作成したインスタンスの3つ
仮想マシン計5個動かしてることになるから..


実用に耐えないのはわかっていたけど..
もうちょっと色々させて欲しかったなあ...


OS型でないESXiにしたほうがいいのかなあ..

2013年7月5日金曜日

Puppetを使ったOpenShift Origin のインストールについてのドキュメントをを翻訳してみる

OpenShift Originを企業内で使用するには
結局ブローカとノードを分離したインストールを実施しておかないといけなくなる。
なのでその作業に必要そうなドキュメントを翻訳してみた。
原本は、以下のリンクである。

(OpenShift Origin GitHub)Installing OpenShift Origin using Puppet



翻訳文章を参考にされる方は、
at your own riskでお願いします。


----

Puppetを使ったOpenShift Origin のインストール

このガイドは、基本のパペットスクリプトを設定してRPMからOpenShiftをインストールするためのウォークスルーを提供する。


OpenShift Origin RPMは以下のリポジトリ上で利用可能である:

・自分でソースからビルドしたOpenShift Origin RPMの入ったローカルリポジトリ
・Openshift Origin nightly ミラーリポジトリ - Fedora 19 リポジトリ
 - RHEL 6.4 リポジトリ
注意:OpenShift Origin ブローカ/ノードを適切に設定するために、DNS登録されたホスト名および静的IPアドレスが設定されたホストが必要となる。

Puppetのインストール


注意:RHELシステムへpuppetをインストールするためにEPELリポジトリをインクルードする必要がある。

ここにある最新のepel-releaseパッケージをインストールする。

 yum install -y --nogpgcheck ${url_of_the_latest_epel-release_rpm}

以下のコマンドを実行してpuppetとfacterをインストールする。

 yum install -y puppet facter tar

openshift puppetモジュールをインストールする:

 puppet module install openshift/openshift_origin



BIND TSIG キーの生成


BINDパッケージをインストールする。


 yum install -y bind

TSIG キーを生成する。

 #クラウドドメインとして example.com を使う場合
 /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example.com
 cat /var/named/Kexample.com.*.key  | awk '{print $8}'

TSIGキーは、CNk+wjszKi9da9nL/1gkMY7H+GuUng== といった様な文字列である。次のステップで使用する。


/etc/hosts へのエントリの追加(オプション)


もしあなたのマシンのホスト名からパブリックIPアドレスを(DNSで)引くことができないのであれば、以下の作業を行うこと:

1. /etc/hosts へ、ホスト名からパブリックIPアドレスへのマッピングエントリを追加する。例:

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 10.211.55.3 thishost.thisdomain.com

2. /etc/hostnameを更新する。例:

 echo "thishost.thisdomain.com" > /etc/hostname
 hostname thishost.thisdomain.com


オールインワンホストの設定

この設定では、ホスト上で、ブローカ、ノード、アクティブMQ、mongodb、バインドサービスが動作する。

以下の内容を含むファイルconfigure_origin.ppを作成する:

 class { 'openshift_origin' :
  #The DNS resolvable hostname of this host
  node_fqdn                  => "thishost.thisdomain.com",
 
  #The domain under which application should be created. Eg: -.example.com
  cloud_domain               => 'example.com',
 
  #Upstream DNS server.
  dns_servers                => ['8.8.8.8'],
 
  enable_network_services    => true,
  configure_firewall         => true,
  configure_ntp              => true,
 
  #Configure the required services
  configure_activemq         => true,
  configure_mongodb          => true,
  configure_named            => true,
  configure_avahi            => false,
  configure_broker           => true,
  configure_node             => true,
 
  #Enable development mode for more verbose logs
  development_mode           => true,
 
  #Update the nameserver on this host to point at Bind server
  update_network_dns_servers => true,
 
  #Use the nsupdate broker plugin to register application
  broker_dns_plugin          => 'nsupdate',
 
  #If installing from a local build, specify the path for Origin RPMs
  #install_repo               => 'file:///root/origin-rpms',
 
  #If using BIND, let the broker know what TSIG key to use
  named_tsig_priv_key         => ''
 }

puppetスクリプトを実行する:

 puppet apply --verbose configure_origin.pp


ブローカ/ノードを分離したホストで動かす設定

ブローカホスト


この設定では、ホスト上で、ブローカ、アクティブMQ、mongodb、バインドサービスが動作する。

以下の内容を含むファイルconfigure_origin.ppを作成する:

 class { 'openshift_origin' :
  #The DNS resolvable hostname of this host
  node_fqdn                  => "thishost.thisdomain.com",
 
  #The domain under which application should be created. Eg: -.example.com
  cloud_domain               => 'example.com',
 
  #Set to `'nightlies'` to pull from latest nightly build
  #Or pass path of your locally built source `'file:///root/origin-rpms'`
  install_repo               => 'nightlies',
 
  #Upstream DNS server.
  dns_servers                => ['8.8.8.8'],
 
  enable_network_services    => true,
  configure_firewall         => true,
  configure_ntp              => true,
 
  #Configure the required services
  configure_activemq         => true,
  configure_mongodb          => true,
  configure_named            => true,
  configure_avahi            => false,
  configure_broker           => true,
 
  #Don't configure the node
  configure_node             => false,
 
  #Enable development mode for more verbose logs
  development_mode           => true,
 
  #Update the nameserver on this host to point at Bind server
  update_network_dns_servers => true,
 
  #Use the nsupdate broker plugin to register application
  broker_dns_plugin          => 'nsupdate',
 
  #If installing from a local build, specify the path for Origin RPMs
  #install_repo               => 'file:///root/origin-rpms',
 
  #If using BIND, let the broker know what TSIG key to use
  named_tsig_priv_key         => ''
 }

puppetスクリプトを実行する:

 puppet apply --verbose configure_origin.pp

ノードホスト

この設定では、ホスト上でノードのみが動作する。

以下の内容を含むファイルconfigure_origin.ppを作成する:

 class { 'openshift_origin' :
  #The DNS resolvable hostname of this host
  node_fqdn                  => "thishost.thisdomain.com",
 
  #The domain under which application should be created. Eg: -.example.com
  cloud_domain               => 'example.com',
 
  #Set to `'nightlies'` to pull from latest nightly build
  #Or pass path of your locally built source `'file:///root/origin-rpms'`
  install_repo               => 'nightlies',
 
  #Upstream DNS server.
  dns_servers                => ['8.8.8.8'],
 
  enable_network_services    => true,
  configure_firewall         => true,
  configure_ntp              => true,
 
  #Don't configure the broker services
  configure_activemq         => false,
  configure_mongodb          => false,
  configure_named            => false,
  configure_avahi            => false,
  configure_broker           => false,
 
  #Configure the node
  configure_node             => true,
  named_ipaddress            => ,
  mongodb_fqdn               => ,
  mq_fqdn                    => ,
  broker_fqdn                => ,
 
  #Enable development mode for more verbose logs
  development_mode           => true,
 
  #Update the nameserver on this host to point at Bind server
  update_network_dns_servers => true,
 
  #Use the nsupdate broker plugin to register application
  broker_dns_plugin          => 'nsupdate',
 
  #If installing from a local build, specify the path for Origin RPMs
  #install_repo               => 'file:///root/origin-rpms',
 }

puppetスクリプトを実行する:

 puppet apply --verbose configure_origin.pp

ソースコードからOpenShift Origin RPMSをビルドする方法を翻訳してみる

OpenShift Origin(オープンソース版OpenShift)のRPMを
ローカル上に構築する方法を翻訳してみた。

翻訳内容について保障はできませんので、
at your own riskで参照して下さい。

原本は、以下のリンクです。
(OpenShift GitHub) Building OpenShift Origin RPMS from source

----

ソースコードからOpenShift Origin RPMSをビルドする方法


このガイドは、GitHubからOpenShift Origin ソースコードを入手し、Origin RPMSのローカルコピーをビルドするウォークスルーを提供する。

OpenShift Origin は、パッケージをビルドするためには、Fedora19もしくは RHEL 6.4 コンパチブルシステムが必要となる。ビルドを処理するために最小インストレーションで開始することを推奨する。


OpenShift Origin リポジトリ

OpenShift Origin ソースコードは、5つのリポジトリで構成されている:

  • origin-dev-tools:このリポジトリは、ローカルもしくはEC2へOpenShft Originインストーレーションのビルドやテストに必要なすべてのビルドツールが含まれている。
  • origin-server:ブローカ、ノードおよびDNSのためのプラグイン群、通信及び認証機能のソースコードを含むメインリポジトリ。OpenShiftインストレーションで使用するいくつかのコアカートリッジも含んでいる。
  • origin-community-cartridges:このリポジトリは、Fedora 19インストレーション中に使用する追加カートリッジ群を含んでいる。
  • rhc:このリポジトリはOpenShiftベースのPaaSへアクセスするためのコマンドラインツールを含んでいる。
  • puppet-openshift_origin:このリポジトリは、OpenShift Originを設定するためのpuppetスクリプトを含んでいる。




ビルドの必要条件


1. 基本の依存パッケージ群をインストールする(root)

 yum install -y rubygem-thor git tito yum-plugin-priorities wget vim-enhanced \
  ruby-devel rubygems-devel rubygem-aws-sdk rubygem-parseconfig rubygem-yard rubygem-redcarpet \
  createrepo

2. openshift-dev-toolsリポジトリのクローンを作成する

 git clone git://github.com/openshift/origin-dev-tools.git

3. OpenShift Originソースコードのクローンを作成する

 # origin-dev-tools の checkout から
 export SKIP_SETUP=1
 ./build/devenv clone_addtl_repos master

4. 必須パッケージをインストールする(root)

 # origin-dev-tools の checkout から
 # このステップはたくさんのRPMをインストールするため時間がかかる
 ./build/devenv install_required_packages

5. RPMをビルドする(root)

 # origin-dev-tools の checkout から
 ./build/devenv local-build --skip-install

RPMがorigin-rpmsディレクトリ上で利用可能となる

6. RPMメタデータを作成すると、ディレクトリはYUMリポジトリとしてアクセス可能となる

 # origin-rpms ディレクトリから
 createrepo .

2013年7月2日火曜日

パブリックPaaS版Cloud Foundryにログインしてみる


[InfoQ]: Cloud Foundryが新バージョンを発表し、旧を廃止。


上記記事を読むと、2013年6月30日で古いV1が廃止され、
かわってV2サービスにかわるらしい。
旧版V1で使っていた人は期限内に移行しないと
アプリが消されるらしい。
しかも移行ツールとかの提供もないらしい..

しかも"無料"ベータが終了するらしい...


そういえばMicro Cloud Foundryは試したことがあるが
パブリックPaaS版は試したことなかったので
とりあえずアカウントを取ってログインしてみた。

まずApp Spaceタブの画面(初期画面)。






ここでアプリケーションを追加して
開発者を割り当てるらしい。


Org xxxx-org has 60 days left in its free trial, which includes 2GB of app memory and 10 of the free Marketplace services. Paid plans coming soon.
組織 xxxx-org は60日間フリートライアル期間を保有しています。トライアルには、2GB アプリケーションメモリ、10のフリーマーケットプレイスサービスを含んでいます。支払いプランについてはもうすぐ完成予定です。

というのがてっぺんにでていて、
使う気を削いでくれる..


次にUsersタブ。



ロールは、
デベロップメントロール、
プロダクションロール、
ステージングロールの3種類で
組織(org)単位、App Space単位に割り当てられそうだ。

ユーザはメールアドレスを持っていることが必須。




Org Settings タブは
組織設定変更やドメインの割り当てなどを行うようだ。




で Marketplace。
もう「金、とりまっせ~」って感じの名前が嫌!




アプリケーションに加えることの出来るサービス。
今のところDB、NoSQLとMQ、JMeterくらい。

一体いくらぐらいなのか..
どきどきしながら1つづつPlan Optionを開いてみたが
今のところ無料版の範囲だけしかのっていなかった。

rediscloud

Powered by Grantia Data
開発者向けエンタープライズクラスredis(インメモリデータベース)
  • 20MB無料版
  • 1データベース
  • 10接続まで無料

mongolab

完全に管理されたMongoDB as a Service
  • SANDBOXバージョン無料
  •  ストレージ496MB
  •  MongoLabのS3バケットかユーザ指定領域へのバックアップ(即時、計画)
  •  24/365モニタリング
  •  電子メールサポート(support@mongolab.com)
  •  MongoDB/データベース エキスパートアドバイス
  •  標準ドライバ及びREST APIサポート
  •  Webベースの管理ツール

cleardb

SUCCESSBRICKS, INC DBA CLEARDB
アプリ用高アベイラビリティMySQL
  • SPARK
  •  価格:無料!
  •  DBサイズ:20MBまで
  •  接続4
  •  I/Oパフォーマンス:Low
  •  日次バックアップ
  •  完全POC/初期開発向け

blazemeter

JMeter負荷テストクラウド
  • FREE-TRIAL版
  •  ずっと無料
  •  50接続ユーザまで
  •  10テスト/月まで

treasuredata

Hadoopベースのクラウドデータウェアハウス
  • NANO版(無料)
  •  100MBの圧縮データストレージ
  •  60クエリ/月
  •  保障コア0、最大コア1

cloudamqp

84CODES AB
管理されたクラウドHA RabbitMQサービス
  • LEMUR(無料)版

elephantsql

84CODES AB
PostgreSQL as a Service
  • TURTLE(無料)版


App Engineを使っているうちに染み付いてしまった
なんとかして無料でやりくりしてやろうという
姑息な根性が成長してしまい
どうしても有料という単語→あきらめ
という性根がこれ以上のアプリ作成にブレーキをかける。
とりあえずまだ60日無料で使えるんだけど..


き、今日はここまでにしといてやろう..

2013年6月28日金曜日

Get Started on OpenShiftを翻訳する

いきなりOpenShift Originで勉強するより
まずOpenShift Onlineを試したほうが良いと
ようやく気づき、
初心に戻って

Get Started on OpenShift

のとおりに試して見ることにした。


以下、翻訳した内容を貼り付けておく。
(at your own riskでお願いします)


ドキュメントは、Web、コマンドライン、IDEの3つに分かれている。

実行環境(サーバ)は、OpenShift Online(RedHatのパブリックPaaS、無料でアプリ3つまで)ベースで書かれているが、1章をOpenShift Originで作ったオンプレミスサーバに差し替えて考えれば、どちらの場合でもGet Start1できるはずだ。

読んだ記事にも書いてあったが、たしかに本当にCloud Foundryに似ている。App EngineやCloud Foundryを知っていると、OpenShiftの理解が早いと思う(もちろん開発者としての理解は)。

Web

  • 最も早くスタートする方法
  • プラウザからアプリを素早く構築
  • 新規アプリケーションの開始、管理とモニタリング向き



OpenShiftのWebコンソールは、インストールが不要で、コマンドライン操作不要でアプリケーションんを構築・管理するためのパワーを与えてくれます。コンソールはアプリケーションの構築や、アプリケーションを保管する追加の機能を提供を支援します。例として、MongoDB、MySQL、Jenkins continuous integration buildsなどが含まれます。


1. アカウントのサインアップ


OpenShiftアカウントごとに無料で3つのアプリケーションを構築することができ、クラウド内のこれらのアプリケーションの実行中の有益性を体験することができます。

(訳者注)
上記リンクを押すと新規アカウント作成(英語)画面がでるので、メールアドレス(アカウント名)、パスワード、bot対策の文字列を入力すると、メールアドレス先へ確認メールが飛ぶ。本文記載のリンクを踏むと登録完了。

2. コンソールを開いてアプリケーションを構築



コンソールを使ってすぐに稼働可能でコーディング可能なアプリケーションを簡単に構築することができます。Drupalのような協力なCMS(コンテンツ管理システム)や、業界標準のブログプラットフォームであるWordPressをボタンをクリックすることで開発します。

→クイックスタートはこちら


3. Gitをインストールしてコーディングを開始する(オプション)


ソースコードへ変更を加える準備ができたら、Gitバージョンコントロールプログラムを使ってOpenShiftへチェックインやコードの発行を直接行うことができます。The client tools installation pageに異なるプラットフォームごとのGitのインストールや、Gitを使ったインテグレーションを行う際のEclipseやVisual Studioのような有名な開発環境についての詳細情報が掲載されています。

 git clone ssh://...rhcloud.com/~/git/myapp.git/

ソースコードのダウンロードやアップロードを行うために、パブリックSSHキーでOpenShiftへ提供しなくてはなりません。(コピー・アンド・ペーストで)コンソール内のキーの設定後、アプリケーションのGit URLが表示されます。ソースコードリポジトリのローカルコピーを作成するgit cloneコマンドでURLをパスします。


4. 変更のOpenShiftへのアップロード


取得したコードを変更しOpenShiftへpushします。

  $ cd myapp
  $ vim php/index.php
  (エディタで修正して、":wq")
  $ git commit -a -m "My first change"
  $ git push


実行後、URLを参照して、変更が反映されていることを確認して下さい。

 →アプリケーションの変更開発についてはこちらを参照して下さい


$> rhc_ コマンドライン

  • どこでもコード、どこでも管理
  • どんなプラットフォームでもアプリやコードのフルコントロールが可能
  • コーディングやデバッギング、アプリケーション管理向き


以下の簡単なステップに従うことで、我々のパワフルなコマンドラインクライアントを試して下さい。

OpenShiftクライアントツールはRuby Gemとしてパッケージされています。あなたの環境で実行するためには、Ruby1.8.7以降、gemをインストールできる権限(Linuxの場合root権限でのアクセス)、Gitバージョンコントロールツールが必要となります。クライアントツールの詳細なヘルプはDeveloper Centerにあります。


1. アカウントのサインアップ


OpenShiftアカウントごとに無料で3つのアプリケーションを構築することができ、クラウド内のこれらのアプリケーションの実行中の有益性を体験することができます。


2. Windows | Mac OS X | FedoraおよびRedHat Enterprise Linux | Linux 上へクライアントツールをインストール


 <Windowsの場合>


 RubyInstaller 1.9 for Windowsをダウンロードし、インストールして下さい。
 重要!"Add Ruby executables to your PATH"オプションをチェックすること。

 Git for Windowsをダウンロードし、インストールして下さい。
 重要!"Run Git from the Windows Command Prompt"オプションをチェックすること。

 Windowsのコマンドプロンプトからgemをインストールして下さい:
  $ gem install rhc

 クライアントツール最新版へ更新したい場合、gem updateコマンドを使用します:
  $ gen update rhc


 <Mac OS Xの場合>


 Mac OS X上では、Full Xcode Suite もしくは git for OS Xのいずれかのインストールが必要です。これらのパッケージは、RubyおよびGitのインストール及び設定が含まれています。

 Gemをインストールして下さい:
  $ sudo gem install rhc

 クライアントツール最新版へ更新したい場合、gem updateコマンドを使用します:
  $ gen update rhc



 <FedoraおよびRedHat Enterprise Linuxの場合>


 YUM経由でOpenShift前提条件をインストールして下さい。
  $ sudo yum install rubygems git

 (RHEL 6.2のみ)RHN Classicを使用している場合は、"rubygems"パッケージをインストールしてRHEL6.2オプショナルチャンネルを追加する必要があります。
  $ sudo rhc-channel --add --channel=rhel-x86_64-server-optional-6

 Gemをインストールして下さい:
  $ sudo gem install rhc

 クライアントツール最新版へ更新したい場合、gem updateコマンドを使用します:
  $ gen update rhc


 <Linuxの場合>


 前提となるパッケージをインストールして下さい:Ruby1.8.7以降、rubygems、git

 Gemをインストールして下さい:
  $ sudo gem install rhc

 クライアントツール最新版へ更新したい場合、gem updateコマンドを使用します:
  $ gen update rhc


 →より詳細のヘルプは、クライアントインストレーションガイドを読んで下さい。


3. 環境のセットアップ

OpenShift ログインアカウントおよびパスワードを使って、rhc setupを実行してOpenShiftへ接続し、アプリケーションの一意な名前空間を作成します。

ウィザード画面からSSHキーのアップロードを行い、Gitを使った通信が可能になります、もし必要な設定が誤っているならば確認して下さい、そして次にドメイン名を作成します。OpenShiftにおけるドメイン名はアプリケーションのURLの一部となります。ドメイン名はすべてのOpenShiftユーザのなかで一意となります。このため賢くクリエイティに選択して下さい!

ウィザード実行時に、あなたのログインIDが含まれる設定ファイル「<ホームディレクトリ>/.openshift/express.conf」が作成されます。もし再びセットアップする場合は、rhc setupから再び実行して下さい。
 $ rhc setup
 OpenShiftコマンドラインインターフェイスの対話型セットアップが開始される
 openshift.redhat.comへ接続するために、OpenShiftログインID(電子メールもしくはRedHatログインID)


4. 最初のアプリケーションを作成


これで、アプリケーションが作成可能な状態になりました。
  $ rhc app create myapp php-5.3
  Password: (アカウントのパスワード)

このコマンドで、アプリケーションのためのリモートgitリポジトリが作成し、ローカルのカレントディレクトリにクローンを作成します。

OpenShiftは多くのアプリケーションスタックを提供します。rhc cartridge listを実行して、すべてのオプションを確認して下さい。

あなたのアプリケーションのドメイン名は「<アプリケーション名>-<名前空間>.rhcloud.com」となります。 このため、exampleコマンドによって作成されたアプリケーションは、myapp-mydomain.rhcloud.com となります。


5. 変更と更新


アプリケーションの構築の最初のステップは終わりました。ここからは、自分のアプリケーションを構築していくことになります。

gitをサポートするIDEかエディタを使ってください。もしサポートしていないのであれば、2つの簡単なコマンドを使う方法もあります。

  $ cd myapp
  $ vim php/index.php
  (エディタで修正して、":wq")
  $ git commit -a -m "My first change"
  $ git push


実行後、URLを参照して、変更が反映されていることを確認して下さい。

 →開発のためのフレームワークの素晴らしいガイドを確認して下さい


6. 次のステップ


これで、アプリケーション開発のスタートを着ることができました。これからはOpenShftを用いたいろんな作業を行うことができます。以下のリンクのビデオ、ブログやユーとリアルを参照して下さい。

</> IDE

IDEを使った迅速な開発
Eclipse開発環境を使ったシームレスなインテグレーション
コーディングやデバッギング、アプリケーション管理向き

Eclipseベースの統合開発環境であるJBoss Developer Studioは、リッチなWebアプリケーションやトランザクショナルな企業アプリケーションを構築するために必要なすべてを開発者に提供します。指先ひとつでOpenShift環境へのアプリケーションの作成、編集、配置する機能を統合します。

1. アカウントのサインアップ


OpenShiftアカウントごとに無料で3つのアプリケーションを構築することができ、クラウド内のこれらのアプリケーションの実行中の有益性を体験することができます。今日から始めましょう。


2 JBoss Developer Studioのダウンロード(要サインイン)


 (訳者注)
 章題のリンク先はJBossサイトになっています。
 Cloud FoundryでいうところのSTS相当です。

 ドキュメント


 ビデオ



2013年6月26日水曜日

OpenShift Origin を Live CDからVMware Player上へインストールする

OpenShiftでぐぐると最初に出てくるのが

“使用”より“構築”で学ぶオープンPaaS「OpenShift」 (1/5)http://www.atmarkit.co.jp/ait/articles/1304/25/news014.html

ここにかいてある手順を参考にOpenShift Originをインストールしてみた。

 先に書いておくが、
 
 OpenShift Origin GitHub 
 http://openshift.github.io/
 
 にVMware Playerイメージもあるので、
 インストールが面倒な人はこっちのほうが簡単だと思う。
 (実は、ためしていない)
 Cloud Foundryも用意してくれてたからなあ..


この手順では、BrokerとNodeが同一PC(使ったのは仮想マシンだけど)上に構築される。
もっと簡単に言うと、開発クライアントも実行も全部このマシンで動作する。

DHCP管理下の物理PCでも大丈夫だとおもう。


上記サイトと異なるのは
  • Virtual BoxではなくVMware Playerを使用
  • VMware Playerホスト側はproxy環境下でインターネット接続
の2点のみ。


---------------

1. Live CDのダウンロード

https://openshift.redhat.com/app/download/remix へアクセス
 ダウンロードするにはアカウントを作らないといけないので
 "Create One"を選択し、メールアドレスとパスワードを登録する。
 その後再度上記サイトへアクセスしてログインすると
 ダウンロード開始する。
 ※1.3GBなので、結構時間が掛かる。私の環境で1時間半かかった..

2. 仮想マシン準備

VMware Playerを起動
 「新規仮想マシンの作成(N)」を選択
 「インストーラディスクイメージファイル(M)(iso):」
  ファイルはLive CDのイメージISOファイルパスを指定
 「次へ(N)」

 「Linux(L)」、バージョン「Fedora64ビット」
  LiveCDを使うとFedora16上に構築される
 「次へ(N)」

 仮想マシン名「OpenShift Origin」
 場所は好きなディレクトリで
 「次へ(N)」

 「仮想ディスクを複数のファイルに分割(M)」
 「次へ(N)」

 「ハードウェアカスタマイズ(C)」
 「メモリ」を選択
 この仮想マシンのメモリ「2048MB」
 「プロセッサ」を選択
 プロセッサコアの数(C)「2」
 「閉じる」

 「完了」

3. Live CDを使ってインストール

「OpenShift Origin」を選択
 「仮想マシンの再生(L)」

 「Start Openshift_Origin」でリターン
 ※Fedora16があがり、コンソールとブラウザが立ち上がる

 右上の「Live System User」>「System Settings」
 「Keyboard」

 「Layout Settings」を押す
 「Layouts」タブを選択
 「+」を押す
 「Japanese」を選択し「Add」を押す
 「English(US)」を選択し「-」を押す
 ウィンドウ右上の「X」を押す

 ※コンソールが裏で上がっているのでAlt+Tabなどでスイッチ
 $ xhost +
 $ su
 # liveinst
 ※liveinstコマンドでCDから
  仮想マシンの20GB HDDへ
  インストールを開始する

 ※Generic Installerウィンドウがあがる
 「Japanese」を選択
 「Next」を押す

 「Next」を押す

 「Yes, discard any data」を押す
 ※20GB HDDに何かファイルが残ってても無視する

 Hostname「broker.example.com」
 「Next」を押す

 「Tokyo」を選択
 「Next」を押す

 Root Password「passmaster」
 Confirm「passmaster」
 ※ここでは、ユーザ/パスワードは
  @IT記事のまま使用してます
 「Next」を押す

 「Create Custom Layout」を選択
 「Next」を押す

 ※ここからHDDパーティション構成
 「Hard Drive>sda>Free」を選択し「Create」を押す
 「Standard Partition」を選択し「Create」を押す

 File System Type「BIOS Boot」
 Size(MB)「1」
 「Fixed size」を選択
 「OK」を押す

 「Hard Drive>sda>Free」を選択し「Create」を押す
 「Standard Partition」を選択し「Create」を押す

 Mount Point「/boot」
 File System Type「ext4」
 Size(MB)「500」
 「Fixed size」を選択
 「OK」を押す

 「Hard Drive>sda>Free」を選択し「Create」を押す
 「LVM Physical Volume」を選択し「Create」を押す

 File System Type「physical volume(LVM)」
 「Fill to maximum allowable size」を選択
 「OK」を押す

 「Hard Drive>sda>sda3」を選択し「Create」を押す
 「LVM Volume Group」を選択し「Create」を押す

 Volume Group Name「vg」
 「add」を押す

 Mount Point「/」
 File System Type「ext4」
 Logical Volume Name「lv_root」
 Size(MB)はそのまま
 「OK」を押す

 「OK」を押す

 「Next」を押す

 ※Partitioning Warningsダイアログ
 「Yes」を押す

 ※Format Warningsダイアログ
 「Format」を押す

 ※Confirmダイアログ
 「Write Changes to Disk」を押す

 そのまま「Next」を押す
 ※しばらくかかる

 ※Congraturations, your Generic installation is complete.
 ※ここでCDは刺したまま(まだCD上のバイナリで動作しているので)
 「Reboot」を押しリブート
 ※実PCの場合、ここでCDを抜かないと
  またLiveCDからブートしようとするが、
  VMware Playerの場合はそのまま上がった

 ※GNU GRUB version 1.99
 「Generic Linux, with Linux 3.4.6-1.fc16.x86_64」を選択
 ※そのまま放置でもよい

 ※Fedora16 初期設定ウィザードを完了させる
 ※ホットドッグの絵(Welcome)画面
 「Forward」を押す

 「Forward」を押す

 「Forward」を押す
 ※時刻を治したい人は直す

 Full Name「Shifter」
 Username「shifter」
 「Add to Administrators group」をチェック
 Password「shifter」
 Confirm Password「shifter」
 「Forward」を押す

 ※VMware Playerウィンドウを操作する
 画面左上の「Payer>管理>仮想マシン設定(S)」を選択
 「CD/DVD(IDE)」を選択
 「物理ドライブを使用する」をチェック(自動検出)
 「OK」を押す

 ※OpenShift Origin - VMware Playerダイアログ
 「はい(Y)」を押す

 ※Hardware Profileへ戻る
 「Do not send profile」を選択
 「Finish」を押す
 ※しつこくダイアログが出るがDo not sendでよい
 ※再起動

 「Shifter」をクリック
 パスワード「shifter」でログイン
 ※GNOMEがエラー云々のダイアログが出る
  VMware toolsをインストールして解消させる

 ※VMware Playerウィンドウを操作する
 画面左上の「Payer>管理>VMware Toolsのインストール(T)」を選択

 ※コンソールへ
 $ su
 Password: passmaster
 # cd /tmp
 # tar xvfz /media/VMware\ Tools/VMwareTools-9.2.3-1031360.tar.gz
 ※アーカイブが/tmp以下へ展開される
 # cd vmwafre-tools-distrib
 # ./vmare-install.pl
 ※対話型インストールだが原則「リターン」でよい
 ※もし何度も同じ選択になった場合のみ選択肢を変更する
 ※インストールが終わると
  画面下の「VMware Toolsをインストールしています」という帯が消える

Enterを連発している最中に

The path "" is not a valid path to the 3.4.6-1.fc16.x86_64 kernel headers.

Would you like to change it? [yes]

でループするので、ここだけはnoを選択する。

カーネルヘッダがないので、本来はカーネルの
インストールをしてパス先を用意する必要があるのだけど、
ここではお試しなのでとりあえずスキップさせる。


 # exit
 $ cd
 $ sudo sed -i -e '/gpgkey=/aexclude=ruby \
 > ruby-devel ruby-irb ruby-libs ruby-rdoc' \
 > /etc/yum.repos.d/fedora-updates.repo
 ※上記は1行で書いても良い
 [sudo] password for shifter: shifter
 $ su
 Password: passmaster
 # chkconfig httpd on
 # service httpd start
 # chkconfig stickshift-broker on
 # service stickshift-broker start
 # chkconfig --del livesys
 # chkconfig --del livesys-late
 # chkconfig --del livesys-late-openshift
 # exit
 $ cat ~/.openshift/express.conf
  # SSH key file
  #ssh_key_file = 'libra_id_rsa'
  libra_server=localhost
  # Default rhlogin to use if none is specified
  default_rhlogin=admin
 ※上記のcatは中身の設定確認のみ
 # sudo reboot
 [sudo] password for shifter: shifter
 ※再起動


4. 動作確認

4.1 PHPアプリ"hello"

※ログイン画面
 「Shifter」をクリック
 パスワード「shifter」でログイン
 ※GNOMEがエラー云々のダイアログが出なくなる

 ※コンソール
 $ cd
 $ mkdir workspace
 $ cd workspace
 $ rhc domain create -n hara2 -l admin
 Password: admin
 ※hara2はOpenShiftのドメイン名
  アプリのURLが"http://xxx-hara2.example.com"になる
  xxxはアプリ別に名前をつける
 ※adminはOpenShiftのアカウント名、パスワードもadmin
 ※途中1度聞いてくるので「yes」と入力
 $ rhc app create -a hello -t php-5.3
 Password: admin
 ※helloはOpenShift上のアプリケーション名
  アプリのURLが"http://hello-hara2.example.com"になる
 ※adminはOpenShiftのアカウント名、パスワードもadmin
 ※途中1度聞いてくるので「yes」と入力
 ※これでhelloアプリ(初期画面)が上がっている

 ※ブラウザへ
 URL「http://hello-hara2.example.com」
 ※Welcome To OpenShiftという画面が出れば正常動作

 ※アプリ更新を試す
 ※コンソールへ
 $ cd ~/workspace/hello
 $ sed -i 's/Welcome to OpenShift/Welcome to Hara2 OpenShift/' php/index.php
 $ git commit -am "changed"
 $ git push

 ※再びブラウザへ戻る
 タブ「Welcome to OpenShift」を選択
 再読み込み(URL欄の一番右のアイコンを押す)
 ※Welcome To Hara2 OpenShiftと表示されれば正常動作

4.2 jBossアプリ"hellojboss"

※Eclipse+プラグインをインストールして
  hellojbossアプリを作成してブラウザで表示してみる
  というシナリオ

 ※ブラウザ
 URL「http://www.eclipse.org」を開く
 「Get Start now... Download Eclipse」を押す

 「Eclipse IDE for JavaEE Developers」の「Linux 64Bits」を押す

 「[Japan] Japan Advanced Institute of Science and Technokigy[http]」を押す
 ※上記のサイトではない場合もある

 「Save File」を選択し「OK」を押す
 ※しばらくかかる(~/Downloadsへ格納される)

 ※ダウンロード完了後コンソールへ
 $ mkdir ~/applications
 $ cd ~/applications
 $ tar xvfz ~/Downloads/eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz
 ※アーカイブが展開される
  実行する時期によりバージョンがあがり
  ファイル名が変わることがある
 $ cd
 $ mkdir ~/workspace/eclipse
 $ ~/applications/eclipse/eclipse -data ~/workspace/eclipse

 ※Eclipse起動
 メニューバー「Window>Preferences」を選択
 「Generic>Network Connections」を選択
 Active Provider「Manual」
 Proxy entries「HTTP」を選択し「Edit..」を押す
 Proxy設定は省略
 ※出てきた画面に各自の環境に合わせたproxy設定を行う
 「OK」を押す

 メニューバー「Help>Eclipse Marketplace...」を選択
 タブ「Search」のFind「jBoss」を入力し「Go」を押す
 「JBoss Tools(Juno)」の「Install」を押す
 「Next」を押す
 「I accept the terms of the license agreements」を選択
 「Finish」を押す

 ※Security Warningダイアログ
 「OK」を押す

 ※Software Updatesダイアログ
 「Yes」を押す

 ※JBoss Tools Usageダイアログ
 「Yes」を押す
 ※上記のYesは、JBoss Tools teamへ
  統計データを送ることを許可する場合
  各自で変更のこと

 ※ここで@ITの記事ではEGitもインストールするが
  上記のバージョンのEclipseはすでにこの段階で
  EGit2.5(作業時の最新は3.0)が入っていてエラーになる
  このため省略した

 「Welcome」タブの「X」を押して消す

 ※ここからプラグインを使って"jbosshello"アプリを作成
 ※画面中央上部に「JBoss Central」が表示される
 「CreateProject」欄の「OpenShift Application」を押す

 ※New OpenShift Applicationダイアログ
 Username「admin」
 Password「admin」
 「Save password(could trigger secure storage login)」を選択
 「Next>」を押す

 ※Secure Storageダイアログ
 Password「admin」
 Confirm password「admin」
 「OK」を押す

 ※Secure Storageダイアログ(小)
 「Yes」を押す

 ※Password Recoveryダイアログ
 Question1のQuestion「What is your mother's family name?」
 Andwerにあなたの母親の姓を入れる
 Question2のQuestion「What is your pet's name?」
 Andwerにあなたのペットの名前を入れる
 ※もちろん上記は適当に変更して良い
 「OK」を押す

 ※New OpenShift Applicationダイアログ
 Name「hellojboss」
 Type「jbossas-7」
 Embeddedable Cartridges「mysql-5.1」のみチェック
 「Next>」を押す

 ※ターミナルへ
 $ mkdir ~/git
 $ chmod a+rw ~/git

 ※EclipseのNew OpenShift Applicationダイアログへ
 「Next>」を押す

 「Use default location」をチェック
 Location「/home/shifter/git」
 「Finish」を押す

 ※ブラウザへ
 URL「http://hellojboss-hara2.example.com」を開く
 ※Welcome To OpenShift, JBossAS7 Cartridgeと表示されれば
  正常動作している

                          以上
---------------

..Cloud Foundryと比較すると明らかに面倒..つまりこなれてない..
RHELだけでなくUbuntuも取りこんでくれないかな..


よしとりあえずシングル構成はこれでいいから
マルチノード構成どうすれば出来るのか調べよう..
とおもったら、

これからのOpenShiftの話をしよう
http://www.slideshare.net/jacopen/openshift-13407714
を読んだら..

あれ、まだできないのか..
じゃあUbuntu派の私には旨味がほとんどないなあ..
このスライド書いた人、比較記事の人か..


【徹底比較】2大Open Paas、Cloud FoundryとOpenShiftの強み/弱み
http://techtarget.itmedia.co.jp/tt/news/1206/18/news02.html



なるほどCloud Foundryと比べても1年遅れか..
ただでさえ日本人はVMware好きがおおいしなあ..

たしかにWeb UIもないし。

StickShift Origin Web UI
https://www.openshift.com/forums/openshift/stickshift-origin-web-ui


でもGoogle Trendさまは、OpenShiftのほうが人気だとのたまう..


日本だけにすると、以下のグラフになる。


..バズワードとしても、国内じゃ両方起爆失敗?


ただ、Cloud Foundry、OpenShiftとも
パブリックPaaSとの親和性をうたっているのだけど、
エンタープライズシステム(SOA+BPM/BRM)の基盤としては..
結局チャネル層レベルだけなんだよなあ..

コマーシャルとのチャネルがあまりない企業だと
PaaS自体旨味があんまりない..

さて、どうするか..

p.s.
上記、作業していたのが2013/6/26で、
ちょうどEclipseがJunoからKeplerへ変わる途中で
JavaEE版はJuno、素EclipseがKeplerと微妙なダウンロード状況だったので
Eclipseまわりはごっちゃになってるかもしれません。
ご容赦願います..

2013年6月24日月曜日

OpenShiftのアーキテクチャ概要を翻訳する

CloudFoundryだけでなく、そろそろOpenShiftも
なんぞやということくらいはわかっていないと
社会についていけなくなるかもしれない..


なので、アーキテクチャについてだけドキュメントを翻訳して
勉強してみた。


なお、原本は以下のサイトです。

OpenShift
Architecture Overview
https://www.openshift.com/wiki/architecture-overview


翻訳内容についてはat your own riskで参照下さい。


---------------

アーキテクチャ概要


OpenShift Origin


OpenShift Origin はアプリケーションの作成、配置、管理をクラウドの内部で可能にします。OpenShift Originは、ディスクスペース、CPUリソース、メモリ、ネットワーク接続、ApacheもしくはJBossサーバを提供します。開発されるアプリケーションのタイプによって、テンプレートファイルシステムレイアウトが提供されます(例えば、PHP、Python、Ruby/Rails)。またアプリケーションのために1つの制限されたDNSも管理します。

プラットフォーム概要






2つの基本機能単位、インターフェイスを提供するブローカ(Broker)と、アプリケーションフレームワークを提供するカートリッジ(Cartridges)に分類されます。

  • ブローカ(Broker)は、すべてのアプリケーション管理アクティビティのための単一の接続ポイントです。ブローカはユーザログイン、DNS、アプリケーションの状態、アプリケーションの一般的なオーケストレーションに責任を持ちます。顧客は直接ブローカへ接続詞ません;代わりにRESTベースAPI経由で、Webコンソール、CLIツール、もしくはJBossツールを使ってブローカとやりとりをおこないます。
  • カートリッジ(Cartridges)は、ユーザアプリケーションを実行するために必要な実際の機能を提供します。現在、JBoss、PHP、Rubyなどの多くの言語カートリッジがあり、同様にPostgres、MySQL、Mongoなどのような多くのDBカートリッジがあります。


システムリソースとアプリケーションコンテナ



プラットフォームにより提供されるシステムリソースとセキュリティコンテナはギア(Gears)ノード(Nodes)です。

  • ギア(Gears):ギアは、1つ以上のカートリッジを実行するためのリソース制約のあるコンテナを提供します。カートリッジに対して、RAM容量や有効なディスク容量の制限があります。
  • ノード(Nodes):リソース共有を有効にするために、複数のギアを単一の物理マシンもしくは仮想マシン上で実行します。このマシンをノードと呼びます。すべてのアプリケーションが同時に有効にはならないため、一般的にギアはノード上にオーバーアロケートされます。


アプリケーション

 

  • ドメイン(Domain):ドメインはDNSに直接関係しているわけではない;代わりに、すべてのアプリケーションや定義されたユーザのために一意な名前空間を提供する。ドメイン名はアプリケーション名に追加され、最終的なアプリケーションURLを編成する。
  • アプリケーション名(Application Name):アプリケーションの名称を識別する。アプリケーションへアクセスするための最終的なURLは、https://[アプリケーション名]-[ドメイン].rhcloud.com 形式となる。
  • エイリアス(Aliases):ユーザはプラットフォームにてエイリアスを登録することでアプリケーションのDNS名を提供することができる。
  • アプリケーションの依存関係(Application Dependencies):ユーザはカートリッジを特定してアプリケーション実行要求を行う。現在2つのタイプのカートリッジがある。
  • フレームワークカートリッジ(Framework Cartridges)は、Webページを提供する機能をもつ主なカートリッジである。すべてのアプリケーションは1つのフレームワークカートリッジを保有し無くてはならない。
  • エンベデッドカートリッジ(Embedded Cartridges)は、DBやDBウェブインターフェイスのような支援カートリッジである。多くのエンベデッドカートリッジは、単一のアプリケーションとして追加可能である。
  • アプリケーションGITリポジトリ(Application GIT Repository):各アプリケーションは、1つのGITリポジトリを取得する。ユーザはリポジトリ上のコードを修正し、git pushを実行することで、コードをデプロイする。
注意:
近い将来、どちらのカートリッジを一緒にコロケートされそしてスケールされるべきかについての論述を支持して、エンベデッドvsフレームワークカートリッジは削除することになります。
アプリケーションとカートリッジ記述子についてのセクションを参照して下さい。


主なユーザとのやりとり


1. 単純なアプリケーション構築


このフローは単純なPHPアプリケーションの構築およびデプロイをおこなうケースを説明している。



2. Jenkinsを使ったアプリケーションのデプロイ


OpenShift OriginもまたすべてのアプリケーションのためにJenkinsベースのビルドワークフローを提供します。Jenkinsサーバは、ユーザギアの1つが使用する、分離したアプリケーションとして実行します。Jenkinsビルダエージェントもまた、SSH/REST APIを使ってブローカやビルドされたアプリケーションとやり取りを行う、分離したアプリケーションとして実行します。



4. ディスクリプタを使ったアプリケーションの記述


アプリケーションディスクリプタはアプリケーションビルドの宣言的手法の1つです。ディスクリプタは、name(名前)、version(バージョン)、depenmdencies(依存)などの属性を含んだYAMLファイルです。またそして、アプリケーションが要求されるアーキテクチャも含んでいます。ブローカ/コントローラはディスクリプタYAMLを使いアプリケーションの新規構築や変更を行うことができます、そしてディスクリプタ内のフィールド操作を多くのユーティリティREST APIが提供します。アプリケーションやカートリッジディスクリプタについては後続の章で詳細説明があります。





ディスクリプタからアプリケーションをビルドするために、ブローカはディスクリプタを解釈しアプリケーションのdependency(依存)をリゾルブします。それぞれのdependency(依存)はカートリッジディスクリプタに含まれているカートリッジによって満たされます。アプリケーションディスクリプタのように、カートリッジディスクリプタはコンポーネントやカートリッジに寄ってサポートされる機能を定義します。

アプリケーションやカートリッジディスクリプタを使用することで、ブローカは一緒にコンポーネントをグループ化することができ、またどのギアをインスタンス化するかなどを決めることができます。


論理ビュー



パッケージ構造


パッケージ依存関係とプラグイン選択に関する情報のために「パッケージ構造」を参照して下さい。

StickShift


StickShiftは、OpenShift OriginプラットフォームのコアAPIパートです。PaaSプラットフォームの作成やカートリッジのデプロイのために必要なすべての基本APIを提供します。3つのパートで構成しています。

  1. コントローラ(Controller)は、REST API、ビジネスロジック、PaaSプラットフォームの状態管理を含む Rails エンジン(プラグイン)である。またDNS管理、認証、データ/状態ストレージ、そしてブローカとノードの間のコミュニケーションのためのプラグインAPIの集合でもある。
  2. ノード(Node)は、ギアやアプリケーションコンポーネントのライフサイクルの管理に必要なAPIの基本的な集合を含む。
  3. 共通(Common)は、コントローラやノードコンポーネントが使用するデータ構造を含む。

Proxyポート




Proxyポートは、ロードバランシングや関連するアプリケーションギアに提供するために内部サービスを露出させることを許可する。

それぞれのギアは5つのProxyポートを割り当てることができます。これらはルータブルアドレスとして露出するので、関連するギアは分離されたノード上にあっても接続することが可能です。

Proxyポートはシステムサービスとして実行中のHAProxyにより有効化され、低水準TCP接続をproxyへ設定されます;Webロードバランシングサービスを提供するHAProxyの対置として。将来的にそれらは、アプリケーションディスクリプタによって記述されるTCP接続を提供する基礎メカニズムとなります。

Proxyポートはノード集合の外部から直接アクセスすることができません。



ギアファイルシステムレイアウト

 .                                              
 ├── git
 # ギア git リポジトリ。
 # Webフレームワークカートリッジにより初期設定される。
 │   └── [アプリケーション名].git
 |       |
 # ユーザによる変更を避けるためルートによって所有される
 # 唯一のフックディレクトリ。
 │       ├── hooks                           
 |       |   |                                  
 |       |   |                                  
 │       │   └── pre-receive
 # Post受信フックをビルドやデプロイに割り当てる
 │       └── ... その他のgitディレクトリ     
 └── [アプリケーション名]
 # Jenkinsが行うクローンやアプリケーションのビルドのための
 # CIディレクトリ
     ├── ci               
 # ノード再起動時のアプリケーションの開始・停止を行う
 # コントロールスクリプト。
     ├── kraman3a_ctl.sh
     ├── <カートリッジ名>
     │   └── <カートリッジ固有の設定> 
     ├── data                                   
     │   └── ... 短命データストレージ
     ├── run                                    
     │   └── ... 実行のためのPID ファイル
     ├── logs                                   
     │   └── ... 全カートリッジのログファイル
     ├── sessions                               
     │   └── ... アプリケーションセッション情報
     ├── tmp                                    
     │   └── ... アプリケーション一次データ
     ├── repo -> runtime/repo                   
     └── runtime                                
         └── repo
 # 自身を持たないPHPのようなカートリッジの依存管理のための
 # プラットフォームサポート
             ├── deplist.txt                       
             |                                  
             ├── ... デプロイ済みアプリケーションコード
             └── README

ディスクリプタ


アプリケーションディスクリプタ


この章では、ユーザが、依存関係定義やスケーリングアーキテクチャ、各アプリケーションへの接続を定義するために、どのようにしてアプリケーションディスクリプタを構築するかを説明します。

用語:

  • Name:アプリケーション名(必須)
  • Version:アプリケーションのバージョン(必須)
  • Requires:依存関係リスト。カートリッジ名か性能のどちらか。
  • Cartridge:性能を提供するためのコンポーネント動作のパッケージされた集合
  • Connections:各々通信する必要のある2つのコンポーネントを指定する(Eg:PHPは直接関係がないがお互い通信が必要)
  • Group Override:関連のないカートリッジを同じギア上にグループ化させるための定義に使用される。本質的にそれらは一緒にエンベデッドする。これらのコンポーネントは一緒にスケールする。
  • Gear:コンポーネントが動作可能なCPU単位、メモリ、ディスク容量

単純なディスクリプタ:

 Name: myapp
 Version: 1.0
 Requires: php-1.0, mysql, mongodb
 Connections:
   - php-1.0, mysql
   - php-1.0, mongodb
 Group override:
   - php-1.0, mysql
上記のディスクリプタは、アプリケーション名"myapp"が php-1.0、mysql、mongodbに依存している事を示しています。PHP、MySQKおよびPHP、MongoDBはお互いに通信が必要となります。MongoDBが自身のギア上で動作している間、PHPおよびMySQLは同一のギア上でエンベデッドカートリッジとして動作します。

カートリッジディスクリプタ


この章ではいかにしてパートナ/カートリッジ開発者がディスクリプタを使ってそれらのカートリッジの能力を定義するかについて説明します。システム内のそれらの視点はアプリケーション開発社と異なっており、それらはより先進的な機能を露出させます。

用語:

  • バージョン(Version)、ベンダ(Vendor)、ライセンス(License):メタ情報フィールドはシステムが直接使用しない
  • 内部要求(Requires native):内部/実行時固有 パッケージ依存関係(RPM)
  • 提供者(Providers):カートリッジに寄って提供される能力リスト
  • プロファイル(Profile):カートリッジは、同一区画のソフトウェアに異なるアーキテクチャを提供するために、プロファイル内にグループを作ることが可能である(例:MySQL はマスタ-マスタおよびマスタ-スレーブプロファイルを提供することができる)
  • パブリッシャ(Publishers):接続エンドポイントのリストはコンポーネントから情報を獲得するためにインボーク可能なものをフックする(例:mysql カートリッジは、インボーク時JDBC接続文字列を提供する、JDBCエンドポイントを提供することができる)
  • サブスクライバ(SubScribers):接続エンドポイントのリストは、コンポーネントへ情報を提供するためにインボーク可能なものをフックする(例:jbossカートリッジは、インボーク時やデータソースとして設定されたJDBC文字列で提供された時にJDBCエンドポイントをサブスクライブすることができる)
  • 接続タイプ(Connection types):パブリッシャおよびサブスクライバは、どうやってお互いリンクするかを元にした接続タイプを定義する。Cloud-SDKは、いくつかのビルトインタイプを提供する(NET:TCP、NET:UNIX、FILESYSTEMなど)
  • グループ(Groups):プロビジョニングを目的としたコンポーネントのグループ化。各グループは一意のギアタイプで提供される。グループ範囲内のすべてのコンポーネントは同一ギア集合に配置される
  • ComponentRef:どちらのコンポーネントがグループの一部であるかを定義するグループ下の1エントリ
  • 設定順序(Configure-Order):カートリッジの中やその依存関係の中のコンポーネントに対して設定順序の定義が可能である
  • 開始順序(Start-Order):カートリッジの中やその依存関係の中のコンポーネントに対して開始順序の定義が可能である

ディスクリプタの例:


 Name: mysql-server
 Version: 1.0
 Native-Requires: mysql-server
 Provides: mysql
 Profiles:
  simple:
    Components:
      master:
        Provides:
          jdbc-uri:
            Type: NET:TCP:JDBC
  master-master:
    ...

上記のディスクリプタは、カートリッジ名"mysql-server"でmysqlの能力を定義しています。mysql-server RPMのインストールや実行に依存しています。またシンプルな場合とマスタ-マスタの場合の2つのプロファイルを定義しています。シンプルプロファイルは、"NET;TCP:JDBC"タイプのパブリッシャを提供する"master"という名前の1つのコンポーネントを保持しています。

接続タイプ


それぞれの(パブリッシャとサブスクライバの)接続は1つの接続タイプを定義し無くてはなりません。このタイプは、提供・消費されるデータを示す1つの分離された文字列です。Cloud-SDKはその他新しいタイプを提供する既存タイプのサブクラスを保持しています。

  • NET:TCP - ホスト名、ポートを提供する
  • NET:UNIX - UNIXソケットへのパスを提供する
  • FILESYSTEM - ローカルシステムのリソースへのパスを提供する
  • FILESYSTEM:SHARED - クラスタファイルシステム上のリソースへのパスを提供する

コネクタ確立


コンポーネントの設定・開始・終了中、パブリッシャコネクはインボークされているものをフックして、それぞれのギア上の各コンポネント情報がサブスクライブ中のコネクタへパスされます。コンポネントのギア割り当て:あるアプリケーションがカートリッジを使用している場合、そのコンポーネントはいくつかのファクターに依存する同一もしくは異なったギアの集合へ配置されます:

  • コンポーネントが同一のカートリッジの一部であり、カートリッジディスクリプタが同一グループである要求を行う場合、コンポーネントは同一ギア上に配置される
  • NET:UNIX、FILESYSTEM、NET:TCP:INTERNALのいずれかのタイプでコンポーネント間の接続が確立される場合、コンポーネントは同一のギア集合上に配置される
  • あるグループ内のエントリが、カートリッジ/アプリケーションエィスクリプタがコロケートされる要求を行うフィールドをオーバライドする場合、コンポーネントは同一のギア集合上に配置される

アプリケーション/カートリッジディスクリプタのランタイムレゾリューション


この章ではどのようにしてCloud-SDKがアプリケーションや依存関係やギアへの割り当てを組み合わせるかを説明します。

用語(ブローカ上の実行時の状態ストレージ):実行時階層は、アプリケーションディスクリプタやカートリッジディスクリプタから情報を使用する推敲フェーズ中に構築されます。

  • コンポーネントインスタンス - コンポーネントインスタンスは、カートリッジ/アプリケーションディスクリプタ内に定義されたコンポーネントごとに生成される。コンポーネントインスタンスは、カートリッジ数、プロファイル、コンポーネント名を保持する
  • グループインスタンス - コンポーネントインスタンスと類似して、グループインスタンスは、カートリッジ/アプリケーションディスクリプタ内に定義されたコンポーネントごとに生成される。その結果として起こる、元のカートリッジやプロファイルのトラックを保持するカートリッジインスタンスやグループの一部であるギアのトラックもマタ保持する。グループ範囲内のすべてのギアは同一のコンポーネント集合を実行している
  • ギア-

用語(ノード上の実行モデル):

  • ApplicationContainer:Cloud-SDKのノードサイド上のギアをあらわす
  • UnixUser:Cloud-SDKのノードサイド上のUNIXユーザをあらわす

ディスクリプタの推敲


ディスクリプタの推敲には2つの基本ステップがあります。効果があるのであれば、これらのステップは組み合わせることもあります。

  • すべての依存関係を解決しコンポーネントインスタンスやグループインスタンスの実行時構造を構築する
  • 通信やグルーピングのオーバライドを元にしてグループを組み合わせる

2012年4月27日(金) 10:00 matwoodが更新

2013年5月17日金曜日

monacaでスマートフォンアプリ




"monaca"
というサービスを教えてもらった。

Chrome(webkitベース?)ブラウザだけあれば
簡単にスマホアプリができるとのこと。

これまでも、
できるだけ簡単に
しかもただでスマートフォンアプリを
作る方法がないか探していて
mgwt+GWTあたりを調べており


ちょっとmonacaもためしてみてやるか
的な上から目線で調べてみた。


以下のサイトを見つけ、

PhoneGap Fan: PhoneGap講座


ためしにやってみた。


このサイトは、
PCを知っている学生さんでも
簡単にできるレベルで書かれており、
30分くらいで3章のサンプルアプリまで作ることができた。

しかも、mgwtのサイトに書いた手順より手数少ないし..


アプリはネイティブではなくHTML5のアプリ。
(HTML5+CSS3+PhoneGap+jQuery)

動作速度はおそらくGWTの最適化には
ついていけないとは思うが
それでもこの簡単さ..


PhoneGapも無料、
monacaも(今のところ?)無料、
PhoneGap講座を読むのも無料..


ホント、世の中便利になったなあ..


2013年4月16日火曜日

mgwtを使った簡単なアプリをApp Engineに配置してiPhoneで見る

日本語で書かれたmgwtの使い方をGoogleって探してみたら

理想を抱いて..
http://susie-zero.blogspot.jp/search/label/MGWT

という記事を見つけただけだった。

この記事にあるサンプルを実行しようと思ったのだが
当然iPhoneで動きを見たい..

なのでApp EngineのアプリケーションID1つ使って
iPhoneのSafariで開いてみた。


用意するもの
 Java+Eclipse+Google,Safariプラグインが入ったPC
 Google App Engineの空いているアプリケーションID
 iPhone

0. mgwt-1.1.2.jarをダウンロードし適当なフォルダへ置く
1. Eclipse(+Googleプラグイン)を起動
2. 新規「Webアプリケーションプロジェクト」を作成
 プロジェクト名称、パッケージ名は適当
 Google Web ツールキットを使用、Google App エンジン使用ともにチェック
 サンプルコードを生成もチェック(面倒なのでサンプルベースで試す)
 ※ワークスペースはUTF-8にしておく
3. プロジェクト名の上で右クリック、ビルドパス>ビルドパスの構成
 ライブラリタブ
 外部Jar追加(mgwt-1.1.2.jarを追加する)
 OKボタン
4. src/~/~.gwt.xmlを編集
 コメント行の下に以下の行を挿入

<inherits name="com.googlecode.mgwt.MGWT">
<set-property name="user.agent" value="safari"></set-property> ←Safariを使う
<set-property name="mgwt.os" value="iphone"></set-property> ←iPhone風に
<set-configuration-property name="mgwt.css" value="pretty"></set-configuration-property>
←スタイル名難読化解除

※safariをgecko1_8とかにかえるとFireFoxでも開くが、
 iPhoneで開く時にエラーダイアログが出てしまう

5. war/~.htmlを開く
 
<h1> WebApplication Starter Project</h1>
 から
 </table>

 まで削除する

5. src/~.clientパッケージ以下のEntryPoint実装クラスを開く
 onModuleLoad()以外全部のフィールドとインナークラスを削除する
 onModuleLoad()内の実装をすべて削除する
 黄色いアンダーラインのついているimport文を全部削除する

6. onModuleLoad()内に以下の実装
 //ViewPointのセット、モバイルセッティング
 MGWT.applySettings(MGWTSettings.getAppSetting());

 //AnimationHelperを生成、パネルへ
 AnimationHelper animationHelper = new AnimationHelper();
 RootPanel.get().add(animationHelper);

 //mgwtレイアウトパネル
 LayoutPanel layoutPanel = new LayoutPanel();
 //mgwtボタン
 Button button = new Button("Hello mgwt");
 layoutPanel.add(button);
 
 //AnimationHelperへ
 animationHelper.goTo(layoutPanel, Animation.SLIDE);


 ※コードは上記サイトからお借りしました


※パッケージは候補2つ出てきたらmgwtの方を選択すること

7. プロジェクトを右クリック
 実行>Webアプリケーション
 開発モードタブ内のURLをコピー
 ブラウザを起動しコピーしたURLを開く
 ※iPhone風のボタンが1個(1行?)ぺたっと表示される
 コンソールタブの赤四角ボタンを押し実行終了

8. プロジェクトを右クリック
 Google>Appエンジンへデプロイ
 App Engineプロジェクト設定...
 アプリケーションIDに用意したIDをセット
 配置ボタン押下

9. iPhoneのSafariを起動
 http://~.appspot.com/ を開く
 ※iPhone風の背景とボタンが出ればOK

なんか最初に出た画面だけ右端消えていたけど、
iPhoneの上下を変えてみたら綺麗に右端が戻った。


ブラウザのバーがいやな場合は
HTML+JavaScriptで封じ込めるか。。
Safari側の動きをなんとかするJavaScript調べないと..

というより基本部品


でもこれでMacBookがない環境でも
iPhone向けアプリ開発もどきができるようになった。

これはWindows PCばかりのIT会社とかでは
けっこう大きいメリットじゃないかな


にしても使っている日本人が少ないのは悲しいけど..

Google Colab相当の環境をローカルPC上のDocker Composeで実現する

 Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた: コンテナイメージとして a...