天天看點

手動部署OpenStack Train雙節點(四)

安裝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

  1. 擷取admin使用者憑證
[root@controller ~]# source admin-openrc      
  1. 建立一個叫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                             |
+---------------------+----------------------------------+      
  1. 将glance使用者、service項目、admin角色綁定
[root@controller ~]# openstack role add --project service --user placement admin      
  1. 建立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                        |
+-------------+----------------------------------+      
  1. 建立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、安裝配置元件

  1. 安裝包
[root@controller ~]# yum install openstack-placement-api -y      
  1. 修改配置檔案
  • 把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      
  1. 初始化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      

繼續閱讀