Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

OpenStack RDO Icehouse を CentOS 6.5 にインストール

More than 5 years have passed since last update.

参考

RDO
RDO:Neutron with existing external network
OPENSTACK MANUALS:Configure network node
OPENSTACK MANUALS:Configure compute node
Red Hat Enterprise Linux OpenStack Platform : Editing a PackStack Answer File

構築環境

インストールするサーバー

OS IPアドレス メモリ CPU NIC
CentOS6.5 192.168.1.41 2GB 2 1

public空間(物理環境)

名前 ネットワーク ゲートウェイ フローティングIP(非DHCP空間)
public 192.168.1.0/24 192.168.1.1 192.168.1.42~49

プライベート空間(仮想環境)

名前 ネットワーク ゲートウェイ フローティングIP(非DHCP空間)
private 192.168.111.0/24 192.168.111.1 192.168.111.2~254

必要パッケージのインストール

・時刻を合わせる
・アップデート
・RDOのリポジトリ追加
・openstack-packstackのインストール

shell
yum install -y ntpdate && ntpdate ntp.nict.jp

yum update  -y

yum install -y http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm

yum install -y openstack-packstack

カーネルパラメーター修正

shell
sed -i.org \
    -e "s/^net.ipv4.ip_forward.*=.*0/net.ipv4.ip_forward = 1/" \
    -e "s/^net.ipv4.conf.all.rp_filter.*=.*1/net.ipv4.conf.all.rp_filter = 0/" \
    -e "s/^net.ipv4.conf.default.rp_filter.*=.*1/net.ipv4.conf.default.rp_filter = 0/" \
    /etc/sysctl.conf

sysctl -p

アンサーファイル生成と編集

・アンサーファイル生成

shell
packstack --gen-answer-file answer.txt

・パスワード変更

shell
KEYSTONE_PASSWORD=password

sed -i.org \
    -e "s/^CONFIG_KEYSTONE_ADMIN_PW=.*/CONFIG_KEYSTONE_ADMIN_PW=${KEYSTONE_PASSWORD}/" \
    -e "s/^CONFIG_KEYSTONE_DEMO_PW=.*/CONFIG_KEYSTONE_DEMO_PW=${KEYSTONE_PASSWORD}/" \
    answer.txt

・プライベートインターフェースをloにする

shell
sed -i \
    -e "s/^CONFIG_NOVA_NETWORK_PRIVIF=eth1/CONFIG_NOVA_NETWORK_PRIVIF=lo/" \
    -e "s/^CONFIG_NOVA_COMPUTE_PRIVIF=eth1/CONFIG_NOVA_COMPUTE_PRIVIF=lo/" \
    answer.txt

・Cinderに割り当てられるディスクサイズの変更(任意)

shell
VOLUMES_SIZE=50G

sed -i \
    -e "s/^CONFIG_CINDER_VOLUMES_SIZE=20G/CONFIG_CINDER_VOLUMES_SIZE=$VOLUMES_SIZE/" \
    answer.txt

・KeystoneのトークンフォーマットUUIDに変更(任意)

shell
sed -i \
    -e "s/^CONFIG_KEYSTONE_TOKEN_FORMAT=PKI/CONFIG_KEYSTONE_TOKEN_FORMAT=UUID/" \
    answer.txt

・Heatをインストール(任意)

shell
sed -i \
    -e "s/^CONFIG_HEAT_INSTALL=n/CONFIG_HEAT_INSTALL=y/" \
    -e "s/^CONFIG_HEAT_CLOUDWATCH_INSTALL=n/CONFIG_HEAT_CLOUDWATCH_INSTALL=y/" \
    -e "s/^CONFIG_HEAT_CFN_INSTALL=n/CONFIG_HEAT_CFN_INSTALL=y/" \
    answer.txt

・デモはいらない(任意)

shell
sed -i \
    -e "s/^CONFIG_PROVISION_DEMO=y/CONFIG_PROVISION_DEMO=n/" \
    answer.txt

・Nagiosはいらない(任意)

shell
sed -i \
    -e "s/^CONFIG_NAGIOS_INSTALL=y/CONFIG_NAGIOS_INSTALL=n/" \
    answer.txt

インストール開始

shell
packstack --answer-file answer.txt

Neutron設定追加

shell
vi /etc/neutron/plugin.ini

・/etc/neutron/plugin.ini 最終行に追記

/etc/neutron/plugin.ini
[ovs]
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-ex

libvirt_type設定

shell
vi /etc/nova/nova.conf

・libvirt_type に kvmもしくはqemu を指定

/etc/nova/nova.conf
[libvirt]
virt_type=qemu

NICの設定変更

・eth0 編集

shell
vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes

・br-ex 編集

shell
vi /etc/sysconfig/network-scripts/ifcfg-br-ex
/etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.41
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
ONBOOT=yes

再起動

shell
reboot

仮想ネットワーク構築

shell
source /root/keystonerc_admin

・publicネットワーク作成

shell
neutron net-create public \
    --router:external true

