LoginSignup
0
0

More than 1 year has passed since last update.

OpenStack Kolla(stable/train) all-in-one環境構築(Host OS: CentOS8)

Posted at

はじめに

本記事は、CentOS8の仮想マシンにOpenStack kolla(stable/train)によるall-in-one環境を構築した際の手順の記録です。手順は「kolla-ansible Quick Start」で紹介されている手順(バイナリパッケージをインストールする方法とソースコードを基にインストールする方法の2つ)のうちソースコードをインストールするに沿っています。pipコマンドの実行方法など、警告を回避するコマンドを使っています。また、Quick Startに記載されていても正しくないと思われる手順は変更しています。

#目標
OpenStack Kolla(stable/train) All-in-oneノードでopenstack server listコマンドを実行し、cirrosイメージのVMがACTIVEであることが確認できることまでが本手順の目標です。

Host OS/ VMの準備

all-in-oneノードを構築するVMは、以下の環境・条件で作成しました。
NICは制御用に1つ、テナント用に1つの計2NIC作成しています。
その他、パッケージ・ソースコードを取得するためにインターネット回線が必要です。

VM環境:VirtualBox6.1 (2CPUs, 4G Mem, 32G Disk, 2NICs)
Installメディア:CentOS-8.2.2004-x86_64-minimal.iso
VM Host OS : CentOS Linux release 8.2.2004 (Core)を最小構成(Minimal)
システム管理用ユーザ:sysadm

手順

kolla/kolla-ansibleのインストール作業用にユーザkoladmを追加します。
※私の運用方針上で追加しているだけで、構築には必須ではないのでスキップしてください。

1.作業用ユーザ追加

kolla作業用にユーザkoladmを作成

sudo useradd -s /bin/bash -d /opt/openstack-kolla -m koladm -U
sudo passwd koladm

/etc/sudoersの編集

sudo時のコマンドパスの追加とパスワードなしでコマンドを実行するために/etc/sudoersを編集します。
この手順でインストールを実行するとkolla関連のコマンドは/usr/local/binに配置されるため、secure_pathに/usr/local/binを追加します。これを追加しないとAnsibleでsudoで/usr/local/binのコマンドを実行しようとしてもPATHがないというエラーになります。
これは、ログインシェルが/bin/shであるためbashrcに/usr/local/binを追加しても、PATHに追加されません。そのため、secure_pathにパスを追加します。
また、ユーザ名koladmに対してALL=NOPASSWD: ALLを設定し、パスワードなしでsudoによるコマンドを実行をできるようにします。

date_now="$(date +%Y%m%d%H%M%S)"
sudo cp -v /etc/sudoers /etc/sudoers.bak${date_now}
sudo visudo
sudo diff -up /etc/sudoers.bak${date_now} /etc/sudoers
sysadm@suse152-kolla:~> diff -up /etc/sudoers.bak20201103005947 /etc/sudoers
diff: /etc/sudoers.bak20201103005947: Permission denied
diff: /etc/sudoers: Permission denied
sysadm@suse152-kolla:~> sudo diff -up /etc/sudoers.bak20201103005947 /etc/sudoers
--- /etc/sudoers.bak20201103005947      2020-11-03 00:59:58.259309248 +0900
+++ /etc/sudoers        2020-11-03 01:01:14.090458412 +0900
@@ -36,7 +36,7 @@
 ## unexpected or harmful way (CVE-2005-2959, CVE-2005-4158, CVE-2006-0151)
 Defaults always_set_home
 ## Path that will be used for every command run from sudo
-Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"
+Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin"
 Defaults env_reset
 ## Change env_reset to !env_reset in previous line to keep all environment variables
 ## Following list will no longer be nevessary after this change
@@ -82,6 +82,7 @@ root ALL=(ALL) ALL

 ## Same thing without a password
 # %wheel ALL=(ALL) NOPASSWD: ALL
+koladm ALL=NOPASSWD: ALL

 ## Read drop-in files from /etc/sudoers.d
 ## (the '#' here does not indicate a comment)
