安裝Placement
在Controller節點
1、建立placement資料庫
[root@controller ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 38
Server version: 10.3.20-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.003 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
-> IDENTIFIED BY 'PLACEMENT_DBPASS';
Query OK, 0 rows affected (0.004 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
-> IDENTIFIED BY 'PLACEMENT_DBPASS';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye
2、配置使用者和endpoints
- 擷取admin使用者憑證
[root@controller ~]# source admin-openrc
- 建立一個叫placement的使用者
[root@controller ~]# openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 10b1156339334e919d0e067846e458da |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
- 将glance使用者、service項目、admin角色綁定
[root@controller ~]# openstack role add --project service --user placement admin
- 建立placement服務實體
[root@controller ~]# openstack service create --name placement \
--description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | a59c5c3a1e6543a09f05c5b747fb33bf |
| name | placement |
| type | placement |
+-------------+----------------------------------+
- 建立API endpoints
[root@controller ~]# openstack endpoint create --region RegionOne \
placement public http://controller:8778
[root@controller ~]# openstack endpoint create --region RegionOne \
placement internal http://controller:8778
[root@controller ~]# openstack endpoint create --region RegionOne \
placement admin http://controller:8778
3、安裝配置元件
- 安裝包
[root@controller ~]# yum install openstack-placement-api -y
- 修改配置檔案
- 把PLACEMENT_DBPASS換成placement資料庫的密碼。
- 把PLACEMENT_PASS換成placement使用者的密碼。
- 注釋掉[keystone_authtoken]中其他生效行。
- 主機名controller可被解析。
[root@controller ~]# vim /etc/placement/placement.conf
[api]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = PLACEMENT_PASS
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement
- 初始化placement資料庫
[root@controller ~]# su -s /bin/sh -c "placement-manage db sync" placement
4、修改apache配置檔案
[root@controller ~]# vim /etc/httpd/conf.d/00-placement-api.conf
Listen 8778
<VirtualHost *:8778>
WSGIProcessGroup placement-api
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess placement-api processes=3 threads=1 user=placement group=placement
WSGIScriptAlias / /usr/bin/placement-api
<IfVersion >= 2.4>
ErrorLogFormat "%M"
</IfVersion>
ErrorLog /var/log/placement/placement-api.log
#SSLEngine On
#SSLCertificateFile ...
#SSLCertificateKeyFile ...
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>
Alias /placement-api /usr/bin/placement-api
<Location /placement-api>
SetHandler wsgi-script
Options +ExecCGI
WSGIProcessGroup placement-api
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
</Location>
5、重新啟動Apache服務
[root@controller ~]# systemctl restart httpd
[root@controller ~]# systemctl status httpd
6、通路placement的API位址,可傳回json格式
[root@controller ~]# curl 10.0.0.11:8778
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}
驗證Placement
在Controller節點
1、擷取admin使用者憑證
[root@controller ~]# source admin-openrc
2、placement狀态檢查
[root@controller ~]# placement-status upgrade check
+----------------------------------+
| Upgrade Check Results |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success |
| Details: None |
+----------------------------------+
| Check: Incomplete Consumers |
| Result: Success |
| Details: None |
+----------------------------------+
3、安排pip工具
[root@controller ~]# pip --version
-bash: pip: command not found
[root@controller ~]# wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
...
2021-12-03 17:56:29 (12.5 KB/s) - ‘get-pip.py’ saved [1908226/1908226]
[root@controller ~]# python get-pip.py
[root@controller ~]# pip --version
pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (python 2.7)
4、用pip安裝osc-placement插件
[root@controller ~]# pip install osc-placement
5、列出可用資源和特性
[root@controller ~]# openstack --os-placement-api-version 1.2 resource class list \
--sort-column name