Cobbler+Ansible+PackstackでOpenstack(Liberty)マルチノード環境を構築した話(その1)
- 概要
- 構成図
- 参考
概要
- Openstackでマルチノード環境を構築した話
- バージョンはLiberty
構成図
環境
- 物理ノード 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) |
- Provisioningサーバ
- 仮想マシン
- Cobbler + Ansible
- 192.168.1.100
構築の流れをざっくり
Cobbler
Ansible
- OS基本設定を行う
- yum update
- Packstackパッケージの配布とインストール
- OS基本設定を行う
Packstack
- Openstackのデプロイを行う
- Answerファイル編集
- Packstack実行
- インストールしたコンポーネントの詳細はanswerファイルに記載
- Openstackのデプロイを行う
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
に書いてあるので確認する
ダッシュボードにログインする
続きはまた次回