iOSS

オープンソースをもっと身近なものに

Posted on by hagix9


OpenStackのLibertyバージョンのデモ環境(オールインワン)をワンライナーで作成します。
といっても出来上がってるVMダウンロードして起動するだけですが。。
少し前からのバージョンからだと思いますけどメモリが4Gだとやたら重いです。
サーバに余裕があるならVMのメモリを増やして起動しなおして下さい。

0.前提条件
ホストOS: Ubuntu15.10(もしかしたら他のバージョンでも動作するかもしれませんが試してません。)
環境: kvmが動く環境で自動的に作成されるvirbr0(192.168.122.0/24)を削除していないこと(再作成すれば問題ありません。)
KVMが入っていなければ sudo apt-get install kvm libvirt-bin bridge-utils virt-manager などとして入れてください。

1.インストール
以下のコマンドを一行投入するだけです

curl -L -s http://urx.nu/bg9e | bash

2. (CUI)ログインしてOpenStackを利用
・コントロールサーバにログイン

ssh stack@192.168.122.50
ユーザ名 stack パスワード stack です。

・環境変数の読み込み(adminの場合は . /home/stack/admin-openrc.sh )

sudo -i
/home/stack/generic01-openrc.sh

・プロセス起動
メモリが足りていないのかrabbitmq-serverとmemcachedがうまく起動してないので起動します。

systemctl start rabbitmq-server
systemctl start memcached

・インスタンスの起動

INT_NET_ID=`openstack network list | grep internal_network01 | awk '{ print $2 }'`
openstack server create  --flavor 1 --image ubuntu-15.10-x86_64 --security-group default --key-name mykey --nic net-id=$INT_NET_ID ubuntu01

・インスタンスへ接続

INST_IP=$(openstack server list | grep 10 | awk '{print $8}' | awk -F= '{print $2}')
ip netns exec $(ip netns | grep snat) ssh -i /home/stack/mykey ubuntu@$INST_IP

・フローティングIPを付与してインスタンスへ接続

neutron floatingip-create external_network01
DEVICE_ID=`nova list | grep ubuntu01 | awk '{ print $2 }'`
PORT_ID=`neutron port-list -- --device_id $DEVICE_ID | grep 10.10.10 | awk '{ print $2 }'`
FLOATING_ID=`neutron floatingip-list | grep 192.168.122.152 | awk '{ print $2 }'`
neutron floatingip-associate $FLOATING_ID $PORT_ID
ssh -i /home/stack/mykey ubuntu@192.168.122.152

3. (GUI)ログインしてOpenStackを利用
ブラウザで http://192.168.122.50 に接続し以下のどちらかでログイン
ユーザ名 admin パスワード secrete
ユーザ名 stack パスワード stack

3. 削除する場合

virsh destroy STACK01
virsh undefine STACK01
rm -rf /opt/virt/kvm/stack01.kvm
rm -rf /opt/virt/kvm/STACK01.img

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


評価環境を数分でとか言う記事を見たので対抗してみました。
ワンライナーと言っていいのかとりあえずコマンド一発でOpenStackのデモ環境を作成します。
あと記事とは関係無いですけどハンズオンとか構築方法とかの研修とかの仕事あれば嬉しいなとか。
他見てたら凄い値段ついてるし自分ならそんなにかからないのにとか思ったので。

0.前提条件
ホストOS: Ubuntu14.04
環境: kvmが動く環境で自動的に作成されるvirbr0(192.168.122.0/24)を削除していないこと
KVMが入っていなければ sudo apt-get install kvm libvirt-bin bridge-utils virt-manager などとして入れてください。

1.インストール
以下のコマンドを一行投入するだけです
curl -L -s http://urx.nu/bg9e | bash

