2017年10月17日火曜日

Kolla Openstack Ocata と Open Contrail4.0のインストール

DockerhubにアップロードされているOpenstack OcataとOpenContrail4.0のコンテナイメージを利用して、インストールする方法を紹介します。

今回の構成はUbuntu16.04.2をKVM上に4つ作成し、それぞれ以下のような役割になっています。作成したVMは2つ以上のNICを設定してください。(Openstack kollaの仕様)
作業はすべてkolla1から行います。
** KVMを利用する場合、ホストマシンでnestedを有効にしVMのCPUアトリビュートでVMXを有効にしてください。

構成:
kolla1(10.84.50.117): Openstack Controller/Ansible
kolla2(10.84.50.118): Contrail Controller
kolla3(10.84.50.119): Compute node
kolla4(10.84.50.120): Compute node
手順:
  1. 事前準備
  2. Ansible Playbookのダウンロードと設定
  3. インストール
  4. インストール後作業
  5. 動作確認

1.事前準備

今回はkolla1より各サーバにRootアクセスして設定するため、証明書を発行し対象サーバに登録します。
Kolla1で実行
ssh-keygen -t rsa 
すべてのノードでに対して実行
ssh-copy-id -i ~/.ssh/id_rsa.pub lab@10.84.50.117
ssh -t lab@10.84.50.117 'sudo mkdir /root/.ssh'
ssh -t lab@10.84.50.117 'sudo cp /home/lab/.ssh/authorized_keys /root/.ssh/authorized_keys' 

Ansibleを使うための事前準備
Kolla1で実行
apt update
apt install python-pip sshpass
pip install -U pip
pip install -U ansible
pip install  pyOpenSSL==16.2.0
すべてのノードに対して実行
ssh -t root@10.84.50.117 'apt-get -y install python-simplejson'

2.Ansible Playbookのダウンロードと設定

githubからインストール用ファイルをダウンロードします。
git clone https://github.com/gokulpch/OpenContrail-Kolla.git
ダウンロードしたファイルは2つあり、contrail-ansibleはOpenContrial用、kolla-ansibleはOpentack用です。

Openstackの設定ファイルの変更

OpenContrail-Kolla/kolla-ansible/etc/kolla/globals.ymlの修正

以下の4項目を修正します。
network_interface: "ens3"
kolla_internal_vip_address: "10.84.50.117"
contrail_api_interface_address: "10.84.50.118"
neutron_external_interface: "ens4"
  • network_interface:実際に使用するVMのNICを設定
  • kolla_internal_vip_address: Kolla1のens3のIPアドレスを設定
  • contrail_api_interface_address: kolla2のens3のIPアドレスを設定
  • neutron_external_interface: kolla1のNICを設定(ダミー)

OpenContrail-Kolla/kolla-ansible/etc/kolla/passwords.ymlの修正

各種コンポーネントのパスワードが設定されています。(デフォルトではcontrail1)
パスワードを変更したい場合はこのファイルを変更してください

OpenContrail-Kolla/kolla-ansible/ansible/inventory/multinodeの修正

[control] [network] [compute] [monitoring] [storage]の項目を修正してください。以下の例ではホスト名になっていますが、ホスト名を使う場合、IPアドレスが引けることが条件です。
[control]
kolla1
[network]
kolla1
[compute]
kolla3
kolla4
[monitoring]
kolla1
[storage]
kolla1

Contrailの設定ファイルの変更

OpenContrail-Kolla/contrail-ansible/playbooks/inventory/my-inventory/hostsの修正

[contrail-controllers] [contrail-analytics] [contrail-compute] [openstack-controllers]の項目を修正してください。ホスト名を設定すると動作しないので必ずIPアドレスを設定してください。
[contrail-controllers]
10.84.50.118
[contrail-analyticsdb]
10.84.50.118
[contrail-analytics]
10.84.50.118
[contrail-compute]
10.84.50.119
10.84.50.120
[openstack-controllers]
10.84.50.117

OpenContrail-Kolla/contrail-ansible/playbooks/inventory/my-inventory/group_vars/all.yml の修正