sysadm@suse152-kolla:~>

2. パッケージ更新

sudo dnf update -y

3. パッケージのインストール

sudo dnf install -y vim bind-utils
sudo dnf install -y git
sudo dnf install -y python3-devel libffi-devel gcc openssl-devel python3-libselinux
sudo dnf install -y python3-pip
sudo python3 -m pip install --upgrade pip

4. Ansibleのインストール

sudo python3 -m pip install 'ansible<2.10'

5. kollaレポジトリをcloneする(ブランチstable/trainを指定)

コミットログを減らすためにブランチ指定していますが、指定なしでcloneしてブランチを切り替えてもOK

su - koladm
mkdir -p /opt/openstack-kolla/src
cd /opt/openstack-kolla/src
git clone https://github.com/openstack/kolla -b stable/train
cd kolla
git branch

クローン後に、ブランチがstable/trainになっていることを確認します。

[koladm@centos8-kolla ~]$ cd kolla
[koladm@centos8-kolla kolla]$ git branch
* stable/train
[koladm@centos8-kolla kolla]$ 

7. kolla-ansibleレポジトリをcloneする(ブランチstable/trainを指定)

cd /opt/openstack-kolla/src
git clone https://github.com/openstack/kolla-ansible -b stable/train
cd kolla-ansible/
git branch

クローン後に、ブランチがstable/trainになっていることを確認します。

~]$ cd kolla-ansible/
kolla-ansible]$ git branch
* stable/train
kolla-ansible]$

8. kolla/kolla-ansibleのインストール

