no about note

エンジニアのメモ書き

【Openstack】Glanceのimageの保存先を変更する

Remaining photons from the dying refractions of a nearby rainbow

  • デフォルトは/var/lib/glance/images/
  • /data/glance/imagesに変更する

glance-api.confのfilesystem_store_datadirを変更

# vi /etc/glance/glance-api.conf

#filesystem_store_datadir = /var/lib/glance/images
↓
filesystem_store_datadir = /data/glance/images/

ディレクト作成

# cd /data
# mkdir -p glance/images
# chown -R glance:glance glance/images/

glanceサービスを再起動

# ls /usr/lib/systemd/system/ | grep glance
openstack-glance-api.service
openstack-glance-glare.service
openstack-glance-registry.service
openstack-glance-scrubber.service

# systemctl restart openstack-glance-api.service openstack-glance-glare.service openstack-glance-registry.service openstack-glance-scrubber.service

イメージを再登録

  • インスタンス起動時にCloud not found が出てる
  • 入れなおしたら問題なくいった、保存先をDBとかに持ってたのかもしれない
  • 存在するイメージを一旦削除し、ダウンロードしておいたイメージファイルを再登録すると解決した

参考

Where are the Openstack images stored?

【Openstack】Neutronのネットワークをすべて削除する方法

Neutron Stars Rip Each Other Apart to Form Black Hole

【Openstack】Neutronのネットワークをすべて削除する方法

Neutronをいろいろいじっていると、一度作成したネットワークとかサブネットとかを削除して作り直したいシーンが多かったので。
順番を間違うとエラーで削除できなかったので、残しておく。

削除手順

1. FloatingIPの割り当て解除
## インスタンス一覧
# nova list

## FloatingIP一覧
# nova floating-ip-list

## FloatingIPの割り当て解除
usage: nova floating-ip-disassociate <server> <address>
# nova floating-ip-disassociate b46621b7-5cd4-4a7f-84d0-82cf76fdf438 172.16.100.3
2. FloatingIP削除
usage: nova floating-ip-delete <address>
# nova floating-ip-delete 172.16.100.3
3. インスタンス削除
# nova list
usage: nova delete <ID>
4. routerのインターフェイス削除
## routerのport一覧
usage:neutron router-port-list <router_name>
# neutron router-port-list router1

## routerのゲートウェイ解除
usage:neutron router-gateway-clear <router_name>
# neutron router-gateway-clear router1

## rourerのインターフェイス削除
usage:neutron router-interface-delete <router_name> subnet=<subnet_name>
# neutron router-interface-delete router1 subnet=private_subnet
5. router削除
usage:neutron router-delete <router_name>
# neutron router-delete router1
6. サブネット削除
## サブネット一覧
# neutron subnet-list

## サブネット削除
usage:neutron subnet-delete <subnet_name>
# neutron subnet-delete private_subnet
# neutron subnet-delete public_subnet
7. ネットワーク削除
usage:neutron net-delete <network_name>
# neutron net-delete public
# neutron net-list

参考

Openstack Docs - ネットワークの作成と管理

ネットワーク仮想化 基礎からすっきりわかる入門書

ネットワーク仮想化 基礎からすっきりわかる入門書

OpenStack 構築手順書 Liberty版 (Think IT Books)

OpenStack 構築手順書 Liberty版 (Think IT Books)

Openstack CLIをインストールする

概要

  • Openstackがインストールされたサーバ以外でOpenstackをCLIで操作するための準備
  • OpenstackにはAPIが用意され、認証ファイルを読み込むことで、権限のあるプロジェクトに対して操作が可能
  • CLIインスタンスを起動したり、ネットワークを作成などが可能となる

OpenStack コマンドラインクライアントのインストール

インストールした環境

  • 例としてCentOS7.2
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

前提パッケージのインストール

# yum install python-devel python-pip gcc

gccがないとpipでエラーになる

pipでパッケージをインストールする

# pip install python-openstackclient
# pip install python-neutronclient

→ neutronコマンドはopenstackclientには含まれないので別途いれる

Openstackコマンドラインクライアントを使う

# openstack --version
openstack 2.4.0

