Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

OpenStack LibertyをRDOを使ってインストール on CentOS7(KVM)

      2016/01/29

ホストOS(CentOS7)に直接OpenStackを入れると、失敗した時が面倒なので、KVM上のCentOS7にOpenStackをRDOを使ってインストールしてみました。構成は最も単純な、NIC 1枚のall-in-one構成です。

CentOS 7をKVM上にインストール

ホストOSにはKVM環境がインストールされている状態を前提とし、今回は、virt-intall コマンドを使ってGUIを使わずに一気にOSをインストールします。

CentOS 7のインストールメディア(ISOファイル)を/tmp/にダウンロードしておきます。

# ls /tmp/
CentOS-7-x86_64-DVD-1511.iso

 

Kickstartを使って自動インストールするために、以下のファイルを/tmp/centos7.ks.cfgとして作成します。

#version=RHEL7

install
cdrom
text
cmdline
skipx

lang en_US.UTF-8
keyboard --vckeymap=jp106 --xlayouts=jp
timezone Asia/Tokyo --isUtc --nontp

network --activate --bootproto=dhcp --noipv6

zerombr
bootloader --location=mbr

clearpart --all --initlabel
part / --fstype=xfs --grow --size=1 --asprimary --label=root

rootpw --plaintext password
auth --enableshadow --passalgo=sha512
selinux --disabled
firewall --disabled
firstboot --disabled

reboot

%packages
%end

 

virt-installコマンドをインスールします。

# yum install -y virt-install

 

virt-install実行するためのスクリプト/root/virt-install-centos7.shを作成します。(ファイルには実行権限をつけてください)
–ram はホストのメモリに応じて適切に変更してください。以下は約20Gを割り当てています。

virt-install \
  --name centos7 \
  --hvm \
  --virt-type kvm \
  --ram 20480 \
  --vcpus 4 \
  --cpu host
  --arch x86_64 \
  --os-type linux \
  --os-variant rhel7 \
  --boot hd \
  --disk pool=default,size=120,format=qcow2 \
  --network network=default \
  --graphics none \
  --serial pty \
  --console pty \
  --location /tmp/CentOS-7-x86_64-DVD-1511.iso \
  --initrd-inject /tmp/centos7.ks.cfg \
  --extra-args "inst.ks=file:/centos7.ks.cfg console=ttyS0"

 

インストールを開始します。

# /root/virt-install-centos7.sh

 

数十分でインストールが完了し、ログインプロンプトが出てくるので、rootでログインします。パスワードはpasswordです。

※ ホストに戻りたい場合は Ctrl + ] で抜けられます。VMのコンソールに入りたい場合は virsh console centos7 で入れます。

インストール完了後、VMのIPを固定します。今回私が使ったKVMのNATは192.168.122.0/24セグメントで、GWは192.168.122.1でした。よって、VMには192.168.122.2を割り当てることにします。

/etc/sysconfig/network-scripts/ifcfg-eth0 ファイルを以下のように設定しました。HWADDRやUUID等は環境依存なので、以下とあわせる必要はありません。

NAME="eth0"
HWADDR=52:54:00:AA:AA:AA
ONBOOT=yes
NETBOOT=yes
UUID="38b16985-2ee6-485c-9558-118877711111"
IPV6INIT=no
BOOTPROTO=static
IPADDR=192.168.122.2
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
PEERDNS=yes
PEERROUTES=yes

 

ネットワークを再起動します。

# systemctl restart network

 

OSをアップデートします。カーネルもアップデートされると思うので、一旦再起動します。

# yum update
# shutdown -r now

 

OpenStackのインストール

※/etc/hosts に自ホスト名の登録がないとインストール後にうまく動かないので注意してください。

RDOを使ってインストールしていきます。

# yum install https://repos.fedorapeople.org/repos/openstack/openstack-liberty/rdo-release-liberty-2.noarch.rpm
# yum install openstack-packstack
# systemctl disable NetworkManager
# systemctl stop NetworkManager

 

packstackの設定ファイル(answerファイル)を作成する。

# packstack --gen-answer-file=answers.txt --allinone --default-password=hogehoge --nagios-install=n --os-ceilometer-install=n --os-swift-install=n --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ovs-bridge-interfaces=br-ex:eth0 --os-neutron-ml2-type-drivers=vxlan,flat,vlan,gre --os-neutron-ml2-tenant-network-type=vxlan,vlan,gre

 

OpenStackをインストールする

# packstack --answer-file=answers.txt
~省略~
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack component
s.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.122.2. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.122.2/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20160124-221929-25cjdB/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20160124-221929-25cjdB/manifests

 

上記のように表示されれば完了です。ホストOSから192.168.122.2にブラウザでアクセスすれば、Horizonの画面が表示されます。admin/hogehoge でログインできます。

ネットワークの作成

VMが外部と通信できるように、最低限のネットワークを作成していきます。Horizonだと画面キャプチャが面倒なので、ここではコマンドラインでやります。

まずは、OpenStack API にアクセスするために、/root/keystonerc_admin を読み込みます。

# source /root/keystonerc_admin

 

コマンドプロンプトは以下のように変わりますが、本文では省略します。引き続きrootで作業していきます。

[root@localhost ~(keystone_admin)]#

 

外部(192.168.122.0/24)に接続するためのネットワークを作成します。

