- 1. はじめに
- 2. Ansible実行ノードの準備
- 3. ターゲットノードの準備
- 4. config yamlの準備
- 5. playbooksの実行
- 6. OpenStackのチェック
- 7. 新しいコンピューティングノードの追加
- 8. 注意事項
- 9. おわりに
執筆者 : 森 克彦
1. はじめに
OpenStackはIaaS環境を構築するためのソフトウェア群です。簡単にAWSの様なクラウドサービス環境を作成できます。 ここでは、OpenStack-Ansibleを用いてOpenStackの環境構築を示したいと思います。前提知識としてAnsibleとOpenStackなどの知識が必要ですが、Webで詳しく説明している資料などがありますので、ここでは割愛して実際の構築の流れを示したいと思います。
ここで使用したソフトウェアのバージョンは以下の通りです。
ソフトウェア | バージョン |
---|---|
Openstack | Yoga |
Openstack-Ansible | 25.0.0 |
Python | 3.10.4 |
Ansible | 2.12.6 |
環境構築用のマシンのスペックは以下の通りです。1台のAnsible実行ノードと2台のターゲットノードで環境構築します。
ansible実行ノード: 1台 OS: ubuntu 22.04 CPU: core 2 Memory: 4GB Disk: 30GB NIC: 1 コントローラノード: 1台 OS: ubuntu 22.04 CPU: core 16 Memory: 24GB Disk: 1TB (ルート) 、2TB x 4台 (イメージとボリューム用) NIC: 1 ワーカーノード: 1台 OS: ubuntu 22.04 CPU: core 16 Memory: 24GB Disk: 1TB (ルート) NIC: 1
ネットワーク構成は以下の通りです。
ホスト名 | 用途 | アクセス用IPアドレス | Management 用IPアドレス | VXLAN 用IPアドレス | Storage 用IPアドレス |
---|---|---|---|---|---|
vac0w | ansible実行ノード | 172.17.31.10/16 | 172.29.236.9/22 | ||
vac1w | コントローラノード | 172.17.31.11/16 | 172.29.236.10/22 | 172.29.240.10/22 | 172.29.244.10/22 |
vac2w | ワーカーノード | 172.17.31.12/16 | 172.29.236.11/22 | 172.29.240.11/22 | 172.29.244.11/22 |
インストールするコンポーネントは以下です。
ホスト名 | コンポーネント |
---|---|
vac0w | python3, ansible |
vac1w | keystone, nova, neutron, glance, cinderv3, placement, heat-cfn, heat |
vac2w | nova-compute, neutron-l2-agent |
2. Ansible実行ノードの準備
Ansible playbooksを実行するノード(以降vac0wとする)を用意します。 OSのインストールはSSHのみ有効な最小インストールです。
ネットワークを設定
OSインストール後は、ファイル/etc/netplan/less 00-installer-config.yamlを以下のように編集して保存します。
network: version: 2 ethernets: enp1s0: dhcp4: false vlans: enp1s0.10: id: 10 link: enp1s0 bridges: br-mgmt: addresses: - 172.29.236.9/22 interfaces: - enp1s0.10 mtu: 1500 br-ext: addresses: - 172.17.31.10/16 interfaces: - enp1s0 mtu: 1500 gateway4: 172.17.0.254 nameservers: addresses: - 172.18.1.10
以下を実行して設定を反映します。
# netplan apply
パッケージを更新
# apt update && apt dist-upgrade
再起動後に、以下のパッケージをインストールします。
# apt install build-essential git chrony openssh-server python3-dev sudo
ssh
パスフレーズを含めないSSHキーペアを作成します。
OpenStack Ansibleのインストール
以下を実行してopenstack-ansibleをダウンロードします。
# git clone -b 25.0.0 https://opendev.org/openstack/openstack-ansible /opt/openstack-ansible
/opt/openstack-ansible/scriptsに移動して以下を実行します。
# ./bootstrap-ansible.sh PLAY RECAP *************************************************************************************************************************************** localhost : ok=9 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 System is bootstrapped and ready for use.
3. ターゲットノードの準備
コントローラノード(以降vac1wとする)とワーカーノード(以降vac2wとする)を用意します。 OSのインストールはsshのみ有効な最小インストールです。
ネットワークを設定
OSインストール後は、ファイル/etc/netplan/00-installer-config.yamlを以下のように編集して保存します。 以下はvac1wの例ですが、vac2wも同様でIPアドレスのみ異なります。
network: version: 2 ethernets: enp1s0: dhcp4: false vlans: enp1s0.10: id: 10 link: enp1s0 enp1s0.20: id: 20 link: enp1s0 enp1s0.30: id: 30 link: enp1s0 enp1s0.40: id: 40 link: enp1s0 bridges: br-mgmt: addresses: - 172.29.236.10/22 interfaces: - enp1s0.10 mtu: 1500 br-storage: addresses: - 172.29.244.10/22 interfaces: - enp1s0.20 mtu: 1500 br-vxlan: addresses: - 172.29.240.10/22 interfaces: - enp1s0.30 mtu: 1500 br-ext: addresses: - 172.17.31.11/16 interfaces: - enp1s0 gateway4: 172.17.0.254 nameservers: addresses: - 172.18.1.10 mtu: 1500 br-vlan: interfaces: - enp1s0.40 mtu: 1500
以下を実行して設定を反映します。
# netplan apply
パッケージを更新
以下のパッケージをインストールしてから、再起動します。
# apt update # apt dist-upgrade # apt install bridge-utils debootstrap openssh-server tcpdump vlan python3 # apt install linux-modules-extra-$(uname -r) # reboot
sshの設定
vac0wで作成した公開鍵を/root/.ssh/authorized_keysに追加します。
イメージ用ディスクの設定(vac1wのみ)
vac1wにて、1台のディスクをイメージ保存用にするため、以下のようにフォーマットします。
# fdisk /dev/nvme0n1 # mkfs.ext4 /dev/nvme0n1p1
vac1wにて、以下のようにマウントします。再起動も自動マウントするよう/etc/fstabを編集保存します。
# mkdir /image_disk # mount /dev/nvme0n1p1 /image_disk # mkdir /image_disk/glance # ln -s /image_disk/glance/ /var/lib/glance
ボリューム用ディスクの設定(vac1wのみ)
vac1wにて、3台のディスクをボリューム保存用にするため、以下のようにRaid5を設定します。
# mdadm --create /dev/md/Raid5Array --level=raid5 --raid-devices=3 --chunk=128 --verbose /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: size set to 1953382400K mdadm: automatically enabling write-intent bitmap on large array mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md/Raid5Array started.
以下のようにLVMでフォーマットします。
# sgdisk -g /dev/md/Raid5Array Creating new GPT entries in memory. The operation has completed successfully. # fdisk /dev/md/Raid5Array Welcome to fdisk (util-linux 2.37.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition number (1-128, default 1): 1 First sector (34-7813529566, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-7813529566, default 7813529566): Created a new partition 1 of type 'Linux filesystem' and of size 3.6 TiB. Command (m for help): t Selected partition 1 Partition type or alias (type L to list all): 8e Type of partition 1 is unchanged: Linux filesystem. Command (m for help): p Disk /dev/md/Raid5Array: 3.64 TiB, 4000527155200 bytes, 7813529600 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 131072 bytes / 262144 bytes Disklabel type: gpt Disk identifier: 8A2B333A-D882-496D-9B75-FF2F27E9972E Device Start End Sectors Size Type /dev/md/Raid5Array1 2048 7813529566 7813527519 3.6T Linux filesystem Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
以下のようにpvとvgを作成します。
# pvcreate --metadatasize 2048 /dev/md/Raid5Array1 Physical volume "/dev/md/Raid5Array1" successfully created. # vgcreate cinder-volumes /dev/md/Raid5Array1 Volume group "cinder-volumes" successfully created
4. config yamlの準備
vac0wにて、以下のようにファイルをコピーしてから、/etc/openstack_deployに移動します。
# cp -a /opt/openstack-ansible/etc/openstack_deploy /etc/openstack_deploy # cd /etc/openstack_deploy
ユーザが編集する必要なファイルはすべてこの/etc/openstack_deployに集約されています。 このディレクトリの中は以下のような構成になっています。
openstack_user_config.yml : ターゲットノードの構成とサービスの設定をするファイル user_secrets.yml : 各コンポーネントのパスワードを設定するファイル(例えば、mysqlのパスワード、rabbitmqのパスワードなど) user_variables.yml : 細かいオプションを設定するファイル ansible_facts : ターゲットノードに関する情報のキャッシュファイルを保存するディレクトリ
まず、openstack_user_config.ymlファイルを以下のように編集して保存します。
--- cidr_networks: container: 172.29.236.0/22 tunnel: 172.29.240.0/22 storage: 172.29.244.0/22 used_ips: - "172.29.236.1,172.29.236.50" - "172.29.240.1,172.29.240.50" - "172.29.244.1,172.29.244.50" global_overrides: external_lb_vip_address: 172.17.31.11 internal_lb_vip_address: 172.29.236.10 management_bridge: "br-mgmt" provider_networks: - network: container_bridge: "br-mgmt" container_type: "veth" container_interface: "eth1" ip_from_q: "container" type: "raw" group_binds: - all_containers - hosts is_container_address: true - network: container_bridge: "br-vxlan" container_type: "veth" container_interface: "eth10" ip_from_q: "tunnel" type: "vxlan" range: "1:1000" net_name: "vxlan" group_binds: - neutron_linuxbridge_agent - network: host_bind_override: "enp1s0" type: "flat" net_name: "provider" group_binds: - neutron_linuxbridge_agent - network: container_bridge: "br-vlan" container_type: "veth" container_interface: "eth11" type: "vlan" range: "101:200,301:400" net_name: "vlan" group_binds: - neutron_linuxbridge_agent - network: container_bridge: "br-storage" container_type: "veth" container_interface: "eth2" ip_from_q: "storage" type: "raw" group_binds: - glance_api - cinder_api - cinder_volume - nova_compute ### ### Infrastructure ### # galera, memcache, rabbitmq, utility shared-infra_hosts: infra1: ip: 172.29.236.10 # repository (apt cache, python packages, etc) repo-infra_hosts: infra1: ip: 172.29.236.10 # load balancer haproxy_hosts: infra1: ip: 172.29.236.10 ### ### OpenStack ### # keystone identity_hosts: infra1: ip: 172.29.236.10 # cinder api services storage-infra_hosts: infra1: ip: 172.29.236.10 # glance image_hosts: infra1: ip: 172.29.236.10 # placement placement-infra_hosts: infra1: ip: 172.29.236.10 # nova api, conductor, etc services compute-infra_hosts: infra1: ip: 172.29.236.10 # heat orchestration_hosts: infra1: ip: 172.29.236.10 # horizon dashboard_hosts: infra1: ip: 172.29.236.10 # neutron server, agents (L3, etc) network_hosts: infra1: ip: 172.29.236.10 # nova hypervisors compute_hosts: compute1: ip: 172.29.236.11 # cinder storage host (LVM-backed) storage_hosts: infra1: ip: 172.29.236.10 container_vars: cinder_backends: limit_container_types: cinder_volume lvm: volume_group: cinder-volumes volume_driver: cinder.volume.drivers.lvm.LVMVolumeDriver volume_backend_name: LVM_iSCSI iscsi_ip_address: "172.29.236.10"
上記の設定では、cidr_networksはそれぞれネットワークのレンジを入れています。 used_ipsは使用するIPアドレスを入れています。provider_networksはターゲットノードに設定したネットワークを入れています。 xxx_hostsはOpenStackのコンポーネントを指して、さらにその下の infra1はコントローラノード、compute1はコンピュートノードを指していて、それぞれのipにはアクセスIPアドレスではなくManagement 用IPアドレスを入れます。
また、オプションでLXCコンテナを使わずに直接ターゲットノードに動かしたい場合は、/opt/openstack-ansible/inventory/env.d/*.ymlを以下のように編集します。 glanceの例
container_skel: cinder_api_container: belongs_to: - storage-infra_containers contains: - cinder_api - cinder_scheduler properties: is_metal: true
次に、各サービスのパスワードを自動生成します。
# ./scripts/pw-token-gen.py --file /etc/openstack_deploy/user_secrets.yml Creating backup file [ /etc/openstack_deploy/user_secrets.yml.tar ] Operation Complete, [ /etc/openstack_deploy/user_secrets.yml ] is ready
最後に、/etc/openstack_deploy/user_variables.ymlファイルの中にinstall_methodをデフォルトのsourceからdistroに変更します。 sourceはソースコード、distroはパッケージをインストールします。柔軟に運用したい場合はソースコードを、安定運用したい場合はパッケージを入れます。 これはAnsible実行後に変更できないため、最初に決定する必要があります。
5. playbooksの実行
vac0wにて、/opt/openstack-ansible/playbooksに移動して以下を実行します。
# openstack-ansible setup-hosts.yml PLAY RECAP ***************************************************************************************************************************************************************************************************************************** compute1 : ok=127 changed=1 unreachable=0 failed=0 skipped=29 rescued=0 ignored=0 infra1 : ok=166 changed=1 unreachable=0 failed=0 skipped=28 rescued=0 ignored=0 infra1_cinder_api_container-49348ff2 : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_galera_container-326019ca : ok=81 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 infra1_glance_container-d953f38e : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_heat_api_container-e9249c0b : ok=78 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 infra1_horizon_container-d5efc521 : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_keystone_container-a0beba47 : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_memcached_container-ca097440 : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_neutron_server_container-71fb31c1 : ok=78 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 infra1_nova_api_container-a0dea846 : ok=78 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 infra1_placement_container-bd04d7a3 : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_rabbit_mq_container-2212204e : ok=76 changed=4 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 infra1_repo_container-d1a84598 : ok=78 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 infra1_utility_container-b412a52d : ok=78 changed=11 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 localhost : ok=16 changed=0 unreachable=0 failed=0 skipped=13 rescued=0 ignored=0 EXIT NOTICE [Playbook execution success] **************************************
上記のように[Playbook execution success]が表示されたら成功です。次に以下を実行します。
# openstack-ansible setup-infrastructure.yml PLAY RECAP ****************************************************************************************************************************************************************************************************** compute1 : ok=0 changed=0 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0 infra1 : ok=49 changed=28 unreachable=0 failed=0 skipped=31 rescued=0 ignored=0 infra1_galera_container-9fe6dc32 : ok=75 changed=35 unreachable=0 failed=0 skipped=11 rescued=0 ignored=0 infra1_memcached_container-d63c0201 : ok=21 changed=12 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 infra1_rabbit_mq_container-79020d63 : ok=73 changed=38 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0 infra1_repo_container-594ee06a : ok=58 changed=32 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0 infra1_utility_container-76639f23 : ok=35 changed=14 unreachable=0 failed=0 skipped=16 rescued=0 ignored=0 EXIT NOTICE [Playbook execution success] **************************************
上記のように[Playbook execution success]が表示されたら成功です。最後に以下を実行します。
# openstack-ansible setup-openstack.yml PLAY RECAP ************************************************************************************************************************************************************ compute1 : ok=147 changed=68 unreachable=0 failed=0 skipped=84 rescued=0 ignored=0 infra1 : ok=114 changed=57 unreachable=0 failed=0 skipped=84 rescued=0 ignored=0 infra1_cinder_api_container-13be6a9d : ok=97 changed=50 unreachable=0 failed=0 skipped=51 rescued=0 ignored=0 infra1_glance_container-f1eb2d67 : ok=73 changed=37 unreachable=0 failed=0 skipped=39 rescued=0 ignored=0 infra1_heat_api_container-0c83c3c8 : ok=89 changed=50 unreachable=0 failed=0 skipped=53 rescued=0 ignored=0 infra1_horizon_container-4c1f9c61 : ok=41 changed=25 unreachable=0 failed=0 skipped=8 rescued=0 ignored=0 infra1_keystone_container-7755937d : ok=124 changed=62 unreachable=0 failed=0 skipped=53 rescued=0 ignored=0 infra1_neutron_server_container-9fdee84d : ok=86 changed=47 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0 infra1_nova_api_container-3794d0e0 : ok=118 changed=57 unreachable=0 failed=0 skipped=68 rescued=0 ignored=0 infra1_placement_container-856ba1ce : ok=50 changed=30 unreachable=0 failed=0 skipped=33 rescued=0 ignored=0 infra1_utility_container-76639f23 : ok=2 changed=0 unreachable=0 failed=0 skipped=5 rescued=0 ignored=0 localhost : ok=3 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 EXIT NOTICE [Playbook execution success] ************************************** ===============================================================================
上記のように[Playbook execution success]が表示されたら成功です。
6. OpenStackのチェック
vac1wにログインして以下のようにLXCコンテナが起動していることを確認できます。 neutron-l2-agentやnova-computeなどの例外を除いて、OpenStackの各コンポーネントは各コンテナ上で動作しています。
# lxc-ls --fancy NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED infra1_cinder_api_container-13be6a9d RUNNING 1 onboot, openstack 10.0.3.242, 172.29.237.166, 172.29.246.165 - false infra1_galera_container-9fe6dc32 RUNNING 1 onboot, openstack 10.0.3.78, 172.29.239.32 - false infra1_glance_container-f1eb2d67 RUNNING 1 onboot, openstack 10.0.3.226, 172.29.238.112, 172.29.246.35 - false infra1_heat_api_container-0c83c3c8 RUNNING 1 onboot, openstack 10.0.3.151, 172.29.237.105 - false infra1_horizon_container-4c1f9c61 RUNNING 1 onboot, openstack 10.0.3.221, 172.29.236.141 - false infra1_keystone_container-7755937d RUNNING 1 onboot, openstack 10.0.3.253, 172.29.238.206 - false infra1_memcached_container-d63c0201 RUNNING 1 onboot, openstack 10.0.3.231, 172.29.238.237 - false infra1_neutron_server_container-9fdee84d RUNNING 1 onboot, openstack 10.0.3.152, 172.29.238.177 - false infra1_nova_api_container-3794d0e0 RUNNING 1 onboot, openstack 10.0.3.72, 172.29.238.21 - false infra1_placement_container-856ba1ce RUNNING 1 onboot, openstack 10.0.3.204, 172.29.239.45 - false infra1_rabbit_mq_container-79020d63 RUNNING 1 onboot, openstack 10.0.3.249, 172.29.239.49 - false infra1_repo_container-594ee06a RUNNING 1 onboot, openstack 10.0.3.108, 172.29.237.180 - false infra1_utility_container-76639f23 RUNNING 1 onboot, openstack 10.0.3.38, 172.29.237.204 - false ubuntu-22-amd64 STOPPED 0 - - - false
上記のコンテナの中で名前がinfra1_utility_container-xxxがOpenStack CLIを操作するコンテナです。 以下のようにコンテナの中に入ってOpenStackの状態確認できます。
# lxc-attach infra1_utility_container-76639f23 root@infra1-utility-container-76639f23:~# . openrc
以下のように、サービス、ハイパーバイザーとネットワークのエージェントが有効であることを確認できます。
# openstack service list +----------------------------------+-----------+----------------+ | ID | Name | Type | +----------------------------------+-----------+----------------+ | 115345a0f27e468d98fa5c311f98e19a | cinderv3 | volumev3 | | 5b405c1f2f1b436199e61f03a11d0409 | heat-cfn | cloudformation | | 767158b7c1f646fb82504a9e1b1f2928 | keystone | identity | | 9e7beec9461c4b2aac1d1c8f81654f6f | neutron | network | | abbe0267ffa84ea484a208b1614473af | placement | placement | | ca86ceb9cb2f4081a052213fa8eb6807 | nova | compute | | ef37a79cedce467ba66c8972f1d936f9 | glance | image | | f0acd8bc41e54b31a03be508c8eed538 | heat | orchestration | +----------------------------------+-----------+----------------+ # openstack hypervisor list +----+---------------------+-----------------+---------------+-------+ | ID | Hypervisor Hostname | Hypervisor Type | Host IP | State | +----+---------------------+-----------------+---------------+-------+ | 1 | vac2w | QEMU | 172.29.236.11 | up | +----+---------------------+-----------------+---------------+-------+ # openstack network agent list +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+ | 32c6442c-70c1-4c75-8e08-137a72af7f7a | DHCP agent | vac1w | nova | :-) | UP | neutron-dhcp-agent | | 48930dad-fa9a-400b-bb0b-952d13198230 | Linux bridge agent | vac2w | None | :-) | UP | neutron-linuxbridge-agent | | 4b3d19db-c149-4155-ab1d-ec0105cd7e46 | L3 agent | vac1w | nova | :-) | UP | neutron-l3-agent | | 75601408-8b55-4c5e-8a1c-f56696c72d7f | Metering agent | vac1w | None | :-) | UP | neutron-metering-agent | | b78bda5e-734b-404a-b988-0681f973a772 | Linux bridge agent | vac1w | None | :-) | UP | neutron-linuxbridge-agent | | fef816f3-8798-4942-9581-f9dab847056e | Metadata agent | vac1w | None | :-) | UP | neutron-metadata-agent | +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
Webブラウザで確認します。
vac0wにて、以下のようにアクセスIPアドレスを確認します。
# cat /etc/openstack_deploy/openstack_user_config.yml | grep 'external_lb_vip_address' external_lb_vip_address: 172.17.31.11
httpsでこのIPアドレス(https://172.17.31.11/)にアクセスしてWeb管理画面でも確認できます。 ログインのユーザ名はadminです。パスワード以下のコマンド実行結果のkeystone_auth_admin_password:に表示されたものです。
# cat /etc/openstack_deploy/user_secrets.yml | grep 'keystone_auth_admin'
7. 新しいコンピューティングノードの追加
クラスタ構築後に、新しいコンピューノード(vac3wとする)を追加したい場合は、vac0wにて、/etc/openstack_deployopenstack_user_config.yml のcompute_hosts部分に compute2を追加します。
追加前
# nova hypervisors compute_hosts: compute1: ip: 172.29.236.11
追加後
# nova hypervisors compute_hosts: compute1: ip: 172.29.236.11 compute2: ip: 172.29.236.12
上記のように追加したら、「5. playbooksの実行」をもう一度実行します。
実行後に以下のように確認できます。
# openstack hypervisor list +----+---------------------+-----------------+---------------+-------+ | ID | Hypervisor Hostname | Hypervisor Type | Host IP | State | +----+---------------------+-----------------+---------------+-------+ | 1 | vac2w | QEMU | 172.29.236.11 | up | | 2 | vac3w | QEMU | 172.29.236.12 | up | +----+---------------------+-----------------+---------------+-------+ # openstack network agent list +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+ | 32c6442c-70c1-4c75-8e08-137a72af7f7a | DHCP agent | vac1w | nova | :-) | UP | neutron-dhcp-agent | | 48930dad-fa9a-400b-bb0b-952d13198230 | Linux bridge agent | vac2w | None | :-) | UP | neutron-linuxbridge-agent | | 4b3d19db-c149-4155-ab1d-ec0105cd7e46 | L3 agent | vac1w | nova | :-) | UP | neutron-l3-agent | | 75601408-8b55-4c5e-8a1c-f56696c72d7f | Metering agent | vac1w | None | :-) | UP | neutron-metering-agent | | 875d1b6a-e740-498e-9db6-347295ff967c | Linux bridge agent | vac3w | None | :-) | UP | neutron-linuxbridge-agent | | b78bda5e-734b-404a-b988-0681f973a772 | Linux bridge agent | vac1w | None | :-) | UP | neutron-linuxbridge-agent | | fef816f3-8798-4942-9581-f9dab847056e | Metadata agent | vac1w | None | :-) | UP | neutron-metadata-agent | +--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
8. 注意事項
コントローラノードのメモリ
コントローラノードのメモリを24GB以上にしないと、構築の途中でいくつかのLXCが起動できない状態になります。
キャッシュの削除
Ansibleを実行すると、/etc/openstack_deploy/ansible_factsにターゲットノードに関する情報のキャッシュファイルが生成されます。 Ansible実行途中で失敗して、その後openstack_user_config.ymlを編集した場合は、必ずこのキャッシュファイルを削除してから、Ansibleを再実行してください。
設定ファイルの場所
OpenStackの各コンポーネントはLXCコンテナ上で動いています。その設定ファイルもまたLXCコンテナのファイルシステムにあります。 一方、nova-compute, neutron-l2-agentなどはLXCコンテナではなく、ターゲットノード上で動いています。その設定ファイルはターゲットノードのファイルシステムにあります。 例えば、NeutronのLXCコンテナのneutron ml2 pluginの設定ファイルはあるが、これを編集してもターゲットノード上のneutron-l2-agentには反映されません。
また、Ansibleを再実行すると各コンポーネントの設定ファイルも上書きされるので、手動で設定ファイルを編集した場合は、予めバックアップをおすすめします。
9. おわりに
いかがでしょうか。ここの手順をご参考いただければ幸いです。 ここまでの構築手順はhttps://docs.openstack.org/openstack-ansible/yoga/を参考にして作りました。