1. 程式人生 > >Openstack元件部署 — keystone(domain, projects, users, and roles)

Openstack元件部署 — keystone(domain, projects, users, and roles)

目錄

前文列表

Create a domain, projects, users, and roles

The Identity service provides authentication services for each OpenStack service. The authentication service uses a combination of domains, projects (tenants), users, and roles.

Identity service為每一個Openstack service都提供了身份認證的服務,而身份認證服務使用domains, projects (tenants), users, and roles

的組合來實現。

domain, projects, users, and roles的意義和作用

Create the default domain

在上一篇Openstack元件部署 — Keystone Install & Create service entity and API endpoints 中解釋了,因為MySQL資料庫裡預設是沒有任何authentication catalog services資訊的,但是在呼叫Keystone的服務時,首先就需要進行token的校驗,這樣顯然無法完成。所以如果想在這樣的情況下使用Keystone服務,我們可以為其指定一個臨時的Token(keystone.conf中的admin_token引數項),並且定義一個OS_TOKEN

系統變數,Keystone會通過匹配OS_TOKENadmin_token的值是否一致來確定是否能夠使用Keystone的服務。如果不一致時,就會觸發An unexpected error prevented the server from fulfilling your request. 的ERROR。

載入臨時token的環境變數

[root@controller ~]# cat auth_token
export OS_TOKEN=c44048d3212d3f977643
export OS_URL=http://controller.jmilk.com:35357/v3
export OS_IDENTITY_API_VERSION=3
[root@controller ~]# source auth_token

建立domain

[[email protected] ~]# openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Default Domain                   |
| enabled     | True                             |
| id          | 011fbf8c04f1479ab1a4e49b019b22d1 |
| name        | default                          |
+-------------+----------------------------------+

Create the service project(tenant)

This guide uses a service project that contains a unique user for each service that you add to your environment.
每一個Openstack service在service tenant都含有唯一的user。Openstack需要使用這個service tenant來將所有的Openstack service關聯起來。

