天天看點

Openstack 實戰講解之-----------03-控制節點服務配置

設定時間同步:

對于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)]&gt; 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)]&gt; CREATE DATABASE glance;</code>

<code>Query OK, 1 row affected (0.00 sec)</code>

<code>MariaDB [(none)]&gt; 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)]&gt; 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)]&gt; CREATE DATABASE nova;</code>

<code>MariaDB [(none)]&gt; 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)]&gt; 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)]&gt; CREATE DATABASE nova_api;</code>

<code>MariaDB [(none)]&gt; 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)]&gt; 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)]&gt; CREATE DATABASE neutron;</code>

<code>MariaDB [(none)]&gt; 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)]&gt; 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)]&gt; CREATE DATABASE cinder;</code>

<code>MariaDB [(none)]&gt; 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)]&gt; 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)]&gt; 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>&gt; --bootstrap-admin-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3/</code> <code>\</code>

<code>&gt; --bootstrap-internal-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3/</code> <code>\</code>

<code>&gt; --bootstrap-public-url http:</code><code>//192</code><code>.168.56.11:5000</code><code>/v3/</code> <code>\</code>

<code>&gt; --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>&gt; --os-auth-url http:</code><code>//192</code><code>.168.56.11:35357</code><code>/v3</code> <code>\</code>

<code>&gt; --os-project-domain-name default \</code>

<code>&gt; --os-user-domain-name default \</code>

<code>&gt; --os-project-name admin \</code>

<code>&gt; --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,如需轉載請自行聯系原作者