2. (CUI)ログインしてOpenStackを利用
・コントロールサーバにログイン
ssh stack@192.168.122.50
ユーザ名 stack パスワード stack です。
・環境変数の読み込み(adminの場合は. /home/stack/admin-openrc.sh)
sudo -i
. /home/stack/generic01-openrc.sh
・プロセスの確認
neutron agent-list
しばらく時間がかかる可能性がありますが全部aliveが:-)になってからでないとNeutronがちゃんと動作しません。
・疎通確認
ping 192.168.122.151
などとして疎通出来ればOKです。
どうしても起動しない場合はNeutronのプロセスを再起動します。
cd /etc/init/; for i in $(ls -1 neutron-* | cut -d \. -f 1); do sudo service $i restart; done
・インスタンスの起動
INT_NET_ID=`neutron net-list | grep internal_network01 | awk '{ print $2 }'`
nova boot --flavor 1 --image ubuntu-14.04-x86_64 --security_group default --nic net-id=$INT_NET_ID --key-name mykey ubuntu01
・インスタンスへ接続
INST_IP=$(nova list | grep 10 | awk '{print $12}' | awk -F= '{print $2}')
ip netns exec $(ip netns | grep dhcp) ssh -i /home/stack/mykey ubuntu@$INST_IP
・フローティングIPを付与してインスタンスへ接続
neutron floatingip-create external_network01
DEVICE_ID=`nova list | grep ubuntu01 | awk '{ print $2 }'`
PORT_ID=`neutron port-list -- --device_id $DEVICE_ID | grep 10.10.10 | awk '{ print $2 }'`
FLOATING_ID=`neutron floatingip-list | grep 192.168.122.152 | awk '{ print $2 }'`
neutron floatingip-associate $FLOATING_ID $PORT_ID
ssh -i /home/stack/mykey ubuntu@192.168.122.152

3. (GUI)ログインしてOpenStackを利用
ブラウザで http://192.168.122.50 に接続し以下のどちらかでログイン
ユーザ名 admin パスワード secrete
ユーザ名 stack パスワード stack

3. 削除する場合
virsh destroy STACK01
virsh undefine STACK01
rm -rf /opt/virt/kvm/stack01.kvm
rm -rf /opt/virt/kvm/STACK01.img

Posted on by hagix9 | Posted in OpenStack


Leave a comment

Posted on by hagix9


CentOS6.5でなくても6系でなら問題なく動くようになったみたいです。

①Dockerのインストール

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install docker-io -y

②Dockerを利用する

docker run -i -t -d -p 2222:22 -name ubuntu1310 hagix9/ubuntu1310 /sbin/init
ssh ubuntu@localhost -p 2222

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


CentOS6.5でカーネルを特に変更することなくDockerを利用出来るようになってました。
サポートうんぬんは別としてCentOSでDockerを試すだけなら簡単になりました。
CentOS6.4でも Error: create: Abort due to constraint violation: constraint failed とか最初に出力されたのですが利用出来ました。

①Dockerのインストール

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i.bak 's/enabled=0/enabled=1/' /etc/yum.repos.d/epel-testing.repo
yum install docker-io -y
chkconfig iptables on
reboot

②Dockerを利用する