OpenStack rcクレデンシャルファイルの作成

  • 既に存在するクレデンシャルをもってくる

OpenStack rcクレデンシャルファイルの読み込み

# source keystonerc_demo

コンポーネントのコマンドを使う

# nova list

# glance image-list

# cinder list

# neutron net-list

参考

Cobbler+Ansible+PackstackでOpenstack(Liberty)マルチノードを構築した話(その3)

f:id:noabout:20160616235742p:plain

前回の話

noaboutsnote.hatenablog.com

noaboutsnote.hatenablog.com

構築時に遭遇したあらゆるトラブルの解決策を残しておく

トラブルシューティング

Horizonでエラー「:ボリュームのリソース上限情報を取得できません。」が表示される

エラーログ
May 16 12:28:41 opsn01 cinder-api: 2016-05-16 12:28:41.728 3874 ERROR cinder.api.middleware.fault [req-09a236f6-7092-49d3-a342-2f7b6398fa92 193316e6fcc24d068eaed4f4c9db03f7 ffb0dcb85cc54f2eac7b70520cbdd5de - - -] Caught error: Unknown Attribute: projects
May 16 12:28:47 opsn01 cinder-api: 2016-05-16 12:28:47.981 3873 ERROR cinder.api.middleware.fault [req-9d668939-2a14-4125-82f5-30bd37711288 193316e6fcc24d068eaed4f4c9db03f7 ffb0dcb85cc54f2eac7b70520cbdd5de - - -] Caught error: Unknown Attribute: projects

調べるとcinder.confの以下記述が原因らしい。記述を変更してcinderサービスを再起動するとなおる。

cinder.confを修正
# vim /etc/cinder/cinder.conf

#auth_uri = http://192.168.1.31:5000/v2.0
↓変更
auth_uri = http://192.168.1.31:5000/v3
cinderサービスの再起動
# systemctl restart openstack-cinder*

Horizonで「エラー: コンテナーの一覧を取得できません。」が表示される

原因
  • ログインしたユーザにSwiftコンテナを閲覧する権限がないため
  • おそらくadminでは表示されないはず
解決策
  • ユーザにSwiftOperatorの権限を与える
  • GUIでやるか、以下コマンドで権限を追加する
## プロジェクト一覧
# openstack role list
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 01db5ff8fda04b1f8156f92c3dafcbb5 | ResellerAdmin    |
| 03ff15e6b5ce4ec0b59a61d1791cdd30 | heat_stack_user  |
| 897748bcc16a4ab7a4ad4689ffd04d59 | admin            |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_         |
| b865c86512f2485d924b5e12596121c6 | SwiftOperator    |
| c3e248d784f7493e9eacf139a14c3731 | heat_stack_owner |
+----------------------------------+------------------+

## (ユーザ)にSwiftOperatorの権限を追加する
# openstack role add --project (プロジェクト名) --user (ユーザ名) SwiftOperator
# openstack role add --project demo --user sample-user SwiftOperator

Cinderボリュームの作成に失敗する

エラー内容
Apr 19 13:48:53 opsn01 cinder-volume: 2016-04-19 13:48:53.252 17685 ERROR cinder.volume.drivers.remotefs [req-ea0564cf-dfdd-4985-8bba-792af89bbd75 - - - - -] Failed to created Cinder secure environment indicator file: [Errno 13] Permission denied: '/var/lib/cinder/mnt/cc09943ea285efba3c4b578aa40e784c/.cinderSecureEnvIndicator'
Apr 19 13:48:53 opsn01 cinder-volume: 2016-04-19 13:48:53.259 17685 ERROR cinder.volume.drivers.remotefs [req-ea0564cf-dfdd-4985-8bba-792af89bbd75 - - - - -] Failed to created Cinder secure environment indicator file: [Errno 13] Permission denied: '/var/lib/cinder/mnt/cc09943ea285efba3c4b578aa40e784c/.cinderSecureEnvIndicator'

パーミッションエラーの模様

(解決)NASサーバ側のディレクトリのパーミッション

Cinderのバックエンドで利用していたnasサーバのマウント先の権限を変更したら解決した

# chmod -R 777 cinder-vol/

