公司部署 OpenStack 的 3 大原因:更高的運營效率、創新能力和成本節約
環境: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、master和minion的防火牆關閉
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.10爲minion1
172.25.33.11爲minion2
__
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的融合。 |
安裝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端點變種代表每種服務:admin,internal和public。默認情況下,管理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 |
+------------------+------------------------------------------
未完,請看下篇