以下の5項目を修正します
ansible_ssh_private_key_file: ~/.ssh/id_rsa
global_config: { external_rabbitmq_servers: 10.84.50.117 }
rabbitmq_config: { user: openstack, password: contrail1 }
keystone_config: {ip: 10.84.50.117, admin_password: contrail1, auth_protocol: http}
vrouter_physical_interface: ens3
  • ansible_ssh_private_key_file:証明書のログインを指定(コメントアウトを外す)
  • global_config: RabbitMQのアドレスを設定。
  • rabbitmq_config: RabbitMQのパスワードを設定。passwords.ymlを変更した場合はここも変更
  • keystone_config: KeysoneにアクセスするAdminパスワードを設定。passwords.ymlを変更した場合はここも変更
  • vrouter_physical_interface: ContrailのvRouterが使用するNICを設定。ComputeノードごとにNIC名が違う場合はhostsに個別に設定。

3.インストール

Openstackインストールの事前準備

依存ファイルのインストールとAnsible作業時にssh keyを無視する変数をExport
ssh -t root@10.84.50.117 'apt-get -y install python-oslo-config'
export ANSIBLE_HOST_KEY_CHECKING=False

Openstackのインストール

cd OpenContrail-Kolla/kolla-ansible/ansible/
ansible-playbook -i inventory/multinode -e @../etc/kolla/globals.yml -e @../etc/kolla/passwords.yml -e action=bootstrap-servers kolla-host.yml
ansible-playbook -i inventory/multinode -e @../etc/kolla/globals.yml -e @../etc/kolla/passwords.yml -e action=deploy site.yml

OpenContrailのインストールの事前準備

Dockerのインストール
ssh -t root@10.84.50.118 'curl -sSL https://get.docker.io | bash'

OpenContrailのインストール

cd OpenContrail-Kolla/contrail-ansible/playbooks/
ansible -i inventory/my-inventory -m shell -a 'apt-get install -y ntp' all
ansible-playbook  -i inventory/my-inventory site.yml

compute nodeのリブート

ssh -t root@10.84.50.119 reboot
ssh -t root@10.84.50.120 reboot

4.インストール後作業

horizonのバグFix対応

docker exec -i horizon sudo sed -i -e 's:/usr/share/openstack-dashboard/static:/var/lib/openstack-dashboard/static:g' /etc/apache2/conf-enabled/000-default.conf
docker exec -i horizon /usr/share/openstack-dashboard/manage.py collectstatic --noinput
docker exec -i horizon /usr/share/openstack-dashboard/manage.py compress
docker exec -i horizon sudo service apache2 reload

openstackrc の作成

echo 'export OS_USERNAME=admin
export OS_PASSWORD=contrail1
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://10.84.50.117:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2' > openstackrc

Openstack clientのインストール

pip install python-openstackclient

flavorの作成

source openstackrc
openstack flavor create --id 1 --disk 1 --ram 512 --vcpus 1 --public m1.tiny
openstack flavor create --id 2 --disk 20 --ram 2048 --vcpus 1 --public m1.small
openstack flavor create --id 3 --disk 40 --ram 4096 --vcpus 2 --public m1.medium
openstack flavor create --id 4 --disk 80 --ram 8192 --vcpus 2 --public m1.large
openstack flavor create --id 5 --disk 160 --ram 16384 --vcpus 4 --public m1.xlarge

5.動作確認

openstack network listを発行し、以下のように3つのネットワークが返ってきたらOpenstackとOpenContrailの設定は終了です。
+--------------------------------------+-------------------------+--------------------------------------+
| ID                                   | Name                    | Subnets                              |
+--------------------------------------+-------------------------+--------------------------------------+
| a5432e6b-0155-4b13-abe8-e6290f6dc9fe | __link_local__          |                                      |
| 5a58e2d9-88b1-4ff2-9e0f-e0ed5e4e72ce | default-virtual-network |                                      |
| 65549c94-5ffc-4b30-9025-00a54813a695 | ip-fabric               |                                      |
+--------------------------------------+-------------------------+--------------------------------------+

次回、OpenContrail管理外に接続するためのSimple Gatewayの設定と動作確認を紹介します。

参考リンク
https://gitlab.com/gokulpch/OpenContrail-Kolla/blob/master/README.md