[[email protected] ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
| enabled     | True                             |
| id          | 358f241ed9ad4a2faf1e9796d761e4bf |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
+-------------+----------------------------------+

建立用於管理的使用者、租戶和角色

Create the admin project(tenant)

Create an administrative project, user, and role for administrative operations in your environment
為了在你的環境上執行管理操作,需要建立管理專案、使用者和角色。

建立一個屬於default域的tenant(租戶)

[[email protected] ~]# openstack project create --domain default --description "Admin Project" admin
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Admin Project                    |
| domain_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
| enabled     | True                             |
| id          | 6c04f1d3ecd04aafb427f4f8d01be534 |
| is_domain   | False                            |
| name        | admin                            |
| parent_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
+-------------+----------------------------------+

Note:Openstack會使用動態的id

Create the admin user

需要為user設定密碼

[[email protected] ~]# openstack user create --domain default --password-prompt admin
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | 011fbf8c04f1479ab1a4e49b019b22d1 |
| enabled   | True                             |
| id        | d5e5331d665540159f1bfabb7327eca5 |
| name      | admin                            |
+-----------+----------------------------------+

Create the admin role

[[email protected] ~]# openstack role create admin
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 192f3667f323410b83497d8898d2ec80 |
| name      | admin                            |
+-----------+----------------------------------+

Add the admin role to the admin project and user

新增admin tenant、admin user到admin role中

[[email protected] ~]# openstack role add --project admin --user admin admin

Note:Any roles that you create must map to roles specified in the policy.json file in the configuration file directory of each OpenStack service. The default policy for most services grants administrative access to the admin role.

注意:所有建立的roles都必須要對映到每一個Openstack service特定的policy.json配置檔案中,預設的policy會將大多數的services的管理許可權授予admin角色。所以上面我們建立了default domainadmin tenantadmin useradmin role,並且將tenantuser繫結到了roles中,這樣的話tenantuser就擁有了admin role的許可權。

/etc/keystone/policy.json

建立一般使用者、租戶和角色

Create the demo project(tenant)

Regular (non-admin) tasks should use an unprivileged project and user. As an example, this guide creates the demo project and user.
在Openstack中一般的任務我們都應該使用一個沒有太多許可權的project(tenant)user來操作。在這裡我們建立一個demo user。

[[email protected] ~]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
| enabled     | True                             |
| id          | 4e069f1af37c4a37910e838365213530 |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | 011fbf8c04f1479ab1a4e49b019b22d1 |
+-------------+----------------------------------+

Note:Do not repeat this step when creating additional users for this project.

Create the demo user:

[[email protected] ~]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | 011fbf8c04f1479ab1a4e49b019b22d1 |
| enabled   | True                             |
| id        | 27549a09628a453ea4fea34feb201855 |
| name      | demo                             |
+-----------+----------------------------------+

Create the user role

[[email protected] ~]# openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | ed533bf15c0b4487a7023c3d489c9411 |
| name      | user                             |
+-----------+----------------------------------+

Add the user role to the demo project and user

[[email protected] ~]# openstack role add --project demo --user demo user

Verify operation 驗證操作

在安裝Openstack的其他services之前,我們需要確定Keystone service能夠正常使用。
Step1.For security reasons, disable the temporary authentication token mechanism
出於安全考慮,我們現在可以禁用掉臨時的認證token機制。
Edit the /etc/keystone/keystone-paste.ini file and remove admin_token_auth from the [pipeline:public_api], [pipeline:admin_api], and [pipeline:api_v3] sections.
/etc/keystone/keystone-paste.ini檔案中的節點[pipeline:public_api][pipeline:admin_api][pipeline:api_v3]中的admin_token_auth引數刪除。

vim /etc/keystone/keystone-paste.ini

[pipeline:public_api]
# The last item in this pipeline must be public_service or an equivalent
# application. It cannot be a filter.
pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension public_service

[pipeline:admin_api]
# The last item in this pipeline must be admin_service or an equivalent
# application. It cannot be a filter.
pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension s3_extension admin_service

[pipeline:api_v3]
# The last item in this pipeline must be service_v3 or an equivalent
# application. It cannot be a filter.
pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension_v3 s3_extension service_v3

Step2.Unset the temporary OS_TOKEN and OS_URL environment variables

[root@controller ~]# unset OS_TOKEN OS_URL

Step3.As the admin user, request an authentication token
使用admin user來請求獲取authentication token
獲取一個authentication token需要指定:

  • --os-auth-url確定keystone service,並且admin使用者需要使用Post:35357來區分,Post:35357是admin專用的Endpoint。
  • --os-project-domain-name確定一個admin tenant所處在的domain
  • --os-user-domain-name確定admin user所處在的domain
  • os-project-name確定admin tenant
  • --os-username確定admin user,這樣才能唯一的定位到一個user,之後在指定申請token
    注意:因為在之前建立了admin tenant、admin user、admin role,就是說現在資料庫中已經存在了admin user的相關資訊,所以keystone可以在不需要使用臨時token的情況下直接申請admin user的token。 —— 也就是說如果一個User希望從Keystone上申請到一個Token並以此來登陸Openstack進行操作的話,首先需要建立這個User和對應的tenant並將其加入role中。
[[email protected] ~]# openstack --os-auth-url http://controller.jmilk.com:35357/v3 \
>   --os-project-domain-name default --os-user-domain-name default \
>   --os-project-name admin --os-username admin token issue
Password: 
+------------+----------------------------------------------------------------------------+
| Field      | Value                                                                      |
+------------+----------------------------------------------------------------------------+
| expires    | 2016-06-15T16:15:15.389159Z                                                |
| id         | gAAAAABXYXEDwdmX7VMLYkNas7r_aAz91zrfUvoJCwGLIE6qOWcdjVH9NjJwNl3bkeYaspbrm9 |
|            | _Ygm_Eba8kUNUnipTHM8D9ASOxOV4BQUmn-                                        |
|            | uSZO9vmrHy91B7vx3vfidKz2_83X5PhOMhZxrFkluYzsJtIuH9T0UTiuaVA_THJ4zNOXzKYEtA |
| project_id | 6c04f1d3ecd04aafb427f4f8d01be534                                           |
| user_id    | d5e5331d665540159f1bfabb7327eca5                                           |
+------------+----------------------------------------------------------------------------+

ERROR:Unable to establish connection to http://controller:35357/v3/auth/tokens
出現這個錯誤時候,檢查認證Endpoint URL選項--os-auth-url的引數是否正確,openstack需要通過Endpoint URL來確定auth-Keystone服務。

Step4.As the demo user, request an authentication token

[[email protected] ~]# openstack --os-auth-url http://controller.jmilk.com:5000/v3 \
>   --os-project-domain-name default --os-user-domain-name default \
>   --os-project-name demo --os-username demo token issue
Password: 
+------------+----------------------------------------------------------------------------+
| Field      | Value                                                                      |
+------------+----------------------------------------------------------------------------+
| expires    | 2016-06-15T16:26:46.556759Z                                                |
| id         | gAAAAABXYXO2Tn4c9mO5TAY5gBeGxgSRmbAkDRfB8gyuELVtAB6BVARzY8d6OL9diCtAy-     |
|            | mNyY3uA7DFBrnKoTtyu5jX5oEf9ax61q8StnYjNDtRdiOKLN2Q23f-                     |
|            | jNYALrWUkr91Z98oLD7LVrjRLcSaC-XCpK5tB-kU-Piyu7Y0rzbEXM06AIo                |
| project_id | 4e069f1af37c4a37910e838365213530                                           |
| user_id    | 27549a09628a453ea4fea34feb201855                                           |
+------------+----------------------------------------------------------------------------+

Note:This command uses the password for the demo user and API port 5000 which only allows regular (non-admin) access to the Identity service API.
注意:非管理員賬戶使用Port:5000來定位Keystone service。

Step5.使用admin賬戶身份來檢視project、user、role的列表

[[email protected] ~]# openstack --os-auth-url http://controller.jmilk.com:35357/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name admin --os-username admin project list
Password: 
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 358f241ed9ad4a2faf1e9796d761e4bf | service |
| 4e069f1af37c4a37910e838365213530 | demo    |
| 6c04f1d3ecd04aafb427f4f8d01be534 | admin   |
+----------------------------------+---------+

[[email protected] ~]# openstack --os-auth-url http://controller.jmilk.com:35357/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name admin --os-username admin user list
Password: 
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 27549a09628a453ea4fea34feb201855 | demo  |
| d5e5331d665540159f1bfabb7327eca5 | admin |
+----------------------------------+-------+

[[email protected] ~]# openstack --os-auth-url http://controller.jmilk.com:35357/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name admin --os-username admin role list
Password: 
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 192f3667f323410b83497d8898d2ec80 | admin |
| ed533bf15c0b4487a7023c3d489c9411 | user  |
+----------------------------------+-------+

Create OpenStack client environment scripts

The previous section used a combination of environment variables and command options to interact with the Identity service via the openstack client. To increase efficiency of client operations, OpenStack supports simple client environment scripts also known as OpenRC files. These scripts typically contain common options for all clients, but also support unique options。
在上面的操作中,我們通過openstack client使用了環境變數和指令選項的組合來進行操作。為了增加openstack client的操作效率(每一次都需要使用--os-auth-url這類的選項實在是非常繁複),Openstack支援簡易的環境指令碼,也稱之為OpenRC檔案。這些指令碼可以包含有常用的openstack client選項,但是每一個指令碼只支援唯一的選項值。簡而言之,使用這些指令碼能夠讓我們不需要為每一條openstack client指令都新增這麼多的認證選項。

Edit the admin-openrc file and add the following content

為admin user建立OpenRC檔案
vim ~/admin-openrc

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=fanguiju            #給出admin的password
export OS_AUTH_URL=http://controller.jmilk.com:35357/v3            #給出admin的Endpoint
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

Edit the demo-openrc file and add the following content

為demo user建立OpenRC檔案
vim ~/demo-openrc

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=fanguiju
export OS_AUTH_URL=http://controller.jmilk.com:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

Using the scripts

[[email protected] ~]# . admin-openrc
[[email protected] ~]# openstack token issue
+------------+----------------------------------------------------------------------------+
| Field      | Value                                                                      |
+------------+----------------------------------------------------------------------------+
| expires    | 2016-06-15T16:59:48.937673Z                                                |
| id         | gAAAAABXYXt0PviJjz-fzA89XNr7w2KxM5jOOzg868rTDLXE-                          |
|            | 2l__BMNLBYDX0nWKlrjlLRvqwFXMpAL2WhAlZVEZis6Ud-dqcSA4JV-                    |
|            | 4Ehr9aRCwSK3cm4L_eHnoLeAoDU-                                               |
|            | 40RYHViL0GB3kav8ML5DbTGNRPq3aHVNsvQHgkfAWiHKm9YM5xo                        |
| project_id | 6c04f1d3ecd04aafb427f4f8d01be534                                           |
| user_id    | d5e5331d665540159f1bfabb7327eca5                                           |
+------------+----------------------------------------------------------------------------+

再次獲取admin的token變得非常的簡單

最後

到這裡Keystone元件的安裝就全部結束了。 : )