neutron subnet-create \
    --name public_subnet \
    --enable_dhcp=False \
    --allocation-pool=start=192.168.1.42,end=192.168.1.49 \
    --gateway=192.168.1.1 \
    public \
    192.168.1.0/24

・pvivateネットワーク作成

shell
neutron net-create private \
    --shared

neutron subnet-create \
    --name private_subnet \
    --enable_dhcp=True \
    --allocation-pool=start=192.168.111.2,end=192.168.111.254 \
    --gateway=192.168.111.1 \
    private \
    192.168.111.0/24

・仮想ルーター作成

shell
neutron router-create router1

neutron router-gateway-set router1 public

neutron router-interface-add router1 private_subnet

デフォルト フレーバーの修正

・現在のフレーバー確認
・1番目のフレーバーを削除
・1番目に新しいフレーバーを作成
・フレーバー確認

shell
nova flavor-list

nova flavor-delete 1

nova flavor-create m1.tiny 1 512 10 1

nova flavor-list
flavor-createの各値について
# nova flavor-create \
       FLAVOR_NAME \
       FLAVOR_ID \
       RAM_IN_MB \
       ROOT_DISK_IN_GB \
       NUMBER_OF_VCPUS

デフォルト セキュリティグループの修正

・PING許可

shell
neutron security-group-rule-create \
    --protocol icmp \
    --direction ingress default

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

・SSH許可

shell
neutron security-group-rule-create \
    --protocol tcp --port-range-min 22 \
    --port-range-max 22 \
    --direction ingress default

nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

インスタンス イメージ作成

・インスタンス イメージ作成に必要なパッケージをインストール

shell
yum install -y qemu-img virt-install

・qcow2形式のイメージディスク作成

shell
IMAGE_NAME=CentOS6.5

qemu-img create -f qcow2 /var/lib/libvirt/images/$IMAGE_NAME.qcow2 10G

・CentOSイメージ作成

・ネットワークインストールするリポジトリURL指定
・KVM上での名前を指定
・virt-installでインストールする

shell
REPOS=http://ftp.riken.jp/Linux/centos/6/os/x86_64/

IMAGE_NAME=CentOS6.5

virt-install \
    --name $IMAGE_NAME \
    --ram 512 \
    --disk path=/var/lib/libvirt/images/$IMAGE_NAME.qcow2,format=qcow2 \
    --vcpus=1 \
    --os-type linux \
    --os-variant=rhel6 \
    --nographics \
    --location="$REPOS" \
    --extra-args='console=tty0 console=ttyS0,115200n8 serial'

・CentOSイメージ内で

shell
rm /etc/udev/rules.d/70-persistent-net.rules

ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules

vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=dhcp

・イメージファイルの圧縮

shell
IMAGE_NAME=CentOS6.5

qemu-img convert -c -O qcow2 \
    /var/lib/libvirt/images/$IMAGE_NAME.qcow2 \
    /var/lib/libvirt/images/$IMAGE_NAME.new.qcow2

rm /var/lib/libvirt/images/$IMAGE_NAME.qcow2

mv /var/lib/libvirt/images/$IMAGE_NAME.new.qcow2 \
   /var/lib/libvirt/images/$IMAGE_NAME.qcow2

インスタンス イメージ登録

shell
IMAGE_NAME=CentOS6.5

glance image-create \
    --name=$IMAGE_NAME \
    --is-public=true \
    --disk-format=qcow2 \
    --container-format=bare < /var/lib/libvirt/images/$IMAGE_NAME.qcow2

キーペア作成

shell
cd && nova keypair-add mykey > mykey && chmod 600 mykey

nova keypair-list

インスタンスの起動

shell
IMAGE_NAME=CentOS6.5

INSTANCE_NAME=CentOS6.5-test

PRIVATE_NET_ID=`neutron net-list | awk '$4=="private"{print $2}'`

nova boot \
    --flavor 1 \
    --image $IMAGE_NAME \
    --security_group default \
    --nic net-id=$PRIVATE_NET_ID \
    --key-name mykey \
    $INSTANCE_NAME

フローティングIPの付与

・作成したインスタンスのデバイスIDを取得する

shell
INSTANCE_NAME=CentOS6.5-test

DEVICE_ID=`nova list | awk -v INSTANCE_NAME=$INSTANCE_NAME '$4==INSTANCE_NAME{print $2}'`

echo $DEVICE_ID

・作成したインスタンスのポートIDを取得する

shell
PORT_ID=`neutron port-list --device_id=$DEVICE_ID | awk '/ip_address/{print $2}'`

echo $PORT_ID

・フローティングIPの割出とフローティングIPのIDを取得する

shell
FLOATINGIP_ID=`neutron floatingip-create public | awk '$2~/^id$/{print $4}'`

echo $FLOATINGIP_ID

・フローティングIPをサブネットに割り当てる

shell
neutron floatingip-associate $FLOATINGIP_ID $PORT_ID

・確認

shell
nova list --name $INSTANCE_NAME
neutron floatingip-list --id $FLOATINGIP_ID | awk '{print $6}'

作成したインスタンスにssh接続する

shell
ssh -i mykey root@floating_ip_address
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away