openstack上


公司部署 OpenStack 的 大原因:更高的運營效率、創新能力和成本節約

環境:rhel7.2

salt-master :172.25.33.250

salt-slavle: 172.25.33.10 管理節點,controller

salt-slave:172.25.33.11

首先要在saltstack官網上安裝

rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

修改yum源:

[saltstack-repo]

name=SaltStack repo for RHEL/CentOS $releasever

baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

修改/etc/yum.conf,打開cache緩存功能,這樣,可以用能上網的電腦爲不能上網的電腦加載yum源。yum緩存在/var/cache/yum/下。

修改後直接下載安裝

yum install -y salt-master

yum install -y salt-minion

將緩存好的軟件直接存放起來,作爲其他主機的yum源。

 

master上修改配置文件:/etc/salt/master

  interface: 0.0.0.0 **注意格式

  base:

    - /srv/salt/

minion上修改配置文件:/etc/salt/minion

  master: 172.25.33.250

啓動服務:

# systemctl start salt-master.service

# systemctl start salt-minion

# salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

server10.example

Rejected Keys:

# salt-key -A

The following keys are going to be accepted:

Unaccepted Keys:

server10.example

Proceed? [n/Y] Y

Key for minion server10.example accepted.

接受minion,測試:

# salt "*" test.ping

server10.example:

    True

正常!

 

部署openstack

部署之前,要確保:

1、masterminion的防火牆關閉

2、二者的selinux關閉,雖然官方說seliunx可以開着,但是有概率對部署造成困擾

3、時間要同步,同步時間使用chrony進行。

修改172.25.33.250 /etc/chrony.conf

server 172.25.33.10 iburst

allow 172.25.33.0/24

修改 server10.example.com /etc/chrony.conf

添加:server 172.25.33.250 iburst  同步服務器的IP ,也可以直接同步阿里雲的時間。

啓動chrony服務。

# chronyc sources -v

210 Number of sources = 1

 

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.

 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,

| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.

||                                                 .- xxxx [ yyyy ] +/- zzzz

||      Reachability register (octal) -.           |  xxxx = adjusted offset,

||      Log2(Polling interval) --.      |          |  yyyy = measured offset,

||                                \     |          |  zzzz = estimated error.

||                                 |    |           \

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^*172.25.33.250                 0   8     0   10y     +0ns[   +0ns] +/-    0ns

爲了方便操作,建議修改hosts文件

以下爲了方便稱呼,將172.25.33.250這臺能聯網的真機成爲master

172.25.33.10minion1

172.25.33.11minion2

__

master上的操作都是爲了下載包,將包下載後掛載到yum源上,讓minion安裝。

master上執行安裝:

# yum install https://rdoproject.org/repos/rdo-release.rpm  

# yum upgrade

此時在你的默認yum源上有新的yum

通過下面一張表格來描述一下當前openstack的各個組件及功能。

Service

Project name

Description

Dashboard

Horizon

通過提供了web服務實現openstack服務的交互,比如創建實例,配置IP以及配置訪問控制。

Compute

Nova

系統環境中管理整個生態圈的計算。承擔着經過請求後的孵化,調度和回收虛擬機等一系列的責任,是核心組件,可以說是真正實現的角色。

Networking

Neutron

提供了網絡服務,連接起了其他服務。爲用戶提供API去定義網絡並將它們聯繫起來。支持多種網絡供應商和新興的網絡技術,比如vxlan等。

Object Storage

Swift

通過了RESTful API來存儲和檢索任務非結構化的數據對象,對數據同步和橫向擴展有很高的容錯性,不是掛載文件目錄形勢的使用方式,它是將對象和文件寫入多個驅動程序以確保數據在服務器集羣中的完整性。

Block

Cinder

提供了塊存儲和持久化,可插拔式的體系架構簡化了創建和管理存儲設備。

Identity

Keystone

提供openstack服務的驗證和授權功能。爲全部服務提供了訪問接口。

Image service

Glance

提供虛擬磁盤設備的鏡像和檢索服務,在計算實例時以供使用。

Telemetry

Ceilometer

可擴展的服務,提供了監控、測量、計費、統計等功能。

Orchestration

Heat

通過組合模板來進行的服務。

Database service

Trove

爲關係數據庫和非關係數據庫提供可擴展和可依賴的雲數據庫服務。