FloatingIP、PublicのIPアドレスに疎通ができない

チェックするべきところ
  • Publicネットワークが外部ネットワークになっているか
  • Publicネットワークが「共有」になっているか
  • プロジェクトのセキュリティグループにICMPを許可しているか

作成したインスタンスにHTTP接続ができない

チェックすべきところ

OpenStack 構築手順書 Liberty版 (Think IT Books)

OpenStack 構築手順書 Liberty版 (Think IT Books)

Cobbler+Ansible+PackstackでOpenstack(Liberty)マルチノードを構築した話(その2)

f:id:noabout:20160616235742p:plain

前回の話

noaboutsnote.hatenablog.com

Packstack実行後の設定

Neutronの外部ネットワークへの接続設定

NetworkNode(opsn02)で実施

ifcfg-br-ex作成
## opsn02で実施

# vi ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=172.16.0.32
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
ONBOOT=yes
NM_CONTROLLED=no
ifcfg-xxxx修正
## 変更後
# cat ifcfg-xxxx
DEVICE=enp2s0f0
ONBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ネットワークサービス再起動
# systemctl restart network

openvswitch_agent.iniの設定変更

NetworkNodeとComputeNodeで実施
## opsn02-06で実施 (Controllerノード以外)

# cd /etc/neutron/plugins/ml2/
# cp -p openvswitch_agent.ini openvswitch_agent.ini.org
# diff openvswitch_agent.ini openvswitch_agent.ini.org
205,206c205
< #local_ip = 172.16.0.3x
< local_ip = 10.10.0.3x
---
> local_ip = 172.16.0.3x
neutron-openvswitch-agent サービスの再起動
# systemctl restart neutron-openvswitch-agent.service

Openstackの動作確認

adminユーザのクレデンシャルファイルを読み込む

# source /root/keystonerc_admin
セキュリティグループの追加
  • これはプロジェクトごとに設定する
# nova secgroup-list-rules default
+-------------+-----------+---------+----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+----------+--------------+
|             |           |         |          | default      |
|             |           |         |          | default      |
+-------------+-----------+---------+----------+--------------+

## ICMPを許可
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

## SSHを許可
# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0


# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
|             |           |         |           | default      |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
|             |           |         |           | default      |
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

初期ネットワーク作成

Neutronサービス動作確認

# neutron agent-list

publicネットワーク作成

# neutron net-list
# neutron router-create router1
# neutron net-create public --router:external --shared
# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=172.16.100.2,end=172.16.100.253 --gateway=172.16.1.1 public 172.16.1.1/16

privateネットワーク作成

# neutron net-create private-net
# neutron subnet-create --name private_subnet --enable_dhcp=True --allocation-pool=start=192.168.1.2,end=192.168.1.253  private-net 192.168.1.0/24
# neutron router-gateway-set router1 public
# neutron router-interface-add router1 subnet=private_subnet

ネットワークの動作確認

# ip netns
qrouter-5e22e13a-a9aa-4303-9b6a-xxxxx
qdhcp-b1f7958a-f1d5-4147-a8ea-xxxxxx

## Ping疎通確認
# ip netns exec qrouter-5e22e13a-a9aa-4303-9b6a-1c3b1b36dfcc ping 172.16.100.1
# ip netns exec qrouter-5e22e13a-a9aa-4303-9b6a-1c3b1b36dfcc ping 192.168.1.2

Pingが疎通することを確認

Glanceにイメージ登録

Glance image-list

# glance image-list

wgetrcの確認 (※Proxy配下の場合)

# grep proxy /etc/wgetrc  | grep -iv "^#"
http_proxy=http://xxx.xxx.xxx.xxx:(PortNumber)
https_proxy=http://xxx.xxx.xxx.xxx:(PortNumber)

イメージファイルをダウンロード

# cd /tmp/
# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

glance-image-createでGlanceにイメージ登録

# glance image-create --name "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public --progress
# glance image-list

キーペアの作成

## opsn01で実施
# nova keypair-list
+------+-------------+
| Name | Fingerprint |
+------+-------------+
+------+-------------+

キーペア作成

# ssh-keygen -t rsa -f  id_rsa

keypair登録