相關推薦

Openstack元件部署keystone(domain, projects, users, and roles)

目錄 前文列表 Create a domain, projects, users, and roles The Identity service provides authentication services for each Open

Openstack元件部署 — 將一個自定義 Service 新增到 Keystone

目錄 Keystone 認證流程 User 使用憑證(username/password) 到 keystone 驗證並獲得一個臨時的 Token 和 Generic catalog(全域性目錄),臨時的 Token 會儲存在 keystone-

Openstack元件部署 — Nova_Install and configure a compute node

目錄 前文列表 Prerequisites 先決條件 從這一篇博文開始,Openstack組建部署進入了多節點的階段,我們再重新回顧一下當初我們擬定的Network拓撲: IP Address Config: 多節點部署首先要

Openstack 安裝部署指南翻譯系列 之 Keystone服務安裝(Identity)

openstack 翻譯 keystone安裝OpenStack系統由分開安裝的幾個關鍵服務組成。這些服務可根據其他雲需求一起工作,包括計算(Compute),身份(Identity),網絡(Networking),鏡像(Image),塊存儲(Block Storage),對象存儲(Object Storag

openstack項目【day24】:OpenStack mitaka部署

系統版本 fig 插件 val interface 認證服務 更新 per 正在 前言: openstack的部署非常簡單,簡單的前提建立在紮實的理論功底,本人一直覺得,玩技術一定是理論指導實踐,網上遍布個種搭建方法都可以實現一個基本的私有雲環境,但是諸位可曾發現,很多

openstack-基本部署(一)

openstack-基本部署(一)這個案例網絡規劃如下:這個案例網絡規劃如下:管理網絡使用10.0.0.0/24 網關:10.0.0.1提供商網絡在203.0.113.0/24 網關為203.0.113.1此外,所有的節點名稱要能解析,IP地址解析為管理網段的地址。例如:controller對應10.0.0

Openstack 安裝部署指南翻譯系列 之 網絡

openstack 翻譯 網絡網絡包括兩種類型,網絡選項1:提供商網絡(Provider networks)和網絡選項2:自助網絡(Self-service networks),其中網絡選項2:自助網絡(Self-service networks)能夠實現更加高級的網絡功能,能夠實現網絡選項1的所有功能,因此

Openstack安裝部署指南翻譯系列 之 硬件需求

openstack 翻譯1.1.1.1. 控制節點控制器節點運行身份服務,鏡像服務,計算的管理部分,網絡的管理部分,各種網絡代理和儀表板。它還包括支持服務,如SQL數據庫,消息隊列和NTP。可選地,控制節點運行塊存儲,對象存儲,編排和計量服務的部分。控制器節點至少需要兩個網絡接口。1.1.1.2. 計算節點計

Openstack 安裝部署指南翻譯系列 之 Horizon服務安裝(Dashboad)

openstack 翻譯 horizon安裝1.1.1.1. Horizon服務安裝(Dashboad)本節介紹如何在控制器節點上安裝和配置儀表板。儀表板所需的唯一核心服務是身份服務。您可以使用儀表板與其他服務(如鏡像服務,計算和網絡)結合使用。您還可以在具有獨立服務(如對象存儲)的環境中使用儀表板。註意:本

Openstack 安裝部署指南翻譯系列 之 Cinder服務安裝(Block Storage)

openstack 翻譯 cinder安裝1.1.1.1. Cinder服務安裝(Block Storage)塊存儲服務(cinder)為訪客實例提供塊存儲設備。存儲設置方法由塊存儲驅動程序確定,或者在多後端配置的情況下確定驅動程序。有各種可用的驅動程序:NAS / SAN,NFS,iSCSI,Ceph等。塊

Openstack 安裝部署指南翻譯系列 之 概況

openstack 翻譯概況Openstack項目是支持所有類型的雲環境的一個開源雲計算平臺。該項目旨在簡單實施,大規模可擴展性和豐富的功能。來自世界各地的雲計算專家為項目做出了貢獻。OpenStack通過各種互補服務提供基礎設施即服務(IaaS)解決方案。每個服務都提供了一個便於集成的應用程序編程接口(AP

論文筆記-Joint Deep Modeling of Users and Items Using Reviews for Recommendation

一個 solved default view http ati onf 評分 分享 基本思路:利用用戶和商品的評論構建CNN預測評分。 網絡結構: user review網絡與 item review網絡結構一致,僅就前者進行說明 從user review tex

openstack安裝部署

user rabbit ubun clone sudoers art org -m 就是 系統:ubuntu16.4 amd64 ,不得不說是個二流貨,中文版那麽大個bug就是不解決。DevStack安裝 1.$ sudo useradd -s /bin/bash -d /

6.24(openstack前期部署

qemu 啟動 error dhcp enable err 關閉 gre remove esxi就是vmwarevcenter管理esxi,esxi很好安裝,但是vecenter會特別麻煩kvm是內核虛擬化技術################################

6.25(openstack環境部署

enable 禁用selinux 兩種 ppi list med 本機 -s utf-8 安裝有轉發功能的DNSyum -y install bind bind-chrootvim /etc/named.confoptions {listen-on port 53 { 1

技術分享:OpenStack DVR部署與分析

network 所有 emc 狀態 是把 oca l3-agent meta 進入 概述 為了提高neutron網絡服務的魯棒性與性能,OpenStack從J版開始正式加入的DVR(Distributed Virtual Router)服務,它將原本集中在網絡節點的部分服務

兩小時openstack環境搭建(keystone)

一、新建虛擬機器4g記憶體2cpu,unbutu系統 安裝並設定時間同步服務apt updateapt install chrony vim /etc/chrony/chrony.conf service chrony restartcompute上apt updateapt install chro

openstack 自動化部署/離線部署

前言 openstack如何部署,怎樣使用,在官網上很是詳細,即使是linux小白使用者,按照官網上一步一步做起來,還是可以讓雲平臺跑起來的。使用linux是離不開shell,我們可以使用shell來自動化部署openstack平臺。其實,說是自動化其實也不是,只是把繁瑣的配置檔案,

Coupled Dictionary and Feature Space Learning with Applications to Cross-Domain Image Synthesis and

聯合字典學習的目標函式: 和是來自兩個不同領域的n個無標籤資料對,維度分別為。  表示字典學習的能量項,它典型地關於資料重構誤差。聯合能量項調整觀察到的字典和,或結果係數和之間的關係。注意分別是的字典原子的數目。 在我們的工作中,我們考慮的稀疏表示的公式,因為它已被證明在

Ceilometer 18、openstack元件api框架分析

以gnocchi-api為例具體分析openstack元件api啟動流程和框架 1 setup.cfg分析 setup.cfg中有: wsgi_scripts中gnocchi-api = gnocchi.rest.app:build_wsgi_app 2 setup.py分析 s