docker run -i -t -d -p 2222:22 -name ubuntu1310 hagix9/ubuntu1310 /sbin/init
ssh ubuntu[localhost -p 2222

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


Dockerの最新バージョンが0.7になりましたのでCentOSで使ってたものもバージョンアップしてみました。
リリース早すぎです。
fedora-packagerをインストールする必要があるみたいです。
カーネルはノーマルカーネルで動くみたいなのですが何が悪いのか分かりませんが動かないです。

https://github.com/sciurus/docker-rhel-rpm

のものを利用してますがそのままの手順だと無理ですので若干変更しています。
Githubにバイナリを上げてるのでダウンロードしてインストールすればすぐにDocker0.7.0が利用できます。

①SELinuxの無効化

sed -i.bak "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config

②IPforwardの設定

sed -i.bak "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf

③-1(ダウンロード版)Docker,LXC,AUFS対応カーネル及び依存パッケージのインストール
RPMをチェックアウトしてインストールします。

yum install wget unzip -y
wget https://github.com/hagix9/docker-centos-rpm/archive/master.zip
unzip master
cd master
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.7.0-1.el6.x86_64.rpm -y
yum localinstall https://dl.fedoraproject.org/pub/epel/6/x86_64/fedora-packager-0.5.10.1-1.el6.noarch.rpm -y

③-2(コンパイル版)Docker,LXC,AUFS対応カーネルのインストール
ダウンロードしてインストールするだけの場合はこの手順は必要ありません。

③-2-1リポジトリの追加

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 

③-2-2 ビルドツールのインストール

yum install spectool git mock -y

③-2-3 ビルド用ユーザの追加

adduser -m -G mock build

③-2-4 ビルド用ユーザにスイッチ

su - build

③-2-5 コンパイル用ツールをチェックアウト

git clone https://github.com/sciurus/docker-rhel-rpm.git

③-2-6 Docker0.6.7のコンパイル及びRPMの作成

cd docker-rhel-rpm
cp -a lxc-docker/lxc-docker.spec lxc-docker/lxc-docker.spec_bak
sed -i 's/0.6.7/0.7.0/' lxc-docker/lxc-docker.spec
spectool -g -C lxc-docker lxc-docker/lxc-docker.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc-docker/lxc-docker.spec --sources lxc-docker --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-docker-0.7.0-1.el6.src.rpm

③-2-7 LXC-0.8.0-3のコンパイル及びRPMの作成

spectool -g -C lxc lxc/lxc.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc/lxc.spec --sources lxc --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-0.8.0-3.el6.src.rpm

③-2-7 AUFS対応カーネルのコンパイル及びRPMの作成

###ワークアラウンド###
そのままだとスペックファイルに問題がありますので修正します。
ただツールの問題ではないみたいなのでそのうち直ったら必要なくなるはずです。

cp -a kernel-ml-aufs/kernel-ml-aufs-3.10.spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec_bak
sed -i '/include\/linux\/aufs_type.h/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '/aufs3-proc_map.patch/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '319a patch -p 1 < ../%{AUFSver}/aufs3-mmap.patch' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
[/bash]
###

AUFS対応カーネルパッチのダウンロード
[bash]
spectool -g -C kernel-ml-aufs kernel-ml-aufs/kernel-ml-aufs-3.10.spec
git clone git://git.code.sf.net/p/aufs/aufs3-standalone -b aufs3.10
[/bash]

###ワークアラウンド
ソースコードが最近マージされて修正が必要みたいなので修正しておきます。
これももしかしたらそのうち修正されるのかもしれません。
[bash]
cp -a aufs3-standalone aufs3-standalone_5f8ee4
cd aufs3-standalone_5f8ee4
git checkout 5f8ee4
cp -a Documentation ../aufs3-standalone
cp -a fs/aufs/* ../aufs3-standalone/fs/aufs/
cp -a include/linux/ ../aufs3-standalone/include/
cd ..
################

コンパイルしてAUFS対応カーネルRPMの作成
[bash]
pushd aufs3-standalone
git archive aufs3.10 > ../kernel-ml-aufs/aufs3-standalone.tar
popd
mock -r epel-6-x86_64 --buildsrpm --spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec --sources kernel-ml-aufs --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/kernel-ml-aufs-3.10.11-1.el6.src.rpm
exit

③-2-9(コンパイル版)Docker,LXC,AUFS対応カーネル及び依存パッケージのインストール

cd /home/build/docker-rhel-rpm/output
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.7.0-1.el6.x86_64.rpm -y
yum localinstall https://dl.fedoraproject.org/pub/epel/6/x86_64/fedora-packager-0.5.10.1-1.el6.noarch.rpm -y

④Cgroupの設定
cgconfigが動作しているのであれば停止します。

chkconfig cgconfig off

cgroupのマウント設定を行います。

cp -a /etc/fstab /etc/fstab_bak
echo "none                    /sys/fs/cgroup          cgroup  defaults        0 0" >> /etc/fstab

⑤GRUBの設定
AUFS対応カーネルで起動するよう変更します。

sed -i 's/default=1/default=0/' /boot/grub/grub.conf

⑦iptablesの設定
これは人によって違うためそれぞれ設定してください。
CentOSなどのインストール時に何も変更していないのであればそのままで問題ないかもしれません。

cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables_bak
cat << 'EOF' > /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [3:156]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
[0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE
COMMIT
#*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i docker0 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i docker0 -j ACCEPT
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF

OS起動時にiptablesが起動するようにしておきます。
NATは必要ですので起動しておく必要があります。

chkconfig iptables on

0.6.7から起動スクリプトが若干変わったのですが反映されていないみたいなの反映させます。

cat << 'EOF' > /etc/init/docker.conf
description "Docker daemon"

#start on filesystem and started lxc-net
start on filesystem or runlevel [2345]
stop on runlevel [!2345]

respawn

script
        DOCKER=/usr/bin/$UPSTART_JOB
        DOCKER_OPTS=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi
        "$DOCKER" -d $DOCKER_OPTS
end script
EOF

cat << 'EOF' > /etc/default/docker
DOCKER_OPTS="-r=true -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -api-enable-cors"
EOF

AUFS対応カーネルで起動します。

reboot

インストールは終わりですのであとはDockerを利用してみましょう。
デフォルトパスワードはubuntuです。

docker run -i -t -d -p 11111:22 --name ubuntu01 hagix9/ubuntu1310 /sbin/init
ssh ubuntu@localhost -p 11111

一般ユーザでDockerを利用する場合はDockerグループにユーザを追加しておきましょう。

usermod -G docker user

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


Dockerの最新バージョンが0.6.7になりましたのでCentOSで使ってたものもバージョンアップしてみました。
すぐに0.7が出そうなきもしますけど。

https://github.com/sciurus/docker-rhel-rpm

のものを利用してますがそのままの手順だと無理ですので若干変更しています。
Githubにバイナリを上げてるのでダウンロードしてインストールすればすぐにDocker0.6.7が利用できます。

①SELinuxの無効化

sed -i.bak "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config

②IPforwardの設定

sed -i.bak "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf

③-1(ダウンロード版)Docker,LXC,AUFS対応カーネルのインストール
RPMをチェックアウトしてインストールします。

yum install git -y
git clone git@github.com:hagix9/docker-centos-rpm.git
cd docker-centos-rpm
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.6.7-1.el6.x86_64.rpm -y

③-2(コンパイル版)Docker,LXC,AUFS対応カーネルのインストール
ダウンロードしてインストールするだけの場合はこの手順は必要ありません。

③-2-1リポジトリの追加

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 

③-2-2 ビルドツールのインストール

yum install spectool git mock -y

③-2-3 ビルド用ユーザの追加

adduser -m -G mock build

③-2-4 ビルド用ユーザにスイッチ

su - build

③-2-5 コンパイル用ツールをチェックアウト

git clone https://github.com/sciurus/docker-rhel-rpm.git

③-2-6 Docker0.6.7のコンパイル及びRPMの作成

cd docker-rhel-rpm
cp -a lxc-docker/lxc-docker.spec lxc-docker/lxc-docker.spec_bak
spectool -g -C lxc-docker lxc-docker/lxc-docker.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc-docker/lxc-docker.spec --sources lxc-docker --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-docker-0.6.7-1.el6.src.rpm

③-2-7 LXC-0.8.0-3のコンパイル及びRPMの作成

spectool -g -C lxc lxc/lxc.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc/lxc.spec --sources lxc --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-0.8.0-3.el6.src.rpm

③-2-7 AUFS対応カーネルのコンパイル及びRPMの作成

###ワークアラウンド###
そのままだとスペックファイルに問題がありますので修正します。
ただツールの問題ではないみたいなのでそのうち直ったら必要なくなるはずです。

cp -a kernel-ml-aufs/kernel-ml-aufs-3.10.spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec_bak
sed -i '/include\/linux\/aufs_type.h/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '/aufs3-proc_map.patch/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '319a patch -p 1 < ../%{AUFSver}/aufs3-mmap.patch' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
[/bash]
###

AUFS対応カーネルパッチのダウンロード
[bash]
spectool -g -C kernel-ml-aufs kernel-ml-aufs/kernel-ml-aufs-3.10.spec
git clone git://git.code.sf.net/p/aufs/aufs3-standalone -b aufs3.10
[/bash]

###ワークアラウンド
ソースコードが最近マージされて修正が必要みたいなので修正しておきます。
これももしかしたらそのうち修正されるのかもしれません。
[bash]
cp -a aufs3-standalone aufs3-standalone_5f8ee4
cd aufs3-standalone_5f8ee4
git checkout 5f8ee4
cp -a Documentation ../aufs3-standalone
cp -a fs/aufs/* ../aufs3-standalone/fs/aufs/
cp -a include/linux/ ../aufs3-standalone/include/
cd ..
################

コンパイルしてAUFS対応カーネルRPMの作成
[bash]
pushd aufs3-standalone
git archive aufs3.10 > ../kernel-ml-aufs/aufs3-standalone.tar
popd
mock -r epel-6-x86_64 --buildsrpm --spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec --sources kernel-ml-aufs --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/kernel-ml-aufs-3.10.11-1.el6.src.rpm
exit

③-2-9(コンパイル版)Docker,LXC,AUFS対応カーネルのインストール

cd /home/build/docker-rhel-rpm/output
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.6.7-1.el6.x86_64.rpm -y

④Cgroupの設定
cgconfigが動作しているのであれば停止します。

chkconfig cgconfig off

cgroupのマウント設定を行います。

cp -a /etc/fstab /etc/fstab_bak
echo "none                    /sys/fs/cgroup          cgroup  defaults        0 0" >> /etc/fstab

⑤GRUBの設定
AUFS対応カーネルで起動するよう変更します。

sed -i 's/default=1/default=0/' /boot/grub/grub.conf

⑦iptablesの設定
これは人によって違うためそれぞれ設定してください。
CentOSなどのインストール時に何も変更していないのであればそのままで問題ないかもしれません。

cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables_bak
cat << 'EOF' > /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [3:156]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
[0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE
COMMIT
#*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i docker0 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i docker0 -j ACCEPT
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF

OS起動時にiptablesが起動するようにしておきます。
NATは必要ですので起動しておく必要があります。

chkconfig iptables on

0.6.7から起動スクリプトが若干変わったのですが反映されていないみたいなの反映させます。

cat << 'EOF' > /etc/init/docker.conf
description "Docker daemon"

#start on filesystem and started lxc-net
start on filesystem or runlevel [2345]
stop on runlevel [!2345]

respawn

script
        DOCKER=/usr/bin/$UPSTART_JOB
        DOCKER_OPTS=
        if [ -f /etc/default/$UPSTART_JOB ]; then
                . /etc/default/$UPSTART_JOB
        fi
        "$DOCKER" -d $DOCKER_OPTS
end script
EOF

cat << 'EOF' > /etc/default/docker
DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
EOF

AUFS対応カーネルで起動します。

reboot

インストールは終わりですのであとはDockerを利用してみましょう。
デフォルトパスワードはubuntuです。

docker run -i -t -d -p 11111:22 --name ubuntu01 hagix9/ubuntu1310 /sbin/init
ssh ubuntu@localhost -p 11111

一般ユーザでDockerを利用する場合はDockerグループにユーザを追加しておきましょう。

usermod -G docker user

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


KVMのデフォルトネットワークを利用しているのでvirbr0をデフォルトで利用していればネットワーク依存しません。
Ubuntu13.10で動かしてますが12.04以降であれば大丈夫かと
RHEL系でもKVMのネストが出来るのであれば動くと思います。
イメージを登録して起動すればOpenStack HavanaのNeutron環境を利用できます。
KVMのネストなので本番運用などは到底無理ですが雰囲気は味わえるはずです。
インスタンスはCoreOSのイメージを登録しているのですぐに起動できます。
たまにインスタンス起動途中で詰まってるときがありますのでその場合は削除してもう一度作って下さい。
ルートもインスタンスの途中で止まるのもネストKVMじゃなければ多分発生しないと思います。

①ダウンロードして解凍

wget  https://dl.dropboxusercontent.com/u/3185206/openstack_nest/openstack_kvm.tar.xz
tar Jxvf openstack_kvm.tar.xz

②仮想マシンをKVMに登録してバックアップ
※おかしくなればバックアップをコピーすれば元通り

mkdir -p /opt/virt/kvm
mv openstack* ubuntu1310_1* /opt/virt/kvm
virsh define ubuntu1310_1.xml
cp -a ubuntu1310_1.diff ubuntu1310_1.diff_bak

③仮想マシンを起動

virsh start ubuntu1310_1

④ログイン

ssh stack@192.168.122.50

パスワード stack を入力してログイン

⑤環境変数の読み込み

. /home/stack/keystonerc01

⑥各種情報を確認してインスタンスの起動
※ネットワークはprivate01のIDを利用

nova flavor-list
nova keypair-list
nova secgroup-list
nova net-list
nova image-list
nova boot                    \
   --flavor 1                \
   --key_name mykey          \
   --security-groups default \
   --image 46dbef44-3e12-40e2-9922-000f19795723 \
   --nic net-id=d7381aa0-4f33-459c-ba93-b641139321bd core01

⑦内部NWへのルートを追加
※本来はコントローラノードで直接ルートを追加すればいいのですが
※なぜかネストだとKVMの環境によってはホスト側でルーティングを追加しないとうまくいかない場合がありますのでその場合はKVMのホスト側にルートを追加してください

sudo route add -net 10.10.10.0/24 gw 192.168.122.200

⑧インスタンスへログイン

ssh -i /home/stack/mykey core@10.10.10.2

※ネームスペースのままログインする場合は(パスワードを聞かれたら仮想ホストのパスワードを入力)

sudo ip netns exec qdhcp-d7381aa0-4f33-459c-ba93-b641139321bd ssh -i /home/stack/mykey core@10.10.10.2

■Horizonを利用する場合は、ブラウザで192.168.122.50へ接続して下さい。
ユーザ名、admin01 パスワードadmin01で利用できます

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


以前の記事だと最新版のDockerは利用できません。
また、現時点の最新版は0.6.6ですがまたすぐ新しくなるかもしれませんけど。
名前付きのコンテナやDockerファイルで指定したポートをdocker runの時に上書きできたりするので最新版を利用したい場合はこちらの手順でDockerの最新版を使いましょう。
起動スクリプトがupstart対応だったのでinit.dに作成する起動スクリプトの箇所を削除しました。

https://github.com/sciurus/docker-rhel-rpm

のものを利用してますがそのままの手順だと無理ですので若干変更しています。
時間かかるのとコンパイルが面倒であればダウンロードしてインストールすればすぐにDocker0.6.6が利用できるでしょう。

①SELinuxの無効化

sed -i.bak "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config

②IPforwardの設定

sed -i.bak "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/" /etc/sysctl.conf

③-1(ダウンロード版)Docker,LXC,AUFS対応カーネルのインストール
RPMをチェックアウトしてインストールします。

git clone git@github.com:hagix9/docker-centos-rpm.git
cd docker-centos-rpm
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.6.6-1.el6.x86_64.rpm -y

③-2(コンパイル版)Docker,LXC,AUFS対応カーネルのインストール
ダウンロードしてインストールするだけの場合はこの手順は必要ありません。

③-2-1リポジトリの追加

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 

③-2-2 ビルドツールのインストール

yum install spectool git mock -y

③-2-3 ビルド用ユーザの追加

adduser -m -G mock build

③-2-4 ビルド用ユーザにスイッチ

su - build

③-2-5 コンパイル用ツールをチェックアウト

git clone https://github.com/sciurus/docker-rhel-rpm.git

③-2-6 Docker0.6.6のコンパイル及びRPMの作成

cd docker-rhel-rpm
cp -a lxc-docker/lxc-docker.spec lxc-docker/lxc-docker.spec_bak
sed -i 's/0.6.5/0.6.6/' lxc-docker/lxc-docker.spec
spectool -g -C lxc-docker lxc-docker/lxc-docker.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc-docker/lxc-docker.spec --sources lxc-docker --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-docker-0.6.6-1.el6.src.rpm

③-2-7 LXC-0.8.0-3のコンパイル及びRPMの作成

spectool -g -C lxc lxc/lxc.spec
mock -r epel-6-x86_64 --buildsrpm --spec lxc/lxc.spec --sources lxc --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/lxc-0.8.0-3.el6.src.rpm

③-2-7 AUFS対応カーネルのコンパイル及びRPMの作成

###ワークアラウンド###
そのままだとスペックファイルに問題がありますので修正します。
ただツールの問題ではないみたいなのでそのうち直ったら必要なくなるはずです。

cp -a kernel-ml-aufs/kernel-ml-aufs-3.10.spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec_bak
sed -i '/include\/linux\/aufs_type.h/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '/aufs3-proc_map.patch/d' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
sed -i '319a patch -p 1 < ../%{AUFSver}/aufs3-mmap.patch' kernel-ml-aufs/kernel-ml-aufs-3.10.spec
[/bash]
###

AUFS対応カーネルパッチのダウンロード
[bash]
spectool -g -C kernel-ml-aufs kernel-ml-aufs/kernel-ml-aufs-3.10.spec
git clone git://git.code.sf.net/p/aufs/aufs3-standalone -b aufs3.10
[/bash]

###ワークアラウンド
ソースコードが最近マージされて修正が必要みたいなので修正しておきます。
これももしかしたらそのうち修正されるのかもしれません。
[bash]
cp -a aufs3-standalone aufs3-standalone_5f8ee4
cd aufs3-standalone_5f8ee4
git checkout 5f8ee4
cp -a Documentation ../aufs3-standalone
cp -a fs/aufs/* ../aufs3-standalone/fs/aufs/
cp -a include/linux/ ../aufs3-standalone/include/
cd ..
################

コンパイルしてAUFS対応カーネルRPMの作成
[bash]
pushd aufs3-standalone
git archive aufs3.10 > ../kernel-ml-aufs/aufs3-standalone.tar
popd
mock -r epel-6-x86_64 --buildsrpm --spec kernel-ml-aufs/kernel-ml-aufs-3.10.spec --sources kernel-ml-aufs --resultdir output
mock -r epel-6-x86_64 --rebuild --resultdir output output/kernel-ml-aufs-3.10.11-1.el6.src.rpm
exit

③-2-9(コンパイル版)Docker,LXC,AUFS対応カーネルのインストール

cd /home/build/docker-rhel-rpm/output
yum localinstall --nogpgcheck kernel-ml-aufs-3.10.11-1.el6.x86_64.rpm lxc-0.8.0-3.el6.x86_64.rpm lxc-libs-0.8.0-3.el6.x86_64.rpm lxc-docker-0.6.5-1.el6.x86_64.rpm -y

④Cgroupの設定
cgconfigが動作しているのであれば停止します。

chkconfig cgconfig off

cgroupのマウント設定を行います。

cp -a /etc/fstab /etc/fstab_bak
echo "none                    /sys/fs/cgroup          cgroup  defaults        0 0" >> /etc/fstab

⑤GRUBの設定
AUFS対応カーネルで起動するよう変更します。

sed -i 's/default=1/default=0/' /boot/grub/grub.conf

⑦iptablesの設定
これは人によって違うためそれぞれ設定してください。
CentOSなどのインストール時に何も変更していないのであればそのままで問題ないかもしれません。

cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables_bak
cat << 'EOF' > /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [3:156]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
[0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE
COMMIT
#*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i docker0 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i docker0 -j ACCEPT
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF

OS起動時にiptablesが起動するようにしておきます。
NATは必要ですので起動しておく必要があります。

chkconfig iptables on

AUFS対応カーネルで起動します。

reboot

インストールは終わりですのであとはDockerを利用してみましょう。

docker pull centos
docker run -i -t centos /bin/bash

一般ユーザでDockerを利用する場合はDockerグループにユーザを追加しておきましょう。

usermod -G docker user

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


OSインストール時にcinder-volumesの名前でLVMを作成しておいてください。
NIC一枚の場合はsedでovsのコマンド時に利用されているEXT_NICの変数は使われてい
そのためeth1の行が残っていますがNIC1枚でeth1を利用している場合、もしくは気持ち悪いのであればそれもスクリプトから削除してください。

①OpenVswithのインストール

$ sudo apt-get install openvswitch-switch -y

②NICの設定を変更
元々eth0の設定だったものをbr-exに変更するようにします。

$ sudo vi /etc/network/interfaces
auto br-ex
iface br-ex inet static
       address 192.168.10.50
       netmask 255.255.255.0
       network 192.168.10.0
       broadcast 192.168.10.255
       gateway 192.168.10.1
       dns-nameservers 192.168.10.1

auto  eth0
iface eth0 inet manual
        up   ifconfig $IFACE 0.0.0.0 up
        up   ip link set $IFACE promisc on
        down ip link set $IFACE promisc off
        down ifconfig $IFACE down

$ sudo service networking restart

③eth0をブリッジに設定

$ sudo ovs-vsctl --no-wait -- --may-exist add-br br-ex
$ sudo ovs-vsctl add-port br-ex eth0

④スクリプトをダウンロード

$ wget https://raw.github.com/hagix9/hagistack/master/ubuntu13.10/hagistack_controller_neutron.sh

⑤br-exに関してのovs-vsctlの設定をしない設定にする

$ sed -i.bak '/br-ex/d' hagistack_controller_neutron.sh

⑦スクリプトのIPとかを設定してからOpenStack Havanaをインストール
EXT_NETWORKは外部ネットワークと同じセグメントを指定してください
あと、/etc/hostsはインストールしたままでなく
#127.0.1.1 stack01
192.168.10.50 stack01
などとしておいてください

$ cat << EOF > stack.env
NOVA_CONTROLLER_IP=192.168.10.50
NOVA_COMPUTE_IP=192.168.10.50
GATEWAY=192.168.10.1
EXT_NETWORK=192.168.10.0/24
IP_POOL_START=192.168.10.200
IP_POOL_END=192.168.10.250 
EOF
$ time bash –x hagistack_controller_neutron.sh

コンピュートノードを追加したい場合はcomputeのシェルを利用してください。
コントローラーノードのIP、ホスト名、コンピュートノードのIPをスクリプト内で設定してから実行してください。

Posted on by hagix9 | Posted in 未分類


Leave a comment

Posted on by hagix9


Ubuntu12.04でもUbuntu13.10でも使うスクリプト以外は同じです。
OSインストール時にcinder-volumesの名前でLVMを作成しておいてください。
NIC一枚の場合はsedでovsのコマンド時に利用されているEXT_NICの変数は使われてい
そのためeth1の行が残っていますがNIC1枚でeth1を利用している場合、もしくは気持ち悪いのであればそれもスクリプトから削除してください。

①OpenVswithのインストール

$ sudo apt-get install openvswitch-switch -y

②NICの設定を変更
元々eth0の設定だったものをbr-exに変更するようにします。

$ sudo vi /etc/network/interfaces
auto br-ex
iface br-ex inet static
       address 192.168.10.50
       netmask 255.255.255.0
       network 192.168.10.0
       broadcast 192.168.10.255
       gateway 192.168.10.1
       dns-nameservers 192.168.10.1

auto  eth0
iface eth0 inet manual
        up   ifconfig $IFACE 0.0.0.0 up
        up   ip link set $IFACE promisc on
        down ip link set $IFACE promisc off
        down ifconfig $IFACE down

$ sudo service networking restart

③eth0をブリッジに設定

$ sudo ovs-vsctl --no-wait -- --may-exist add-br br-ex
$ sudo ovs-vsctl add-port br-ex eth0

④スクリプトをダウンロード

$ wget https://raw.github.com/hagix9/hagistack/master/ubuntu12.04/hagistack_controller_havana_neutron.sh

⑤br-exに関してのovs-vsctlの設定をしない設定にする

$ sed -i.bak '/br-ex/d' hagistack_controller_havana_neutron.sh

⑦スクリプトのIPとかを設定してからOpenStack Havanaをインストール
EXT_NETWORKは外部ネットワークと同じセグメントを指定してください
あと、/etc/hostsはインストールしたままでなく
#127.0.1.1 stack01
192.168.10.50 stack01
などとしておいてください

$ cat << EOF > stack.env
NOVA_CONTROLLER_IP=192.168.10.50
NOVA_COMPUTE_IP=192.168.10.50
GATEWAY=192.168.10.1
EXT_NETWORK=192.168.10.0/24
IP_POOL_START=192.168.10.200
IP_POOL_END=192.168.10.250 
EOF
$ time bash –x hagistack_controller_havana_neutron.sh

コンピュートノードを追加したい場合はcomputeのシェルを利用してください。
コントローラーノードのIP、ホスト名、コンピュートノードのIPをスクリプト内で設定してから実行してください。

Posted on by hagix9 | Posted in 未分類


Leave a comment