# neutron net-create external_network --name public --provider:network_type flat --provider:physical_network extnet --router:external --shared
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | dc9b4e69-fe9f-4e51-95bb-993e920c539f |
| mtu                       | 0                                    |
| name                      | public                               |
| provider:network_type     | flat                                 |
| provider:physical_network | extnet                               |
| provider:segmentation_id  |                                      |
| router:external           | True                                 |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | b6f4124545c74c49b34d01d2bee0d8a6     |
+---------------------------+--------------------------------------+

 

続けてサブネットを作ります。サブネットは外部NWで使っている192.168.122.0/24、floating IPの範囲は、192.168.122.50~250 とします。

# neutron subnet-create public 192.168.122.0/24 --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.122.50,end=192.168.122.250 --gateway=192.168.122.1

Created a new subnet:
+-------------------+-------------------------------------------------------+
| Field             | Value                                                 |
+-------------------+-------------------------------------------------------+
| allocation_pools  | {"start": "192.168.122.50", "end": "192.168.122.250"} |
| cidr              | 192.168.122.0/24                                      |
| dns_nameservers   |                                                       |
| enable_dhcp       | False                                                 |
| gateway_ip        | 192.168.122.1                                         |
| host_routes       |                                                       |
| id                | ba164dd2-adae-4032-92ff-c0dde2d39698                  |
| ip_version        | 4                                                     |
| ipv6_address_mode |                                                       |
| ipv6_ra_mode      |                                                       |
| name              | public_subnet                                         |
| network_id        | dc9b4e69-fe9f-4e51-95bb-993e920c539f                  |
| subnetpool_id     |                                                       |
| tenant_id         | b6f4124545c74c49b34d01d2bee0d8a6                      |
+-------------------+-------------------------------------------------------+

 

publicネットワークに繋げるルータを作成します。

# neutron router-create router-public
Created a new router:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| distributed           | False                                |
| external_gateway_info |                                      |
| ha                    | False                                |
| id                    | f327752b-ff18-4407-ae5d-6359b859af6e |
| name                  | router-public                        |
| routes                |                                      |
| status                | ACTIVE                               |
| tenant_id             | b6f4124545c74c49b34d01d2bee0d8a6     |
+-----------------------+--------------------------------------+

 

ルータをpublicネットワークにつなげます。

# neutron router-gateway-set router-public public
Set gateway for router router-public

 

次にプライベートネットワーク/サブネット(192.168.200.0/24(任意))を作成し、上記ルータに接続します。

# neutron net-create private_network --name private
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | efc08ebd-b37d-4044-8bde-0c9bbe0ec9bc |
| mtu                       | 0                                    |
| name                      | private                              |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 42                                   |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | b6f4124545c74c49b34d01d2bee0d8a6     |
+---------------------------+--------------------------------------+
# neutron subnet-create private 192.168.200.0/24  --name private_subnet
Created a new subnet:
+-------------------+------------------------------------------------------+
| Field             | Value                                                |
+-------------------+------------------------------------------------------+
| allocation_pools  | {"start": "192.168.200.2", "end": "192.168.200.254"} |
| cidr              | 192.168.200.0/24                                     |
| dns_nameservers   |                                                      |
| enable_dhcp       | True                                                 |
| gateway_ip        | 192.168.200.1                                        |
| host_routes       |                                                      |
| id                | 1b843ed8-d09f-4421-a994-7801ae0330c0                 |
| ip_version        | 4                                                    |
| ipv6_address_mode |                                                      |
| ipv6_ra_mode      |                                                      |
| name              | private_subnet                                       |
| network_id        | efc08ebd-b37d-4044-8bde-0c9bbe0ec9bc                 |
| subnetpool_id     |                                                      |
| tenant_id         | b6f4124545c74c49b34d01d2bee0d8a6                     |
+-------------------+------------------------------------------------------+
#  neutron router-interface-add router-public private_subnet
Added interface 8e97fd0f-60c8-4232-a453-a641edb1f7fa to router router-public.

 

あとは、必要なイメージをglanceにアップロードし、キーペアを作成すれば、VMが起動できます。なお、デフォルトのセキュリティグループでは、VMへsshログインできないので、注意してください。

参考

 

 - IT技術, サーバ構築 ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
AndroidでDVDのisoファイル再生

2015/3月現在、まともにisoファイルを再生できるアプリがなかなか見つかりま …

no image
Ctrl-Sの端末ロックを無効にする

bashではCtrl-Sを入力してしまうと端末がロックされた状態になり何も受け付 …

no image
PostgreSQL 9.0 レプリケーション機能を使ってみる @ RHEL5 x86_64

PostgreSQL 9.0 がリリースされましね。早速目玉機能の一つである、レ …

no image
すでに同名のdebパッケージがインストールされているか確認する@Ubuntu 14.04

リポジトリにはまだ登録されていないパッケージを手動でdpkgを使ってアップデート …

no image
evalで変数名を変数にする@bash

シェルスクリプトで変数を使用していると、変数名を変数にしたい場合が出てきます。 …

no image
bashで配列のエクスポートができない@bash 3.2

bashにおいて、サブシェル(呼び出し先の別のシェル)内で呼び出し元の変数を参照 …

no image
グループへのユーザの追加@Linux

グループへユーザを追加する方法。 # gpasswd -a user group …

no image
SD経由で着信音にする方法

通常、SDカード経由で携帯に3gpファイルをコピーした場合、着信音やアラーム音に …

no image
vimでBackSpaceが効かない@Cygwin

Cgywin上で、BackSpace が効かず、文字が消せない場合は、~/.vi …

no image
vim-rubyインストール@Debian etch

vim-rubyを使うとrubyのプログラム編集で、補完機能を使うことができるら …