# nova keypair-add --pub-key ~/.ssh/id_rsa.pub mykey

# nova keypair-list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | 3c:ef:17:79:86:6b:4b:61:e8:c3:eb:a7:d2:44:f8:b5 |
+-------+-------------------------------------------------+

インスタンス作成

# nova list
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

Neutronネットワークid確認

# neutron net-list
+--------------------------------------+----------+-----------------------------------------------------+
| id                                   | name     | subnets                                             |
+--------------------------------------+----------+-----------------------------------------------------+
| b1f7958a-f1d5-4147-a8ea-c7e480a193a4 | private-net | 8fb069e2-ff31-42e9-ac1e-53557d7d80c4 192.168.2.0/24 |
| c11ecf00-657c-4898-a2d1-17a91b35fadb | public   | d5e4b06b-7e37-4e1c-a4d7-f506342ac37a 172.16.0.0/16  |
+--------------------------------------+----------+-----------------------------------------------------+

インスタンス起動

# nova boot --flavor m1.tiny --image cirros --nic net-id=b1f7958a-f1d5-4147-a8ea-c7e480a193a4 --security-group default --key-name mykey cirros-test001

FloatingIP確保

# neutron floatingip-create public
Created a new floatingip:

FloatingIP割り当て

# nova floating-ip-associate cirros-test001 172.16.100.2
# nova list

Cinderボリューム作成

# cinder list
+----+--------+------+------+-------------+----------+-------------+
| ID | Status | Name | Size | Volume Type | Bootable | Attached to |
+----+--------+------+------+-------------+----------+-------------+
+----+--------+------+------+-------------+----------+-------------+

利用できるCinderタイプ確認

# cinder type-list
+--------------------------------------+------+-------------+-----------+
|                  ID                  | Name | Description | Is_Public |
+--------------------------------------+------+-------------+-----------+
| 7bca3c24-317c-44c8-8308-8ecb9d23033b | nfs  |      -      |    True   |
+--------------------------------------+------+-------------+-----------+

Cinderボリューム作成

# cinder create --volume_type nfs --display_name nfsvolume001 1

インスタンスへの接続

# nova volume-attach cirros-test001 bfa47292-e01d-4d93-9f28-c87e6c7034cc auto

インスタンスでボリュームを使用する

# ssh 172.16.10.1

# hostname
cirros-test001

$ sudo -i

# fdisk -l

Disk /dev/vda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *       16065     2088449     1036192+  83  Linux

Disk /dev/vdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/vdb doesn't contain a valid partition table

# fdisk /dev/vdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x75782e5b.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/vdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x75782e5b

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151

Command (m for help): p

Disk /dev/vdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x75782e5b

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     2097151     1047552   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# mkdir /mnt/volume01
# mkfs.ext4 /dev/vdb
mke2fs 1.42.2 (27-Mar-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information:
done

# mount /dev/vdb /mnt/volume01/
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev                    242.3M         0    242.3M   0% /dev
/dev/vda1                23.2M     18.0M      4.0M  82% /
tmpfs                   245.8M         0    245.8M   0% /dev/shm
tmpfs                   200.0K     72.0K    128.0K  36% /run
/dev/vdb               1007.9M     33.3M    923.4M   3% /mnt/volume01

# cd /mnt/volume01/
# touch test.txt
# ls -la
total 21
drwxr-xr-x    3 root     root          4096 Apr 19 08:05 .
drwxrwxr-x    3 root     root          1024 Apr 19 08:04 ..
drwx------    2 root     root         16384 Apr 19 08:04 lost+found
-rw-------    1 root     root             0 Apr 19 08:05 test.txt

Glanceにcirrosイメージ以外の追加

参考:
Download pre-built images for OpenStack

CentOS6
## CentOS6_x86_64
# wget http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1603.qcow2 -P /tmp

# glance image-create --name "CentOS6_x86_64" --file /tmp/CentOS-6-x86_64-GenericCloud-1603.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress
CentOS7
## CentOS7_x86_64
# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1603.qcow2 -P /tmp
# glance image-create --name "CentOS7_x86_64" --file /tmp/CentOS-7-x86_64-GenericCloud-1603.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress
Ubuntu
## Ubuntu
# wget http://cloud-images.ubuntu.com/releases/15.10/release/ubuntu-15.10-server-cloudimg-amd64-disk1.img -P /tmp
# glance image-create --name "Ubuntu15.10_amd64" --file /tmp/ubuntu-15.10-server-cloudimg-amd64-disk1.img --disk-format qcow2 --container-format bare --visibility public --progress
Fedora
## Fedora
# wget https://download.fedoraproject.org/pub/fedora/linux/releases/23/Cloud/x86_64/Images/Fedora-Cloud-Base-23-20151030.x86_64.qcow2 -P /tmp

# glance image-create --name "Fedora_23_Cloud" --file /tmp/Fedora-Cloud-Base-23-20151030.x86_64.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress

続きは次回

OpenStack 構築手順書 Liberty版 (Think IT Books)

OpenStack 構築手順書 Liberty版 (Think IT Books)

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)

