安裝Openstack 個人翻譯.....(4)Identity Service --2


這邊的內容是本人參考Openstack DOC加上自己的安裝心得所寫,由於本人學識尚淺若有錯誤在請留言告知~謝謝 <(_ _)>

設定使用者(user)、承租者(tenant)與角 色(role)
在你安裝好 Identity Service 後需要設定使用者、承租者和角色來做驗證比對。這些通 常准許所能使用的 service 和終端(endpoints)。
基本上,你會指示用戶名稱和密碼作為 identity Service 的服務,在這點上然後你可能 沒有創造任何使用者,所以你必須使用前面步驟中創建的授權 token
你也可以使用 keystone 的參數 --os-token 來略過或 是設定 OS_SERVICE_TOKEN環境變數,設定 OS_SERVICE_TOKENOS_SERVICE_ENDPOINT 給正在執行的 Identity Service。
以下請替換 ADMIN_TOKEN 成為你的認證token(也就是上一章節用openssl產生的密碼):
$ export OS_SERVICE_TOKEN=ADMIN_TOKEN
$ export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0



創建一個管理員的使用者:
接下來創建一個管理員使用者、角色與承租者,你將使用這個帳號作為管理員管理 openstack 的 cloud。
首先先將 Identity Service 建立一個特別的 _member_ 角色,Openstack 的 dashboard 會自動地授予參訪權限給扮演這個角色的使用者,你將會給予 admin 使用者參與這個角色:
  1. 建立 admin 使用者:ADMIN_PASS(我們採用12345678當作密碼)與ADMIN_EMAIL填入自己建立使用的資訊。
  2. $ keystone  user-create  --name=admin  --pass=ADMIN_PASS  --email=ADMIN_EMAIL

  3. 建立一個 admin 的角色:
  4. $ keystone  role-create  --name=admin

  5. 建立一個 admin 的承租者:
  6. $ keystone  tenant-create  --name=admin  --description="Admin Tenant"

  7. 現在你必須 link admin 使用者、admin 角色和 admin 承租者在一起透過 user-roleadd 這個選項參數
  8. $ keystone  user-role-add  --user=admin  --tenant=admin  --role=admin

  9. link admin 使用者、_member_ 角色和 admin 承租者:
  10. $ keystone  user-role-add  --user=admin  --role=_member_  --tenant=admin