cd /opt/openstack-kolla/src
sudo python3 -m pip install wheel
sudo python3 -m pip install ./kolla
sudo python3 -m pip install ./kolla-ansible
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -rv /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp -v /usr/local/share/kolla-ansible/ansible/inventory/* /opt/openstack-kolla/
sudo mkdir -p /etc/ansible
sudo vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100

cd /opt/openstack-kolla
ansible -i ./all-in-one all -m ping

password.ymlの生成

cp -v /etc/kolla/passwords.yml /etc/kolla/passwords.yml.old
kolla-genpwd
cp -v /etc/kolla/passwords.yml /etc/kolla/passwords.yml.bak$(date +%Y%m%d%H%M%S)
vim /etc/kolla/passwords.yml
[koladm@centos8-kolla ~]$ diff -up /etc/kolla/passwords.yml.bak20201101205904 /etc/kolla/passwords.yml
--- /etc/kolla/passwords.yml.bak20201101205904  2020-11-01 20:59:04.638174318 +0900
+++ /etc/kolla/passwords.yml    2020-11-01 20:59:58.799179327 +0900
@@ -160,7 +160,7 @@ karbor_database_password: Ypl5JUGRFLVmUY
 karbor_keystone_password: YvBbnN5SlMqEQKdsQXiFoQAEF3jmpJx9xvmNVDYV
 karbor_openstack_infra_id: 73be339b-662c-4b26-bbfc-9d8271ee65a6
 keepalived_password: OureNAvouiJ1UIOirE7Vs6fTREnjnA1LEqQ73Jvm
-keystone_admin_password: 4MPMuss9hMbfdO7T9bZtLZfJI49o0d8nWLh1OujL
+keystone_admin_password: Admin1234
 keystone_database_password: Z1K3323VYAC04P5p293wKu61V0nm4m8WyX00TqQm
 keystone_ssh_key:
   private_key: '-----BEGIN PRIVATE KEY-----
[koladm@centos8-kolla ~]$

edit globals.yml

cp -v /etc/kolla/globals.yml /etc/kolla/globals.yml.bak$(date +%Y%m%d%H%M%S)
vim /etc/kolla/globals.yml
[root@centos8-kolla ~]# diff -up /etc/kolla/globals.yml.bak20201101210032  /etc/kolla/globals.yml
--- /etc/kolla/globals.yml.bak20201101210032    2020-11-01 21:00:32.423182436 +0900
+++ /etc/kolla/globals.yml      2020-11-01 22:49:23.424222245 +0900
@@ -12,10 +12,10 @@
 #config_strategy: "COPY_ALWAYS"

 # Valid options are ['centos', 'debian', 'rhel', 'ubuntu']
-#kolla_base_distro: "centos"
+kolla_base_distro: "centos"

 # Valid options are [ binary, source ]
-#kolla_install_type: "binary"
+kolla_install_type: "source"

 # Do not override this unless you know what you are doing.
 #openstack_release: "train"
@@ -34,7 +34,7 @@
 # All-In-One without haproxy and keepalived, you can set enable_haproxy to no
 # in "OpenStack options" section, and set this value to the IP of your
 # 'network_interface' as set in the Networking section below.
-#kolla_internal_vip_address: "10.10.10.254"
+kolla_internal_vip_address: "192.168.10.130"

 # This is the DNS name that maps to the kolla_internal_vip_address VIP. By
 # default it is the same as kolla_internal_vip_address.
@@ -95,7 +95,7 @@
 # Yet another way to workaround the naming problem is to create a bond for the
 # interface on all hosts and give the bond name here. Similar strategy can be
 # followed for other types of interfaces.
-#network_interface: "eth0"
+network_interface: "enp0s3"

 # These can be adjusted for even more customization. The default is the same as
 # the 'network_interface'. These interfaces must contain an IP address.
@@ -127,7 +127,7 @@
 # though an IP address can exist on this interface, it will be unusable in most
 # configurations. It is recommended this interface not be configured with any IP
 # addresses for that reason.
-#neutron_external_interface: "eth1"
+neutron_external_interface: "enp0s8"

 # Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs, opendaylight ]
 # if vmware_nsxv3 is selected, enable_openvswitch MUST be set to "no" (default is yes)
@@ -246,7 +246,7 @@
 #enable_ceph_dashboard: "{{ enable_ceph | bool }}"
 #enable_chrony: "yes"
 #enable_cinder: "no"
-#enable_cinder_backup: "yes"
+enable_cinder_backup: "no"
 #enable_cinder_backend_hnas_nfs: "no"
 #enable_cinder_backend_iscsi: "{{ enable_cinder_backend_lvm | bool or enable_cinder_backend_zfssa_iscsi | bool }}"
 #enable_cinder_backend_lvm: "no"
@@ -510,7 +510,7 @@
 #nova_backend_ceph: "{{ enable_ceph }}"

 # Valid options are [ qemu, kvm, vmware, xenapi ]
-#nova_compute_virt_type: "kvm"
+nova_compute_virt_type: "qemu"

 # The number of fake driver per compute node
 #num_nova_fake_per_node: 5
[root@centos8-kolla ~]#
cd /opt/openstack-kolla
kolla-ansible -i ./all-in-one bootstrap-servers
kolla-ansible -i ./all-in-one prechecks
kolla-ansible -i ./all-in-one deploy
sudo python3 -m pip install python-openstackclient
kolla-ansible post-deploy

デモ用ネットワーク、イメージ、フレーバの作成

init-runonceを実行することで、デモ用ネットワーク・cirrosイメージ・フレーバが作成されます。

source /etc/kolla/admin-openrc.sh
/usr/local/share/kolla-ansible/init-runonce

デモ用VMの起動

openstack server create \
    --image cirros \
    --flavor m1.tiny \
    --key-name mykey \
    --network demo-net \
    demo1
[root@centos8-kolla openstack-kolla]# openstack server list
+--------------------------------------+-------+--------+---------------------+--------+---------+
| ID                                   | Name  | Status | Networks            | Image  | Flavor  |
+--------------------------------------+-------+--------+---------------------+--------+---------+
| 97821b4e-7f4d-4f77-9df5-74d0b2eae7f3 | demo1 | ACTIVE | demo-net=10.0.0.208 | cirros | m1.tiny |
+--------------------------------------+-------+--------+---------------------+--------+---------+
[root@centos8-kolla openstack-kolla]#
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0