Data processing service

Sahara

屬於openstack的大數據項目。是openstack與hadoop的融合。

spacer.gif

 

安裝openstack客戶端:

yum install python-openstackclient  -y   --downloadonly

**如果系統關閉了sellinux就不要下載selinux包了。

yum install openstack-selinux  --downloadonly

 

將下載的安裝包放到一個yum源裏,生成repo

# createrepo .

minion上:

]# cat openstack.repo 

[openstack-ocata]

name=openstack-ocata

baseurl=ftp://172.25.33.250/openstack/openstack-ocata/

gpgcheck=0

[epel]

name=epel

baseurl=ftp://172.25.33.250/openstack/epel/

gpgcheck=0

 

# yum install python-openstackclient  -y

master

yum install mariadb mariadb-server python2-PyMySQL  --downloadonly

然後進入緩存目錄,將其同不到yum源處。

# rsync  * 172.25.33.250:/var/ftp/openstack/openstack-ocata/

# createrepo /var/ftp/openstack/openstack-ocata/

以後不再寫master上的操作,所有目錄軟件均由此來。

以下操作均在minon1上完成。

大多數 OpenStack 服務使用 SQL 數據庫來存儲信息。 典型地,數據庫運行在控制節點上

yum install mariadb mariadb-server python2-PyMySQL

創建並添加:

# cat /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 172.25.33.10

#設置 ``bind-address``值爲控制節點的管理網絡IP地址以使得其它節點可以通過管理網絡訪問數據庫

default-storage-engine = innodb

innodb_file_per_table

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

#設置如下鍵值來啓用一起有用的選項和 UTF-8 字符集

啓動數據庫服務:

# systemctl enable mariadb.service

# systemctl start mariadb.service

爲了保證數據庫服務的安全性,運行``mysql_secure_installation``腳本。特別需要說明的是,爲數據庫的root用戶設置一個適當的密碼

mysql_secure_installation

 

其中,認證服務,鏡像服務,計算服務,Networking均有先決條件,所以,可以編寫sql語句,將其一次導入。

# cat osp.sql 

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'172.25.33.250' \

  IDENTIFIED BY 'keystone';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

  IDENTIFIED BY 'keystone';

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'172.25.33.250' \

  IDENTIFIED BY 'glance';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

  IDENTIFIED BY 'glance';

CREATE DATABASE nova_api;

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'172.25.33.250' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'172.25.33.250' \

  IDENTIFIED BY 'nova';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

  IDENTIFIED BY 'nova';

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'172.25.33.250' \

  IDENTIFIED BY 'neutron';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

  IDENTIFIED BY 'neutron';

# mysql -p <osp.sql

登陸Mysql查看:

> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| glance             |

| keystone           |

| mysql              |

| neutron            |

| nova               |

| nova_api           |

| performance_schema |

+--------------------+

8 rows in set (0.00 sec)

導入成功!

Telemetry 服務使用 NoSQL 數據庫來存儲信息,典型地,這個數據庫運行在控制節點上

# yum install mongodb-server mongodb

編輯文件 /etc/mongod.conf 並完成如下動作:

bind_ip = 172.25.33.10

#配置 bind_ip 使用控制節點管理網卡的IP地址

smallfiles = true

#默認情況下,MongoDB會在``/var/lib/mongodb/journal`` 目錄下創建幾個 1 GB 大小的日誌文件。如果你想將每個日誌文件大小減小到128MB並且限制日誌文件佔用的總空間爲512MB,配置 smallfiles 的值

啓動MongoDB 並配置它隨系統啓動

# systemctl enable mongod.service

# systemctl start mongod.service

OpenStack 使用 message queue 協調操作和各服務的狀態信息。消息隊列服務一般運行在控制節點上。OpenStack支持好幾種消息隊列服務包括 RabbitMQ, Qpid, 和 ZeroMQ。不過,大多數發行版本的OpenStack包支持特定的消息隊列服務

# yum install rabbitmq-server

# systemctl enable rabbitmq-server.service

# systemctl start rabbitmq-server.service

# netstat -antlp|grep 5672

tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      3158/beam           

tcp6       0      0 :::5672                 :::*                    LISTEN      3158/beam           

添加 openstack 用戶

rabbitmqctl add_user openstack rabbit