建立一般使用者
接下來我們建立一個一般使用者、承租者並且 link 他們到一個特別的 _member_ 角 色。你將可以使用這個帳號做一般日常、非管理員的 openstack 雲端服務。你可以重複此步驟建立額外的雲端使用者帳號和密碼並跳過建立承租者的程序。


  • 建立 demo 使用者:DEMO_PASS(一樣12345678)與DEMO_EMAIL 設定合適的資料。

  • $ keystone user-create --name=demo --pass=DEMO_PASS --email=DEMO_EMAIL



  • 建立 demo 承租者:

  • $ keystone tenant-create --name=demo --description="Demo Tenant"



  • link demo 使用者、_member_角色和 demo 承租者:

  • $ keystone user-role-add --user=demo --role=_member_ --tenant=demo



    建立一個 service 承租者
    Openstack 的 service 也需要一個使用者名稱、承租者與角色來訪問其他 openstack 的 service。在基本的安裝裡 Openstack service 通常分享一個名為 service 的單一承租者。
    你將建立這個承租者使用一個額外的使用者名稱和角色來安裝和設定每一個 service。
    $ keystone tenant-create --name=service --description="Service Tenant"


    定義 service 和終端 API
    Identity Service 可以追蹤哪個 Openstack Service 被安裝和他們所在的網路位置,你必須 註冊每一個 service 在你的 openstack 設備,註冊 service 可以執行以下指令。
    • Keystone service-create:描述這個service。
    • Keystone endpoint-create:關聯這個 service 的終端 API
    你必須同時也要註冊 Identity Service 本身,使用 OS_SERVICE_TOKEN 環境變數如同之前 的方式來做認證。
    1. 建立一個 Identity Service 的服務項目:id 是隨機產生可能與表格不同
    2. $ keystone service-create --name=keystone --type=identity \
      --description="OpenStack Identity"
      +----------------+-----------------------------------------------+
      |      Property    |                           Value                           |
      +----------------+-----------------------------------------------+
      | description     |    OpenStack Identity                             |
      | id                   | 15c11a23667e427e91bc31335b45f4bd       |
      | name              | keystone                                               |
      | type                | identity                                               |
      +----------------+-----------------------------------------------+

    3. 指定終端 API 讓 Identity Service 藉由使用回傳的 service ID。
      當你指定一個公開API、內部 API 和 admin API 的 URLs 當作終端點,在這邊由於 controller 的 host name 已經被使用,所以做一個不同的port來當作 Identity Service 的 admin API。

    4. $ keystone endpoint-create \
      --service-id=$(keystone service-list | awk '/ identity / {print $2}') \
      --publicurl=http://controller:5000/v2.0 \
      --internalurl=http://controller:5000/v2.0 \
      --adminurl=http://controller:35357/v2.0
      +-------------+------------------------------------------+
      |    Property  |                      Value                       |
      +-------------+------------------------------------------+
      | adminurl   | http://controller:35357/v2.0             |
      | id              | 11f9c625a3b94a3f8e66bf4e5de2679f   |
      | internalurl | http://controller:5000/v2.0              |
      | publicurl   | http://controller:5000/v2.0               |
      | region       | regionOne                                         |
      | service_id | 15c11a23667e427e91bc31335b45f4bd    |
      +-------------+---------------------------------------------+
      ※你將需要建立一個額外的端點為每個service添加到你的 openstack 環境中,本章 節包括每個服務的安裝和終端指定服務的建立的步驟。


    驗證 Identity Service 的安裝
    1. 要驗證 Identity Service 的安裝與設定是否正確,我們清除OS_SERVICE_TOKEN與OS_SERVICE_ENDPOINT環境變數。
    2. $ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
      這些用來做開啟管理員使用者和註冊Identity Service的變數不再需要了。

    3. 現在你可以正常使用名字來做認證。

    4. 透過 admin 使用者與密碼來發送認證 token:
      $ keystone --os-username=admin --os-password=ADMIN_PASS \
      --os-auth-url=http://controller:35357/v2.0  token-get
      在回應中你會收到一個配對到你的 user id 的 token,這代表 Identity Service 正執 行在終端並且預期認證你的帳號。

    5. 確認認證動作如預期一樣。所以送出一個承租者的認證要求試試看。
    6. $ keystone --os-username=admin --os-password=ADMIN_PASS \
      --os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 \
      token-get
      你會收到一個包含你指定的承租者 id 的 token,此證實了你的使用者帳號如預期 被清楚定義成一個指定並且存在的承租者角色。

    7. 你可以設定你的--os-* 環境變數來簡化命令列的使用,我們撰寫一個擁有 admin 認證與終端的dmin-openrc.sh 檔案如下:
    8. export OS_USERNAME=admin
      export OS_PASSWORD=ADMIN_PASS
      export OS_TENANT_NAME=admin
      export OS_AUTH_URL=http://controller:35357/v2.0

    9. source這個檔案作為環境變數。
    10. $source admin-openrc.sh

    11. 驗證你的 admin-openrc.sh 設定是否正確。執行同樣指令但是不要使用--os-* 參 數:
    12. $ keystone token-get
      此時應該會收到包含指定承租者的 ID 的 token 這樣就能驗證你的環境變數設定是 正確的。

    13. 驗證你的 admin 帳戶可以授權執行管理員的指令
    14. $ keystone user-list
      +-----------------------------------------+-------+---------+---------------------------+
      | id                                                | name | enabled |              email              |
      +-----------------------------------------+-------+---------+---------------------------+
      | afea5bde3be9413dbd60e479fddf9228 | admin | True   | admin@example.com |
      | 32aca1f9a47540c29d6988091f76c934 | demo | True     | demo@example.com   |
      +-----------------------------------------+-------+---------+----------------------------+
      確認一下使用 keystone user-list 的 id 有沒有跟由 keystone user-role-list 指令呼叫 出來的 user_id 互相一樣,並且 admin 角色也被列出。
      此驗證可以確認你的帳號是擁有 admin 角色的並且匹配於 Identity Service 的 policy.json 檔案。
      $keystone user-role-list --user admin --tenant admin
      +---------------------------------+----------+----------------------------------+-----------------------------+
      |     id     |   name   |     user_id      |     tenant_id     |
      +---------------------------------+----------+----------------------------------+-----------------------------+
      | 9fe2ff9ee4384b1894a90878d3e92bab| _member_ | afea5bde3be9413dbd60e479fddf9228 | e519b772cb43474582fa303da62559e5|
      | 5d3b60b66f1f438b80eaae41a77b5951| admin | afea5bde3be9413dbd60e479fddf9228 | e519b772cb43474582fa303da62559e5|
      +---------------------------------+----------+----------------------------------+-----------------------------+
    ...........待續。

    留言