2015年12月8日 星期二

RHEL 的 OpenStack (四)--管理 Keystone 驗證服務

Keystone 驗證服務
  1. Keystone 包含的項目:
    • 租賃戶(Tenants)
    • 角色(Rules)
    • 使用者(Users)
    • 服務(Services)
    • 結束點(End points)
    • 分類 (Catalog)
    • 權杖 (Tokens)
  2. 增加服務到 Keystone 服務分類以及註冊結束點
    • # keystone service-create --name=SERVICENAME --type=SERVICETYPE --description="DESCRIPTION OF SERVICE"
    • ※PS: type 共有 identity , compute, network, image , object-store

    • # keystone endpoint-create --service-id SERVICEID --publicurl 'URL' --adminurl 'URL' --internalurl 'URL'
      ※PS: service-id 可由上一項指令取得!

    • # keystone service-list
  3. 移除服務以及結束點
    • # keystone endpoint-list
    • # keystone endpoint-delete ENDPOINTID
    • # keystone service-list
    • # keystone service-delete SERVICEID
  4. OpenStack 設定檔
    • # crudini --set /etc/keystone/keystone.conf DEFAULT admin_token abcdef1234567890
      1. Option: --set, --get, --del
      2. Configuration file : OpenStack configuration file 的位置
      3. Section : 設定檔內的項目名稱,如:[DEFAULT]
      4. Parameter : 設定用的參數
      5. Value : 參數值
練習1:RabbitMQ
  1. 登入 Keystone 主機
  2. 在 Keystone 服務中,啟用 Administrator 權力
    • # cat /root/keystonerc_admin
      export OS_USERNAME=admin
      export OS_TENANT_NAME=admin
      export OS_PASSWORD=redhat
      export OS_AUTH_URL=http://10.1.1.1:5000/v2.0/
      export OS_REGION_NAME=RegionOne
      export PS1='[\u@\h \W(keystone_admin)]\$'
    • # source /root/keystonerc_admin
  3. 檢查 Keystone 是否設定成 OpenStack 的服務
    • # keystone service-list | grep keystone
    • # keystone catalog --service identity
  4. 所有 OpenStack 的服務,其後端資料與訊息的設定值,應存放在 /etc/SERVICE_NAME/SERVICE_NAME.conf 檔案內!
    • # grep "connection=mysql" /etc/keystone/keystone.conf
    • # grep rabbit /etc/keystone/keystone.conf
  5. 可連進 mysql 資料庫,確認一下 Keystone 所使用的資料表格!
    • # mysql -e 'use keystone; show tables;'

使用 keystone 指令管理使用者
  1. keystone 指令可用來管理使用者
    • # source ~/keystonerc_admin
    • # keystone user-create --name USERNAME --pass PASSWORD
    • # keystone user-list
    • # keystone user-delete USERID
  2. 利用 keystone 指令來管理租賃戶
    • # keystone tenant-create --name TENANTNAME
    • # keystone tenant-list
    • # keystone tenant-delete TENANTID
  3. 角色也可以利用 keystone 來定義
    • admin: 擁有管理者權限的角色
    • member: 專案成員的角色
    • # keystone role-create --name Member
  4. 使用者連結租賃戶與角色
    • # keystone user-role-add --user-id USERID --role-id ROLEID --tenant-id TENANTID
  5. 其他 keystone 指令
    • # keystone help
    • # keystone help user-role-list

練習2:利用keystone指令管理使用者
  1. # source /root/keystonerc_admin
  2. # keystone user-list
  3. # keystone role-list
  4. # keystone tenant-list
  5. # keystone user-role-list --user admin --tenant admin
  6. # keystone user-create --name joe --pass redhat
  7. # keystone tenant-create --name test
  8. # keystone user-role-add --user joe --role _member_ --tenant test
  9. # keystone user-role-list --user joe --tenant test
  10. # vim ~/keystonerc_joe
    export OS_USERNAME=joe
    export OS_TENANT_NAME=test
    export OS_PASSWORD=redhat
    export OS_AUTH_URL=http://172.25.0.10:5000/v2.0/
    export OS_REGION_NAME=RegionOne
    export PS1='[\u@\h \W(keystone_joe)]\$ '
  11. # source ~/keystonerc_joe
  12. # keystone token-get

Keystone 認證服務的除錯

<<重點觀念>>
  • 所有到達不同OpenStack服務API的要求,必須流經由 Keystone 所提供的驗證與授權的過程!
  • 任何發自於使用者指令的工作要求,均會帶有帳號密碼驗證值、屬哪一租賃戶,以及驗證的URL值!
  • 一旦通過身份驗證的使用者,會取得由 Keystone 發給的權杖,進行管理操作!
  • 例:一使用者通過使用 Nova 的驗證後,若要由 Glance 服務來產生新的實體,則會在 Nove 服務上,用權杖向 Glance 請求一新的實體影像檔,來進行實體的建立!
  • 在除 Keystone 的錯誤時,無法使用 /root/keystonerc_admin 的權限!可經由下列方式,取得兩項權杖參數:
    • # export SERVICE_TOKEN=$(crudini --get /etc/keystone/keystone.conf DEFAULT admin_token)
    • # export SERVICE_ENDPOINT=http://demo.example.com:35357/v2.0
練習3:
  1. # source /root/keystonerc_admin
  2. # glance image-list  -->沒找到網頁,認證失敗
  3. # cat /root/keystonerc_admin
  4. # vim /root/keystonerc_admin
  5. # source /root/keystonerc_admin
  6. # glance image-list -->現在變成不合理的認證值
  7. # grep -i ERROR /var/log/glance/*  --> port 不是 35357
  8. # grep -i 35357 /etc/glance/glance-api.conf
  9. # vim /etc/glance/glance-api.conf
    auth_port=353572 --> 改成 35357
  10. # systemctl restart openstack-glance-api
  11. # glance image-list