Cobbler+Ansible+PackstackでOpenstack(Liberty)マルチノード環境を構築した話(その1)

概要

  • Openstackでマルチノード環境を構築した話
  • バージョンはLiberty

構成図

f:id:noabout:20160616235742p:plain

環境

  • 物理ノード x 6台(Openstackノード)
    • ControllerNode x 1台
    • NetworkNode x 1台
    • ComputeNode x 4台
  • NetworkはNeutronを使用し、VXLANでTunnelNetWorkを
  • HAなど冗長性はなし(これからやりたい)
  • Nasノード1台(Cinderのバックエンド) ※別途構築済み
No. Hostname IP CPU Clock RAM Disk OS Role
1 opsn01 192.168.1.31 2.40GHz 54GB 400GB CentOS 7 ControllerNode
2 opsn02 192.168.1.32 2.40GHz 54GB 400GB CentOS 7 NetworkNode
3 opsn03 192.168.1.33 2.40GHz 54GB 400GB CentOS 7 ComputeNode
4 opsn04 192.168.1.34 2.40GHz 54GB 400GB CentOS 7 ComputeNode
5 opsn05 192.168.1.35 2.40GHz 54GB 400GB CentOS 7 ComputeNode
6 opsn06 192.168.1.36 2.40GHz 54GB 400GB CentOS 7 ComputeNode
7 nas01 192.168.1.50 2.66GHz 2GB 4TB CentOS 6.7 NAS(Cinder Backend)

構築の流れをざっくり

  • Cobbler

    • 物理ノードへOSインストールを行う
  • Ansible

    • OS基本設定を行う
    • Packstackパッケージの配布とインストール
  • Packstack

    • Openstackのデプロイを行う
      • Answerファイル編集
      • Packstack実行
    • インストールしたコンポーネントの詳細はanswerファイルに記載

Cobbler

Kickstart留意点

1. AnsibleとKickstartのすみわけについて

KickstartはOSインストールのみに終始し、OSの設定などなるべくAnsibleで制御する方針。

2. パーティション設計
  • ファイルシステムはRHEL7標準のxfs
  • SwapのサイズはRedhat推奨のメモリの半分
  • 拡張・伸縮性があるLVMを採用、VGは分けるメリットがないので、1つにする
  • LVMは複数にわけず、1つのみ
    • 理由はNovaの仮想マシンの実体ファイルが/var/lib/nova/instancesに配置されるため
## Kickstartファイル (opsn0x.ks)

clearpart --all

part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.001 --fstype="lvmpv" --ondisk=sda --size=1 --grow

volgroup VolGroup --pesize=4096 pv.001
logvol /  --fstype="xfs" --name=lv_root --vgname=VolGroup --size=1 --grow
logvol swap  --fstype="swap" --size=27648 --name=lv_swap --vgname=VolGroup
3. NetworkManagerの停止

これだけはKickstart内で制御した

## Kickstartファイル (opsn0x.ks)

# Service
services --disabled=NetworkManager
services --enabled=network

CobblerにDistribution、Profiles、Systemsを登録

参考:
noaboutsnote.hatenablog.com

Distribution登録

  • Provisioningサーバで実施
  • Opentackノード用のCentOS7のイメージを登録