``openstack``用戶配置寫和讀權限:

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

# rabbitmqctl add_user openstack rabbit

Creating user "openstack" ...

# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Setting permissions for user "openstack" in vhost "/" ...

 

認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運行在控制節點。在生產部署中,我們推薦聯合啓用防火牆、認證和加密保證它的安全

# yum install memcached python-memcached

修改配置文件:**如果不修改端口的話,其監控端口可能監控不到。

# cat /etc/sysconfig/memcached 

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

#OPTIONS="-l 127.0.0.1,::1"

OPTIONS="172.0.0.0,::1"

# systemctl enable memcached.service

# systemctl start memcached.service

抓取端口:

# netstat -antlp|grep 1121

tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      2999/memcached      

tcp6       0      0 :::11211                :::*                    LISTEN      2999/memcached      

 

安裝鏡像服務:

可能會缺一個包python-zope-interface,需要自己下載並安裝。

#yum install openstack-keystone httpd mod_wsgi

生成一個隨機值在初始的配置中作爲管理員的令牌。

#openssl rand -hex 10

# openssl rand -hex 10

ec8b4ce2292ca6c24cd2

編輯文件 /etc/keystone/keystone.conf 並完成如下動作:

# vim /etc/keystone/keystone.conf

[DEFAULT]

...

admin_token = ec8b4ce2292ca6c24cd2

 [database]

connection = mysql+pymysql://keystone:[email protected]/keystone

第二個keystone是創建數據庫時社的密碼,@後的IP時控制節點的IP 

[token]

...

provider = fernet

配置Fernet UUID令牌的提供者

安裝完memcache後,要使用memcache作爲驅動。修改/etc/keystone/keystone.conf

2842 driver = memcache

1500 servers = 172.25.33.10:11211

初始化身份認證服務的數據庫

 su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化後可以使用查看命令查看keystone中的表。

# mysql -ukeystone -pkeystone keystone -e "show tables;"

這三個keystone分別時用戶名,密碼,數據庫名。

 

配置 Apache HTTP 服務器

編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項爲控制節點:

ServerName 172.25.33.10:80

 

創建文件 /etc/httpd/conf.d/wsgi-keystone.conf

# cat /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000

Listen 35357

 

<VirtualHost *:5000>

    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-public

    WSGIScriptAlias / /usr/bin/keystone-wsgi-public

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    ErrorLogFormat "%{cu}t %M"

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

 

    <Directory /usr/bin>

        Require all granted

    </Directory>

</VirtualHost>

 

<VirtualHost *:35357>

    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

    WSGIProcessGroup keystone-admin

    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

    WSGIApplicationGroup %{GLOBAL}

    WSGIPassAuthorization On

    ErrorLogFormat "%{cu}t %M"

    ErrorLog /var/log/httpd/keystone-error.log

    CustomLog /var/log/httpd/keystone-access.log combined

 

    <Directory /usr/bin>

        Require all granted

    </Directory>

</VirtualHost>

 

 

創建服務實體和API端點:

默認情況下,身份認證服務數據庫不包含支持傳統認證和目錄服務的信息。你必須使用:keystone-install 的內容爲身份認證服務創建的臨時身份驗證令牌用來初始化的服務實體和API端點。

你必須使用``–os-token``參數將認證令牌的值傳遞給:command:openstack 命令。類似的,你必須使用``–os-url`` 參數將身份認證服務的 URL傳遞給 openstack 命令或者設置OS_URL環境變量

配置認證令牌:

# export OS_TOKEN=ec8b4ce2292ca6c24cd2

**身份令牌在配置認證服務中的配置文件中有用。

配置端點URL

# export OS_URL=http://172.25.33.10:35357/v3

配置認證 API 版本:

# export OS_IDENTITY_API_VERSION=3

 

創建服務實體和API端點

1、在你的Openstack環境中,認證服務管理服務目錄。服務使用這個目錄來決定您的環境中可用的服務。

 

創建服務實體和身份認證服務:

$ openstack service create \

  --name keystone --description "OpenStack Identity" identity

 

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 557ac19a848547e59df8792cec5f3598 |

| name        | keystone                         |

| type        | identity        

2、身份認證服務管理了一個與您環境相關的 API 端點的目錄。服務使用這個目錄來決定如何與您環境中的其他服務進行通信。

 

