1、OpenStack部署前准备
2、OpenStack——keystone安装
3、OpenStack——glance安装
4、OpenStack——nova安装
环境:
Ubuntu14.04+ (OpenStackM版本)
Identity 服务概览
OpenStack的身份服务提供单点管理的认证、授权和服务目录服务集成。其他OpenStack服务使用的身份服务作为一个统一的API。此外,提供用户信息的服务,但不包括在OpenStack(如LDAP服务)可以集成到现有的基础设施。
Identity包括Server,Driver(驱动)和Modules三大组件。
(当你安装Identity服务的时候,要把每一个服务到Identity注册。这样就能通过Identity来管理。)
在conrtoller安装KeyStone(Identity Service)
先决条件:
1、在mysql中创建一个数据库,供keystone服务。
CREATE DATABASE keystone;/* 创建数据库*/
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS' ; /*授予keystone用户所有权限,并设置密码,允许所有ip链接*/
安装和配置组建
1、首先禁止keystone安装完后
echo "manual" > /etc/init/keystone.override
2、安装keystone ,apache2, libapache2-mod-wsgi。keystone的服务是通过web服务提供的。
apt-get install keystone apache2 libapache2-mod-wsgi
3、修改keystone的配置文件:/etc/keystone/keystone.conf
[DEFAYLT]
admin_token = ADMIN_TOKEN /* ADMIN_TOKEN=openssl rand -hex 10*/
[database]
connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
/*KEYSTONE_DBPASS 由上一部设置如果出现不能连接,考虑将/etc/hots 中 127.0.0.1 controller删除、或者直接用ip代替controller因为之前已经将Mysql的绑定Ip为 10.0.010*/
[token]
provider=fernet /*一种更高效的token*/
**4、同步一下数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone**
5、初始化 Fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置Apache 服务器
1、配置/etc/apache2/apache2.conf
添加ServerName controller
2、创建/etc/apache2/sites-available/wsgi-keystone.conf
作用:在同一台机器上可以使用不同的ip+端口
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/apache2/keystone.log
CustomLog /var/log/apache2/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/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
`
3、使虚拟host的验证服务可用
ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
完成安装
1、重启apache服务:
service apache2 restart
2、删除默认的SQLite数据库 :
rm -f /var/lib/keystone/keystone.db `
必要的配置文件和软件已经安装完毕,接下来就是利用keystone服务了,包括用户,服务,域。也就是如何使用keystone啦!
这里写代码片参考:http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone.html
使用KeyStone V3
User:用户
Project:前身Tenant(总算被弃用了),变成project多自然
Role:一系列操作的集合
Token:认证令牌,有时限
Domain:多个project组成一个Domain
创建服务
1、使用临时权限创建identity服务和api 端口
export OS_TOKEN=06bb127ccea9205d7c14#根据上文自己设置的token
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
(执行该脚本)
2、创建identity服务和API端口
(OpenStack的命令行变化太快啦可以到这个网站查询:http://docs.openstack.org/cli-reference/openstack.html)
openstack service create \
--name keystone --description "OpenStack Identity" identity #创建服务
#openstack的api endponts分为admin,public,和internal,所以要创建3种
openstack endpoint create --region RegionOne \
identity public http://controller:5000/v3
openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v3
创建domains,projects,users,roles
创建domain
openstack domain create --description "Default Domain" default
创建project
openstack project create --domain default --description "Admin Project" admin
创建用户
openstack user create --domain default --password-prompt admin
创建角色
在/etc/keystone/policy.json下定义了各种命令所需要的权限条件,用户可以做更改
openstack role create admin
将角色添加到项目和用户
openstack role add --project admin --user admin admin
认证操作
通过密码认证获得token
admin 用户 向 keystone服务请求token
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
要是每次写 --os--auth-url等 太麻烦,可以将
OS_PASSWORD,OS_AUTH_URL放在一个脚本里,export一下。
例如:admin.rc
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_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
然后source admin.rc 。 之后直接 openstck token issue获得token。