# cd /mnt
# wget http://www.ftp.ne.jp/Linux/packages/CentOS/7/isos/x86_64/CentOS-7-x86_64-Everything-1511.iso

# mount CentOS-7-x86_64-Everything-1511.iso /mnt

# cobbler import --name CentOS-7-x86_64-Everything --path /mnt

# cobbler distro list
   CentOS-7-Everything-x86_64

# umount /mnt/

パッケージリポジトリミラーリング

# cobbler repo add --name CentOS-7-x86_64-updates --mirror http://ftp.iij.ad.jp/pub/linux/centos/7/updates/x86_64/
# cobbler repo add --name CentOS-7-x86_64-extras --mirror http://ftp.iij.ad.jp/pub/linux/centos/7/extras/x86_64/
# cobbler repo add --name epel7 --mirror http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64

# cobbler repo list
  CentOS-7-x86_64-extras
  CentOS-7-x86_64-updates
  epel7

Profiles登録

  • OpenstackノードようのProfile作成
  • Kickstartファイルを用意する
# cobbler profile add --name= --distro=opsn0x --kickstart=/var/lib/cobbler/kickstarts/opsn0x.ks
# cobbler sync

Systems登録

## Cobbler system add

# cobbler system add  \
--name=opsn01 \          # system名を指定(addの場合はこの名前でsystemが作成される)
--hostname=opsn01 \    # Hostnameを設定
--profile=opsn0x \          # 利用するprofileを指定
--interface=enp2s0f0 \            # 設定するインターフェースを指定
--mac=xx:xx:xx:xx:xx:xx \   # eth0のMACアドレス
--static=1 \                           # 固定IP or DHCP (DHCPの場合は0)
--ip-addres=192.168.1.31 \      # IPアドレス
--subnet=255.255.0.0 \          # サブネットマスク
--gateway=192.168.1.1 \          # ゲートウェイ
~~~~~

Cobbblerでインストール実行

  • 起動時にネットワークブートするようにすれば自動でインストールされる
OSインストールをやり直す場合

Cobbler側で二度同じホストでネットワークブートしないようになっているので、
明示的にネットワークブートできるようにする必要がある

# cobbler system edit --name opsn01 --netboot-enabled True
→これを全ホスト分実行する

# cobbler sync

Ansible

  • OSインストール後の設定
  • Packstackパッケージの配布を行う

参考:
noaboutsnote.hatenablog.com

Playbook実行

  • Provisioningサーバで実施
# cd /etc/ansible-playbooks/playbook
# ansible-playbook add-yum-conf.yml -i opsn -vvv -k
# ansible-playbook common-for-centos7.yml -i opsn -vvv -k
# ansible-playbook packstack_liberty.yml -i opsn -vvv -k

詳細はGithub

Packstack

Answerファイル生成

## opsn01で実施

# packstack --gen-answer-file=/root/answer.txt

Answerファイルを編集

編集したところだけ記載

##  SAHARAをインストール
CONFIG_SAHARA_INSTALL=y

## HEATをインストール
CONFIG_HEAT_INSTALL=y

## TROVEをインストール
CONFIG_TROVE_INSTALL=y

## NTPサーバを指定
CONFIG_NTP_SERVERS=192.168.1.100

## Computeノードを指定
CONFIG_COMPUTE_HOSTS=192.168.1.33,192.168.1.34,192.168.1.35,192.168.1.36

## Netwrokノードを指定
CONFIG_NETWORK_HOSTS=192.168.1.32

## Cinderのバックエンドをnasに指定
CONFIG_CINDER_BACKEND=nfs

## Cinderボリューム作成しない
CONFIG_CINDER_VOLUMES_CREATE=n

## CinderのNFSマウント先を指定
CONFIG_CINDER_NFS_MOUNTS=192.168.1.50:/cinder-vol

## PublicNetWorkのインターフェイス名を指定
CONFIG_NOVA_NETWORK_PUBIF=enp2s0f0

## PrivateNetwrokのインターフェイス名を指定
CONFIG_NOVA_NETWORK_PRIVIF=enp3s0f0