OpenStack使用三個API端點變種代表每種服務:admininternalpublic。默認情況下,管理API端點允許修改用戶和租戶而公共和內部APIs不允許這些操作。在生產環境中,處於安全原因,變種爲了服務不同類型的用戶可能駐留在單獨的網絡上。對實例而言,公共API網絡爲了讓顧客管理他們自己的雲在互聯網上是可見的。管理API網絡在管理雲基礎設施的組織中操作也是有所限制的。內部API網絡可能會被限制在包含OpenStack服務的主機上。此外,OpenStack支持可伸縮性的多區域。爲了簡單起見,本指南爲所有端點變種和默認``RegionOne``區域都使用管理網絡。

創建認證服務的 API 端點:

# openstack service create \

>   --name keystone --description "OpenStack Identity" identity

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 557ac19a848547e59df8792cec5f3598 |

| name        | keystone                         |

| type        | identity                     

 

# openstack endpoint create --region RegionOne \

>   identity public http://172.25.33.10:5000/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 71042a337b0c41afab0dc64017fe897c |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:5000/v3      |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne \

>   identity internal http://172.25.33.10:5000/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | f73b5f587b0d4f748db51d19dc0064c1 |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:5000/v3      |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne \

>   identity admin http://172.25.33.10:35357/v3

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 093b3ff515ed4228aaea142db68f9ebe |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 557ac19a848547e59df8792cec5f3598 |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://172.25.33.10:35357/v3     |

+--------------+----------------------------------+

創建域、項目、用戶和角色:

身份認證服務爲每個OpenStack服務提供認證服務。認證服務使用 T domains, projects (tenants), :term:`users<user>`和 :term:`roles<role>`的組合。

1、創建域``default``

# openstack domain create --description "Default Domain" default

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Default Domain                   |

| enabled     | True                             |

| id          | 2ed7d4d390914a55b19ca76df7d78be5 |

| name        | default                          |

+-------------+----------------------------------+

2、在你的環境中,爲進行管理操作,創建管理的項目、用戶和角色:

創建 admin 項目:

# openstack project create --domain default \

>   --description "Admin Project" admin

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Admin Project                    |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | 7f1f3eae73dc439da7f53c15c634c4e7 |

| is_domain   | False                            |

| name        | admin                            |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

創建 admin 用戶:

# openstack user create --domain default \

>   --password admin admin

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled             | True                             |

| id                  | d18bdef0fe114b089a09f1fc21fefd88 |

| name                | admin                            |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

創建 admin 角色:

#  openstack role create admin

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | e664a32afabb4701992287ab341fc642 |

| name      | admin                            |

+-----------+----------------------------------+

添加``admin`` 角色到 admin 項目和用戶上

# openstack role add --project admin --user admin admin

創建的任何角色必須映射到每個OpenStack服務配置文件目錄下的``policy.json`` 文件中。默認策略是給予“admin“角色大部分服務的管理訪問權限

3、創建``service``項目:

# openstack project create --domain default \

>   --description "Service Project" service

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Service Project                  |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | fb85ea3cb36a4ba38fcb607ce085e15e |

| is_domain   | False                            |

| name        | service                          |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

 

4、常規(非管理)任務應該使用無特權的項目和用戶。作爲例子,創建 demo 項目和用戶。

創建demo項目

# openstack project create --domain default \

>   --description "Demo Project" demo

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Demo Project                     |

| domain_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled     | True                             |

| id          | 45a1b89bc5de479e8d3e04eae314ee88 |

| is_domain   | False                            |

| name        | demo                             |

| parent_id   | 2ed7d4d390914a55b19ca76df7d78be5 |

+-------------+----------------------------------+

**

當爲這個項目創建額外用戶時,不要重複這一步。

 

創建``demo`` 用戶

# openstack user create --domain default \

>   --password demo demo

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled             | True                             |

| id                  | 251ad20a4d754dc4a104a3f5b8159142 |

| name                | demo                             |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

創建 user 角色:

# openstack role create user

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | ab0c8bfe852b46adaae9d8a7015f98cd |

| name      | user                             |

+-----------+----------------------------------+

添加 user``角色到 ``demo 項目和用戶:

openstack role add --project demo --user demo user

 

驗證操作:

1、重置``OS_TOKEN````OS_URL`` 環境變量:

#unset OS_TOKEN OS_URL

2、作爲 admin 用戶,請求認證令牌:

# openstack --os-auth-url http://172.25.33.10:35357/v3   --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

Password: 

**管理端口35357

+------------+---------------------------------------------------------------+

| Field      | Value                                                         |

+------------+---------------------------------------------------------------+

| expires    | 2017-04-04T08:55:18+0000                                      |

| id         | gAAAAABY41FmAHBHvYUHWOpciT4HGmm4W3EfdKxwBuBBK17ypEY4yMU6COj1c |

|            | ANOBBsfBFb76BCSdGVLUm7Bp8528kcYbx93jLVdTL92_-gY-e_pLAFfVyEyw2 |

|            | mKoG64Q4C34fwxQqKLlwAMwSPd5Jm03NRF6aPhO52E_A552CNij47pdVQrJ14 |

| project_id | 7f1f3eae73dc439da7f53c15c634c4e7                              |

| user_id    | d18bdef0fe114b089a09f1fc21fefd88                              |

+------------+---------------------------------------------------------------+

3、作爲``demo`` 用戶,請求認證令牌:

#  openstack --os-auth-url http://172.25.33.10:5000/v3 --os-project-domain-name default --os-user-domain-name default \

>   --os-project-name demo --os-username demo token issue

Password: 

**常規訪問端口5000

+------------+---------------------------------------------------------------+

| Field      | Value                                                         |

+------------+---------------------------------------------------------------+

| expires    | 2017-04-04T08:57:08+0000                                      |

| id         | gAAAAABY41HVHfiJahMmQBUuvkxVlAOKeKEjGfqaOc7AQdo4oJ_cov9rW88QH |

|            | 744pp3Pte29NfnKi3IFEeXNfEm0RxlAkjahRez2d3eFykPN-gAnpjc3e0ClTF |

|            | lbFNgoIbfNpEoYZNhTH88FmRKfDAVoTMDHFyypiIMLdOdUxQOEth8_wLzlgcs |

| project_id | 45a1b89bc5de479e8d3e04eae314ee88                              |

| user_id    | 251ad20a4d754dc4a104a3f5b8159142         

這個命令使用``demo`` 用戶的密碼和API端口5000,這樣只會允許對身份認證服務API的常規(非管理)訪問。

 

使用環境變量和命令選項的組合通過``openstack``客戶端與身份認證服務交互。爲了提升客戶端操作的效率,OpenStack支持簡單的客戶端環境變量腳本即OpenRC 文件。這些腳本通常包含客戶端所有常見的選項,當然也支持獨特的選項。

 

創建腳本:

編輯文件 admin-openrc 並添加如下內容:

# cat 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=admin

export OS_AUTH_URL=http://172.25.33.10:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

# cat 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=demo

export OS_AUTH_URL=http://172.25.33.10:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

使用腳本

 

使用特定租戶和用戶運行客戶端,你可以在運行之前簡單地加載相關客戶端腳本。例如:

加載``admin-openrc``文件來身份認證服務的環境變量位置和``admin``項目和用戶證書:

加載admin-openrc可以使用兩種方法:

source admin-openrc或 . admin-openrc

#  . admin-openrc

# openstack token issue

+------------+---------------------------------------------------------------+

| Field      | Value                                                         |

+------------+---------------------------------------------------------------+

| expires    | 2017-04-04T09:02:28+0000                                      |

| id         | gAAAAABY41MUmOusa28o-Y8ihK-TKEMcbV1nkTa0rgQXyzn5kF-u_Pz8MgXhn |

|            | WTmS5R36L4t6lBEpBrzMSD74zoRZFjnXBg6gDsuMl8Cc0ORfoa_YChV5_zjTT |

|            | nf6kDFPGE074WN3Oy43Aj4FQ8uAnU0bvSSKcT6Lj4UoBbPIrzgYkALec04CkU |

| project_id | 7f1f3eae73dc439da7f53c15c634c4e7                              |

| user_id    | d18bdef0fe114b089a09f1fc21fefd88                              |

+------------+-------------------------------------

 

鏡像服務:

1、獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限:

#. admin-openrc

2、要創建服務證書,完成這些步驟:

創建 glance 用戶:

# openstack user create --domain default --password glance glance

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 2ed7d4d390914a55b19ca76df7d78be5 |

| enabled             | True                             |

| id                  | 20bca1402e4b46438c1cbe3aa47ee9c2 |

| name                | glance                           |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

添加 admin 角色到 glance 用戶和 service 項目上。

openstack role add --project service --user glance admin

3、創建``glance``服務實體:

#  openstack service create --name glance \

>   --description "OpenStack Image" image

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Image                  |

| enabled     | True                             |

| id          | b1def3cde6cb4c1a89afb44791997fd9 |

| name        | glance                           |

| type        | image                            |

+-------------+----------------------------------+

4、創建鏡像服務的 API 端點:

# openstack endpoint create --region RegionOne \

>   image public http://172.25.33.10:9292

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 919b3be7a4934426ab8bbeadd11c055f |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | b1def3cde6cb4c1a89afb44791997fd9 |

| service_name | glance                           |

| service_type | image                            |

| url          | http://172.25.33.10:9292         |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne   image internal  http://172.25.33.10:9292

# openstack endpoint create --region RegionOne   image admin  http://172.25.33.10:9292

 

1、安裝軟件包:

# yum install openstack-glance

2編輯文件 /etc/glance/glance-api.conf 並完成如下動作:

在 [database] 部分,配置數據庫訪問:

[database]

...

connection = mysql+pymysql://glance:[email protected]/glance

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = glance

 

[paste_deploy]

flavor = keystone

在 [glance_store] 部分,配置本地文件系統存儲和鏡像文件位置:

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

3編輯文件 ``/etc/glance/glance-registry.conf``並完成如下動作:

在 [database] 部分,配置數據庫訪問:

[database]

connection = mysql+pymysql://glance:[email protected]/glance

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問

[keystone_authtoken]

auth_uri = http://172.25.33.10:5000

auth_url = http://172.25.33.10:35357

memcached_servers = 172.25.33.10:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = glance

 

[paste_deploy]

flavor = keystone

在 [glance_store] 部分,配置本地文件系統存儲和鏡像文件位置:

[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

 

3、編輯文件 ``/etc/glance/glance-registry.conf``並完成如下動作:

在 [database] 部分,配置數據庫訪問:

[database]

connection = mysql+pymysql://glance:[email protected]/glance

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務訪問:

[keystone_authtoken]

auth_uri = http://172.25.33.10:5000

auth_url = http://172.25.33.10:35357

memcached_servers = 172.25.33.10:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = glance

 

[paste_deploy]

flavor = keystone

4、寫入鏡像服務數據庫:

# su -s /bin/sh -c "glance-manage db_sync" glance

完成安裝:

# systemctl enable openstack-glance-api.service \

  openstack-glance-registry.service

# systemctl start openstack-glance-api.service \

  openstack-glance-registry.service

驗證操作:

1、獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限:

#. admin-openrc

2、下載源鏡像

#wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

3、使用 QCOW2 磁盤格式, bare 容器格式上傳鏡像到鏡像服務並設置公共可見,這樣所有的項目都可以訪問它:

# openstack image create "cirros"   --file cirros-0.3.4-x86_64-disk.img   --disk-format qcow2 --container-format bare   --public

+------------------+------------------------------------------------------+

| Field            | Value                                                |

+------------------+------------------------------------------------------+

| checksum         | ee1eca47dc88f4879d8a229cc70a07c6                     |

| container_format | bare                                                 |

| created_at       | 2017-04-04T08:47:17Z                                 |

| disk_format      | qcow2                                                |

| file             | /v2/images/2ed41322-bbd2-45b0-8560-35af76041798/file |

| id               | 2ed41322-bbd2-45b0-8560-35af76041798                 |

| min_disk         | 0                                                    |

| min_ram          | 0                                                    |

| name             | cirros                                               |

| owner            | 7f1f3eae73dc439da7f53c15c634c4e7                     |

| protected        | False                                                |

| schema           | /v2/schemas/image                                    |

| size             | 13287936                                             |

| status           | active                                               |

| tags             |                                                      |

| updated_at       | 2017-04-04T08:47:17Z                                 |

| virtual_size     | None                                                 |

| visibility       | public                                               |

+------------------+------------------------------------------

 

未完,請看下篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章