設定時間同步:
對于openstack來說,時間同步非常重要,是以一定要保證所有服務的時間一直,下面對世界做同步:
1
2
3
4
<code>timedatectl list-timezones|</code><code>grep</code> <code>Shanghai 檢視時區</code>
<code>timedatectl </code><code>set</code><code>-timezone Asia</code><code>/Shanghai</code> <code>設定時區</code>
<code>timedatectl </code><code>set</code><code>-</code><code>local</code><code>-rtc </code><code>yes</code> <code>把 boolean 替換成</code><code>yes</code><code>則表示使用本地時間,替換成no則表示是UTC時間</code>
<code>ntpdate time1.aliyun.com 同步時間</code>
啟動資料庫服務
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<code>[root@linux-node1 ~]</code><code># systemctl enable mariadb.service 設定開機自啟動</code>
<code>Created </code><code>symlink</code> <code>from </code><code>/etc/systemd/system/multi-user</code><code>.target.wants</code><code>/mariadb</code><code>.service to </code><code>/usr/lib/systemd/system/mariadb</code><code>.service.</code>
<code>[root@linux-node1 ~]</code><code># systemctl start mariadb.service 啟動資料庫</code>
<code>[root@linux-node1 ~]</code><code># mysql_secure_installation 初始化并設定密碼</code>
<code>NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB</code>
<code> </code><code>SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!</code>
<code>In order to log into MariaDB to secure it, we'll need the current</code>
<code>password </code><code>for</code> <code>the root user. If you've just installed MariaDB, and</code>
<code>you haven't </code><code>set</code> <code>the root password yet, the password will be blank,</code>
<code>so you should just press enter here.</code>
<code>Enter current password </code><code>for</code> <code>root (enter </code><code>for</code> <code>none): </code>
<code>OK, successfully used password, moving on...</code>
<code>Setting the root password ensures that nobody can log into the MariaDB</code>
<code>root user without the proper authorisation.</code>
<code>Set root password? [Y</code><code>/n</code><code>] y</code>
<code>New password: </code>
<code>Re-enter new password: </code>
<code>Password updated successfully!</code>
<code>Reloading privilege tables..</code>
<code> </code><code>... Success!</code>
<code>By default, a MariaDB installation has an anonymous user, allowing anyone</code>
<code>to log into MariaDB without having to have a user account created </code><code>for</code>
<code>them. This is intended only </code><code>for</code> <code>testing, and to </code><code>make</code> <code>the installation</code>
<code>go a bit smoother. You should remove them before moving into a</code>
<code>production environment.</code>
<code>Remove anonymous </code><code>users</code><code>? [Y</code><code>/n</code><code>] y</code>
<code>Normally, root should only be allowed to connect from </code><code>'localhost'</code><code>. This</code>
<code>ensures that someone cannot guess at the root password from the network.</code>
<code>Disallow root login remotely? [Y</code><code>/n</code><code>] y</code>
<code>By default, MariaDB comes with a database named </code><code>'test'</code> <code>that anyone can</code>
<code>access. This is also intended only </code><code>for</code> <code>testing, and should be removed</code>
<code>before moving into a production environment.</code>
<code>Remove </code><code>test</code> <code>database and access to it? [Y</code><code>/n</code><code>] y</code>
<code> </code><code>- Dropping </code><code>test</code> <code>database...</code>
<code> </code><code>- Removing privileges on </code><code>test</code> <code>database...</code>
<code>Reloading the privilege tables will ensure that all changes made so far</code>
<code>will take effect immediately.</code>
<code>Reload privilege tables now? [Y</code><code>/n</code><code>] y</code>
<code>Cleaning up...</code>
<code>All </code><code>done</code><code>! If you've completed all of the above steps, your MariaDB</code>
<code>installation should now be secure.</code>
<code>Thanks </code><code>for</code> <code>using MariaDB!</code>
配置rabbitMQ消息隊列
48
49
50
<code>[root@linux-node1 ~]</code><code># systemctl enable rabbitmq-server.service #設定開機啟動</code>
<code>Created </code><code>symlink</code> <code>from </code><code>/etc/systemd/system/multi-user</code><code>.target.wants</code><code>/rabbitmq-server</code><code>.service to </code><code>/usr/lib/systemd/system/rabbitmq-server</code><code>.service.</code>
<code>[root@linux-node1 ~]</code><code># systemctl start rabbitmq-server.service #啟動消息隊列</code>
<code>[root@linux-node1 ~]</code><code># rabbitmqctl add_user openstack openstack #給消息隊列增加openstack使用者和密碼</code>
<code>Creating user </code><code>"openstack"</code> <code>...</code>
<code>[root@linux-node1 ~]</code><code># rabbitmqctl set_permissions openstack ".*" ".*" ".*" #給openstack設定消息隊列的權限</code>
<code>Setting permissions </code><code>for</code> <code>user </code><code>"openstack"</code> <code>in</code> <code>vhost </code><code>"/"</code> <code>...</code>
<code>[root@linux-node1 ~]</code><code># rabbitmq-plugins list #檢視消息隊列插件</code>
<code> </code><code>Configured: E = explicitly enabled; e = implicitly enabled</code>
<code> </code><code>| Status: * = running on rabbit@linux-node1</code>
<code> </code><code>|/</code>
<code>[ ] amqp_client 3.6.5</code>
<code>[ ] cowboy 1.0.3</code>
<code>[ ] cowlib 1.0.1</code>
<code>[ ] mochiweb 2.13.1</code>
<code>[ ] rabbitmq_amqp1_0 3.6.5</code>
<code>[ ] rabbitmq_auth_backend_ldap 3.6.5</code>
<code>[ ] rabbitmq_auth_mechanism_ssl 3.6.5</code>
<code>[ ] rabbitmq_consistent_hash_exchange 3.6.5</code>
<code>[ ] rabbitmq_event_exchange 3.6.5</code>
<code>[ ] rabbitmq_federation 3.6.5</code>
<code>[ ] rabbitmq_federation_management 3.6.5</code>
<code>[ ] rabbitmq_jms_topic_exchange 3.6.5</code>
<code>[ ] rabbitmq_management 3.6.5</code>
<code>[ ] rabbitmq_management_agent 3.6.5</code>
<code>[ ] rabbitmq_management_visualiser 3.6.5</code>
<code>[ ] rabbitmq_mqtt 3.6.5</code>
<code>[ ] rabbitmq_recent_history_exchange 1.2.1</code>
<code>[ ] rabbitmq_sharding 0.1.0</code>
<code>[ ] rabbitmq_shovel 3.6.5</code>
<code>[ ] rabbitmq_shovel_management 3.6.5</code>
<code>[ ] rabbitmq_stomp 3.6.5</code>
<code>[ ] rabbitmq_top 3.6.5</code>
<code>[ ] rabbitmq_tracing 3.6.5</code>
<code>[ ] rabbitmq_trust_store 3.6.5</code>
<code>[ ] rabbitmq_web_dispatch 3.6.5</code>
<code>[ ] rabbitmq_web_stomp 3.6.5</code>
<code>[ ] rabbitmq_web_stomp_examples 3.6.5</code>
<code>[ ] sockjs 0.3.4</code>
<code>[ ] webmachine 1.10.3</code>
<code>[root@linux-node1 ~]</code><code># rabbitmq-plugins enable rabbitmq_management #加載消息隊列的管理插件</code>
<code>The following plugins have been enabled:</code>
<code> </code><code>mochiweb</code>
<code> </code><code>webmachine</code>
<code> </code><code>rabbitmq_web_dispatch</code>
<code> </code><code>amqp_client</code>
<code> </code><code>rabbitmq_management_agent</code>
<code> </code><code>rabbitmq_management</code>
<code>Applying plugin configuration to rabbit@linux-node1... started 6 plugins.</code>
<code>[root@linux-node1 ~]</code><code># systemctl restart rabbitmq-server.service #重新開機消息隊列服務</code>
消息隊列服務驗證
<code>[root@linux-node1 ~]</code><code># lsof -i :15672</code>
<code>COMMAND PID USER FD TYPE DEVICE SIZE</code><code>/OFF</code> <code>NODE NAME</code>
<code>beam.smp 6370 rabbitmq 53u IPv4 37357 0t0 TCP *:15672 (LISTEN)</code>
<code>在浏覽器中輸入:192.168.56.11:15672,使用guest 賬号和guest密碼登入</code>
<a href="http://s2.51cto.com/wyfs02/M01/8C/21/wKioL1hjVw7QoB68AAD_UgwKPok153.png-wh_500x0-wm_3-wmp_4-s_3001946383.png" target="_blank"></a>
keystone認證服務
Keystone在N版已經是V3版本。在Keystone中主要涉及以下幾個概念:
User:使用服務的使用者,可以是人,服務或者系統,隻要是使用了openstack服務的對象都可以稱為使用者
project(tenant)租戶,可以了解為一個人,項目或者組織擁有的資源的合集。在一個租戶中可以擁有很多個使用者,這些使用者可以根據權限的劃分使用租戶中的資源
Role:角色,用于配置設定操作的權限。角色可以被指定給使用者,使得該使用者獲得角色對應的操作權限
Token:認證成功後,keystone會生成一串比特值或者字元串,用來作為通路資源的令牌,token中有可通路資源的範圍和有效時間
Keystone V3 做出了許多變化和改進,我們選取其中較為重要的進行闡述:
将 Tenant 改稱為 Project
引入 Domain 的概念
引入 Group 的概念
将 Tenant 改為 Project 并在其上添加 Domain 的概念,這更加符合現實世界和雲服務的映射。
V3 利用 Domain 實作真正的多租戶(multi-tenancy)架構,Domain 擔任 Project 的高層容器。雲服務的客戶是 Domain 的所有者,他們可以在自己的 Domain 中建立多個 Projects、Users、Groups 和 Roles。通過引入 Domain,雲服務客戶可以對其擁有的多個 Project 進行統一管理,而不必再向過去那樣對每一個 Project 進行單獨管理。
Group 是一組 Users 的容器,可以向 Group 中添加使用者,并直接給 Group 配置設定角色,那麼在這個 Group 中的所有使用者就都擁有了 Group 所擁有的角色權限。通過引入 Group 的概念,Keystone V3 實作了對使用者組的管理,達到了同時管理一組使用者權限的目的。這與 V2 中直接向 User/Project 指定 Role 不同,使得對雲服務進行管理更加便捷。
<a href="http://s3.51cto.com/wyfs02/M01/8C/23/wKioL1hjbD6DP3erAADzB-xJUMQ881.png" target="_blank"></a>
建立庫及使用者
在資料庫中建立庫和使用者(這裡為了友善會把後面用到cinder,glance ,neutron,等服務的賬号一并建立到資料庫中
<code>CREATE DATABASE keystone;</code>
<code>GRANT ALL PRIVILEGES ON keystone.* TO </code><code>'keystone'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'keystone'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON keystone.* TO </code><code>'keystone'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'keystone'</code><code>;</code>
<code>CREATE DATABASE glance;</code>
<code>GRANT ALL PRIVILEGES ON glance.* TO </code><code>'glance'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'glance'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON glance.* TO </code><code>'glance'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'glance'</code><code>;</code>
<code>CREATE DATABASE nova;</code>
<code>GRANT ALL PRIVILEGES ON nova.* TO </code><code>'nova'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON nova.* TO </code><code>'nova'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>CREATE DATABASE nova_api;</code>
<code>GRANT ALL PRIVILEGES ON nova_api.* TO </code><code>'nova'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON nova_api.* TO </code><code>'nova'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>CREATE DATABASE neutron;</code>
<code>GRANT ALL PRIVILEGES ON neutron.* TO </code><code>'neutron'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'neutron'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON neutron.* TO </code><code>'neutron'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'neutron'</code><code>;</code>
<code>CREATE DATABASE cinder;</code>
<code>GRANT ALL PRIVILEGES ON cinder.* TO </code><code>'cinder'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'cinder'</code><code>;</code>
<code>GRANT ALL PRIVILEGES ON cinder.* TO </code><code>'cinder'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'cinder'</code><code>;</code>
執行過程:
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<code>[root@linux-node1 ~]</code><code># mysql -uroot -p</code>
<code>Enter password: </code><code>#用初始化時候設定的密碼</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO </code><code>'keystone'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'keystone'</code><code>;</code>
<code>Query OK, 0 rows affected (0.00 sec)</code>
<code>MariaDB [(none)]> CREATE DATABASE glance;</code>
<code>Query OK, 1 row affected (0.00 sec)</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO </code><code>'glance'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'glance'</code><code>;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO </code><code>'glance'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'glance'</code><code>;</code>
<code>MariaDB [(none)]> CREATE DATABASE nova;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO </code><code>'nova'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO </code><code>'nova'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>MariaDB [(none)]> CREATE DATABASE nova_api;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO </code><code>'nova'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO </code><code>'nova'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'nova'</code><code>;</code>
<code>MariaDB [(none)]> CREATE DATABASE neutron;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO </code><code>'neutron'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'neutron'</code><code>;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO </code><code>'neutron'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'neutron'</code><code>;</code>
<code>MariaDB [(none)]> CREATE DATABASE cinder;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO </code><code>'cinder'</code><code>@</code><code>'localhost'</code> <code>IDENTIFIED BY </code><code>'cinder'</code><code>;</code>
<code>MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO </code><code>'cinder'</code><code>@</code><code>'%'</code> <code>IDENTIFIED BY </code><code>'cinder'</code><code>;</code>
<code>MariaDB [(none)]> show databases;</code>
<code>+--------------------+</code>
<code>| Database |</code>
<code>| cinder |</code>
<code>| glance |</code>
<code>| information_schema |</code>
<code>| keystone |</code>
<code>| mysql |</code>
<code>| neutron |</code>
<code>| nova |</code>
<code>| nova_api |</code>
<code>| performance_schema |</code>
<code>9 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
<code>[root@linux-node1 ~]</code><code># grep -n '^[a-z]' /etc/keystone/keystone.conf </code>
<code>640:connection = mysql+pymysql:</code><code>//keystone</code><code>:[email protected]</code><code>/keystone</code>
<code>1472:servers = 192.168.56.11:11211 </code><code># memcache服務位址</code>
<code>2655:provider = fernet </code><code>#配置令牌</code>
<code>2665:driver = memcache </code><code>#選擇driver為memcache預設是sql</code>
<code>su</code> <code>-s </code><code>/bin/sh</code> <code>-c</code><code>"keystone-manage db_sync"</code> <code>keystone</code>
驗證初始化是否成功:
<code>[root@linux-node1 ~]</code><code># mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"</code>
<code>+------------------------+</code>
<code>| Tables_in_keystone |</code>
<code>| access_token |</code>
<code>| assignment |</code>
<code>| config_register |</code>
<code>| consumer |</code>
<code>| credential |</code>
<code>| endpoint |</code>
<code>| endpoint_group |</code>
<code>| federated_user |</code>
<code>| federation_protocol |</code>
<code>| group |</code>
<code>| id_mapping |</code>
<code>| identity_provider |</code>
<code>| idp_remote_ids |</code>
<code>| implied_role |</code>
<code>| local_user |</code>
<code>| mapping |</code>
<code>| migrate_version |</code>
<code>| nonlocal_user |</code>
<code>| password |</code>
<code>| policy |</code>
<code>| policy_association |</code>
<code>| project |</code>
<code>| project_endpoint |</code>
<code>| project_endpoint_group |</code>
<code>| region |</code>
<code>| request_token |</code>
<code>| revocation_event |</code>
<code>| role |</code>
<code>| sensitive_config |</code>
<code>| service |</code>
<code>| service_provider |</code>
<code>| token |</code>
<code>| trust |</code>
<code>| trust_role |</code>
<code>| user |</code>
<code>| user_group_membership |</code>
<code>| whitelisted_config |</code>
安裝memcached
<code>yuminstall memcached python-memcached </code>
<code>vim</code><code>/etc/sysconfig/memcached</code>
<code>[root@linux-node1 ~]</code><code># cat /etc/sysconfig/memcached </code>
<code>PORT=</code><code>"11211"</code>
<code>USER=</code><code>"memcached"</code>
<code>MAXCONN=</code><code>"1024"</code>
<code>CACHESIZE=</code><code>"64"</code>
<code>OPTIONS=</code><code>"-l 192.168.56.11,::1"</code>
通過keystone-manage生成token認證必要的資訊:
<code>[root@linux-node1 keystone]</code><code># keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone </code>
<code>[root@linux-node1 keystone]</code><code># keystone-manage credential_setup --keystone-user keystone --keystone-group keystone </code>
<code>[root@linux-node1 keystone]</code><code># keystone-manage bootstrap --bootstrap-password admin \</code>
<code>> --bootstrap-admin-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3/</code> <code>\</code>
<code>> --bootstrap-internal-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3/</code> <code>\</code>
<code>> --bootstrap-public-url http:</code><code>//192</code><code>.168.56.11:5000</code><code>/v3/</code> <code>\</code>
<code>> --bootstrap-region-</code><code>id</code> <code>RegionOne</code>
配置apache服務
<code>[root@linux-node1 keystone]</code><code># vim/etc/httpd/conf/httpd.conf #編輯配置檔案,</code>
<code>95 ServerName 192.168.56.11:80</code>
<code>配置軟連接配接</code>
<code>[root@linux-node1 keystone]</code><code># ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ </code>
<code>啟動服務:</code>
<code>[root@linux-node1 keystone]</code><code># systemctl enable httpd.service</code>
<code>Created </code><code>symlink</code> <code>from </code><code>/etc/systemd/system/multi-user</code><code>.target.wants</code><code>/httpd</code><code>.service to </code><code>/usr/lib/systemd/system/httpd</code><code>.service.</code>
<code>[root@linux-node1 keystone]</code><code># systemctl start httpd.service</code>
<code>[root@linux-node1 keystone]</code><code># </code>
<code>[root@linux-node1 keystone]</code><code># lsof -i :80</code>
<code>COMMAND PID USER FD TYPE DEVICE SIZE</code><code>/OFF</code> <code>NODE NAME</code>
<code>httpd 22891 root 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>httpd 22902 apache 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>httpd 22906 apache 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>httpd 22907 apache 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>httpd 22908 apache 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>httpd 22909 apache 4u IPv6 59157 0t0 TCP *:http (LISTEN)</code>
<code>配置環境變量:</code>
<code>export</code> <code>OS_USERNAME=admin</code>
<code>export</code> <code>OS_PASSWORD=admin</code>
<code>export</code> <code>OS_PROJECT_NAME=admin</code>
<code>export</code> <code>OS_USER_DOMAIN_NAME=Default</code>
<code>export</code> <code>OS_PROJECT_DOMAIN_NAME=Default</code>
<code>export</code> <code>OS_AUTH_URL=http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3</code>
<code>export</code> <code>OS_IDENTITY_API_VERSION=3</code>
<code>安裝openstack用戶端,如果不安裝是沒有openstack指令的</code>
<code>yum </code><code>install</code> <code>-y python-openstackclient </code>
<code>安裝完畢執行以下指令驗證:</code>
<code>[root@linux-node1 keystone]</code><code># openstack user list #檢視使用者清單</code>
<code>+----------------------------------+-------+</code>
<code>| ID | Name |</code>
<code>| b84c1614b79b40278e02bd6ed034cc6f | admin |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role list #檢視權限清單</code>
<code>| 9b0ba78cf70048efa8659220a3cebd06 | admin |</code>
<code>[root@linux-node1 keystone]</code><code># openstack project list #檢視項目清單</code>
<code>| 7ae0fb7deb5342d885a07c2c890a1ff4 | admin |</code>
<code>[root@linux-node1 keystone]</code><code># openstack endpoint list #檢視端點清單</code>
<code>+---------------+-----------+--------------+--------------+---------+-----------+------------------+</code>
<code>| ID | Region | Service Name | Service Type | Enabled | Interface | URL |</code>
<code>| 65f66a71d4624 | RegionOne | keystone | identity | True | internal | http:</code><code>//192</code><code>.168.5 |</code>
<code>| 2a0a80a0de1b6 | | | | | | 6.11:35357</code><code>/v3/</code> <code>|</code>
<code>| 503929 | | | | | | |</code>
<code>| 71f801be8bc54 | RegionOne | keystone | identity | True | admin | http:</code><code>//192</code><code>.168.5 |</code>
<code>| 7aca380c81b79 | | | | | | 6.11:35357</code><code>/v3/</code> <code>|</code>
<code>| 6b240a | | | | | | |</code>
<code>| b1caff56f31f4 | RegionOne | keystone | identity | True | public | http:</code><code>//192</code><code>.168.5 |</code>
<code>| dfabe5a8418c6 | | | | | | 6.11:5000</code><code>/v3/</code> <code>|</code>
<code>| 5e2839 | | | | | | |</code>
建立項目:
<code>[root@linux-node1 keystone]</code><code># openstack project create --domain default --description "Service Project" service</code>
<code>+-------------+----------------------------------+</code>
<code>| Field | Value |</code>
<code>| description | Service Project |</code>
<code>| domain_id | default |</code>
<code>| enabled | True |</code>
<code>| </code><code>id</code> <code>| 7f240473406147b99463f32b876bf69d |</code>
<code>| is_domain | False |</code>
<code>| name | service |</code>
<code>| parent_id | default |</code>
這裡生成的結果除了id和我不一樣,其他的差不多一樣
檢視是否建立成功
<code>[root@linux-node1 keystone]</code><code># openstack project list</code>
<code>+----------------------------------+---------+</code>
<code>| ID | Name |</code>
<code>| 7ae0fb7deb5342d885a07c2c890a1ff4 | admin |</code>
<code>| 7f240473406147b99463f32b876bf69d | service |</code>
建立demo項目:
<code>[root@linux-node1 keystone]</code><code># openstack project create --domain default --description "Demo Project" demo</code>
<code>| description | Demo Project |</code>
<code>| </code><code>id</code> <code>| 9b913d25891849baa55b21d837e9b63d |</code>
<code>| name | demo |</code>
驗證是否建立成功:
<code>| 9b913d25891849baa55b21d837e9b63d | demo |</code>
建立使用者
<code>[root@linux-node1 keystone]</code><code># openstack user create --domain default --password-prompt demo</code>
<code>User Password:</code>
<code>Repeat User Password:</code>
<code>+---------------------+----------------------------------+</code>
<code>| Field | Value |</code>
<code>| domain_id | default |</code>
<code>| enabled | True |</code>
<code>| </code><code>id</code> <code>| f0c69bad72b54e0daef92c2295425932 |</code>
<code>| name | demo |</code>
<code>| password_expires_at | None |</code>
<code>[root@linux-node1 keystone]</code><code># openstack user list</code>
<code>| f0c69bad72b54e0daef92c2295425932 | demo |</code>
建立role權限:
<code>[root@linux-node1 keystone]</code><code># openstack role create user</code>
<code>+-----------+----------------------------------+</code>
<code>| Field | Value |</code>
<code>| domain_id | None |</code>
<code>| </code><code>id</code> <code>| f53267146a6449b797393f7fc5d23e10 |</code>
<code>| name | user |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role list</code>
<code>| f53267146a6449b797393f7fc5d23e10 | user |</code>
把使用者添加到項目中,并賦予權限
<code>[root@linux-node1 keystone]</code><code># openstack role add --project demo --user demo user #把demo使用者加到demo項目中并賦予user權限</code>
<code>這裡我把以後各個服務使用者賦予不同role規則:</code>
<code>[root@linux-node1 keystone]</code><code># openstack user create --domain default --password-prompt glance</code>
<code>| </code><code>id</code> <code>| 8dc6f28207b64e6d845a444a2ba18205 |</code>
<code>| name | glance |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role add --project service --user glance admin</code>
<code>[root@linux-node1 keystone]</code><code># openstack user create --domain default --password-prompt nova</code>
<code>| </code><code>id</code> <code>| db596da4ed8f47ab9dc7fa77d3bc8c6c |</code>
<code>| name | nova |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role add --project service --user nova admin</code>
<code>[root@linux-node1 keystone]</code><code># openstack user create --domain default --password-prompt neutron</code>
<code>| </code><code>id</code> <code>| c0f9c52898ad4d4f88254a01c458eb27 |</code>
<code>| name | neutron |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role add --project service --user neutron admin</code>
<code>[root@linux-node1 keystone]</code><code># openstack user create --domain default --password-prompt cinder</code>
<code>| </code><code>id</code> <code>| e5dbdde24a7340edb8bd3f498f9d28b5 |</code>
<code>| name | cinder |</code>
<code>[root@linux-node1 keystone]</code><code># openstack role add --project service --user cinder admin</code>
驗證使用者:
<code>unset</code> <code>OS_AUTH_URL OS_PASSWORD 取消之前的環境變量</code>
<code>[root@linux-node1 keystone]</code><code># openstack \</code>
<code>> --os-auth-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3</code> <code>\</code>
<code>> --os-project-domain-name default \</code>
<code>> --os-user-domain-name default \</code>
<code>> --os-project-name admin \</code>
<code>> --os-username admin token issue</code>
<code>Password: </code><code>#輸入密碼後能出現下面内容說明使用者沒有問題</code>
<code>+------------+---------------------------------------------------------------------------------------+</code>
<code>| Field | Value |</code>
<code>| expires | 2016-12-28 11:05:46+00:00 |</code>
<code>| </code><code>id</code> <code>| gAAAAABYY456xFHiZSMnQ7x88FxUJjuu3uO8xRLh_soTSgyf3KzMv0nY3s4wn1diFlJ7d2qjPub0iftlOKUnZ |</code>
<code>| | z9QYPMUGhfxguZhEHWQtufNQNxZD9r8ekluU0XjCdrdnBU-fs3IM6EmJt3O1Sl- |</code>
<code>| | Nw4G40uh0xatMkxI6bmrG3fRkCrcLga6Cx4 |</code>
<code>| project_id | 7ae0fb7deb5342d885a07c2c890a1ff4 |</code>
<code>| user_id | b84c1614b79b40278e02bd6ed034cc6f |</code>
<code>+------------+---------------------------------------------------------------------------------------</code>
建立環境變量腳本:
建立admin變量
<code>[root@linux-node1 ~]</code><code># cat admin-openstack </code>
<code>export</code> <code>OS_PROJECT_DOMAIN_NAME=default</code>
<code>export</code> <code>OS_USER_DOMAIN_NAME=default</code>
<code>export</code> <code>OS_IMAGE_API_VERSION=2</code>
建立demo變量
<code>[root@linux-node1 ~]</code><code># cat demo-openstack </code>
<code>export</code> <code>OS_PROJECT_NAME=demo</code>
<code>export</code> <code>OS_USERNAME=demo</code>
<code>export</code> <code>OS_PASSWORD=demo</code>
<code>export</code> <code>OS_AUTH_URL=http:</code><code>//192</code><code>.168.56.11:5000</code><code>/v3</code>
使環境變量生效:
soure demo-openstack
<code>401 </code><code>#驗證失敗,keystone相關使用者賬戶密碼設定錯誤,時間不同步,或者輸入的項目名稱不對</code>
<code>403 </code><code>#可能未初始化OS_token變量,需要使用source指令使其生效,也可能是配置的配置檔案未生效,需要重新開機相關服務</code>
<code>409 </code><code>#keystone建立使用者,使用者已存在</code>
<code>500 </code><code>#伺服器内部錯誤,服務配置有問題,看日志,檢查配置</code>
<code>503 </code><code>#keystone相關賬戶密碼設定有問題,請将相關的glance賬戶删除,重新建立即可</code>
<code>服務故障 </code><code>#相關服務沒有起來</code>
本文轉自 kesungang 51CTO部落格,原文連結:http://blog.51cto.com/sgk2011/1887008,如需轉載請自行聯系原作者