## 固定IPレンジを指定しない
CONFIG_NOVA_NETWORK_FIXEDRANGE=
CONFIG_NOVA_NETWORK_FLOATRANGE=

## LBaaSをインストール
CONFIG_LBAAS_INSTALL=y

## Metering_Agentをインストール
CONFIG_NEUTRON_METERING_AGENT_INSTALL=y

## FWaaSをインストール
CONFIG_NEUTRON_FWAAS=y

## VPNaaSをインストール
CONFIG_NEUTRON_VPNAAS=y

## Swiftをストレージ容量を100Gに指定
CONFIG_SWIFT_STORAGE_SIZE=100G

## HEAT_CLOUDWATCHをインストール
CONFIG_HEAT_CLOUDWATCH_INSTALL=y

## HEAT_CFNをインストール
CONFIG_HEAT_CFN_INSTALL=y

## demoプロジェクトを作成しない
CONFIG_PROVISION_DEMO=n

先にrpm --importをしておく

  • 環境がProxy配下の場合、rabbitmqのrpmkeyのところでエラーで失敗するので、先にrpmkeyをインストールしておく
  • Proxy配下でない場合は不要。
# rpm --import http://honyarara/gpg-key --httpproxy ***.***.***.*** --httpport ****
# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc --httpproxy 192.168.1.1 --httpport 8080

Packstackインストール

# packstack --answer-file=/root/answer.txt

→エラーが出たら、ログを見て

adminのパスワードを確認

/root/keystonerc_admin に書いてあるので確認する

ダッシュボードにログインする

http://192.168.0.31/dashboard

続きはまた次回

参考

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)

OpenStack 構築手順書 Liberty版 (Think IT Books)

OpenStack 構築手順書 Liberty版 (Think IT Books)

Packstackで最新バージョン以外を使う

Packstackを使ってOpenstackをインストールしようと思ったときに、
最新バージョンではなく、1つ前のバージョンを試したいってときに。

公式では

Packstack quickstart

On RHEL:

$ sudo yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
$ sudo yum update -y
$ sudo yum install -y openstack-packstack
$ packstack --allinone

On CentOS:

$ sudo yum install -y centos-release-openstack-mitaka
$ sudo yum update -y
$ sudo yum install -y openstack-packstack
$ packstack --allinone

最新版のPackstackのリポジトリの中身

RHELの場合

# cat /etc/yum.repos.d/rdo-release.repo
[openstack-mitaka]
name=OpenStack Mitaka Repository
baseurl=http://mirror.centos.org/centos/7/cloud/$basearch/openstack-mitaka/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud

ここを探す

https://repos.fedorapeople.org/repos/openstack/

20160617時点で以下があった

[DIR] openstack-kilo/         2016-05-12 11:17    -
[DIR] openstack-liberty/      2016-04-22 14:52    -
[DIR] openstack-mitaka/       2016-04-22 14:51    -
[DIR] openstack-trunk/
# yum install https://repos.fedorapeople.org/repos/openstack/openstack-liberty/rdo-release-liberty-1.noarch.rpm

ってやると

# cat /etc/yum.repos.d/rdo-release.repo
[openstack-liberty]
name=OpenStack Liberty Repository
baseurl=http://mirror.centos.org/centos/$releasever/cloud/$basearch/openstack-liberty/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud

→「liberty」が入る

CentOSの場合

yumでパッケージ名がバージョンごとになっているので、それを指定してインストールすればいいっぽい。

# yum search centos-release-openstack-
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
~~~~
===================================================== N/S matched: centos-release-openstack- ======================================================
centos-release-openstack-kilo.noarch : OpenStack from the CentOS Cloud SIG repo configs
centos-release-openstack-liberty.noarch : OpenStack from the CentOS Cloud SIG repo configs
centos-release-openstack-mitaka.noarch : OpenStack from the CentOS Cloud SIG repo configs

  Name and summary matches only, use "search all" for everything.

以下で使い分けられそう

# yum install centos-release-openstack-kilo
# yum install centos-release-openstack-liberty
# yum install centos-release-openstack-mitaka

こちらも

noaboutsnote.hatenablog.com

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)

OpenStack-Ansibleで作る HA環境構築手順書 Kilo版 (Think IT Books)