安装openstack身份认证服务keystone
2018-11-08 18:11
357 查看
版权声明:本文转载自张晨的博客(https://blog.csdn.net/chansonzhang), 转载请保留本声明! https://blog.csdn.net/chansonzhang/article/details/83865628
#1 更新源
在/etc/apt/sources.list.d目录下新建grizzly.list
在其中写入如下内容
下来执行
可能报错
解决方案
重新执行
至此,openstack身份认证服务keystone安装完成。
安装ubuntu客户端
前面用vagrant和virtualbox配置了一个虚拟机controller并且使用
vagrant ssh controller登陆到controller(参考步骤),下面我们在controller中安装身份认证服务keystone
#1 更新源
在/etc/apt/sources.list.d目录下新建grizzly.list
在其中写入如下内容
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-proposed/grizzly main
使用
sudo apt-get update更新源,然后使用
sudo apt-get -y install ubuntu-cloud-keyring添加
Ubuntu Cloud Archive密钥。其中
-y的意思是
Assume Yes to all queries and do not prompt
#2 安装mysql
输入下面的命令设置无交互安装
MYSQL_ROOT_PASS=openstack MYSQL_HOST=172.16.0.200 echo "mysql-server-5.5 mysql-server/root_password password $MYSQL_ROOT_PASS" |sudo debconf-set-selections echo "mysql-server-5.5 mysql-server/root_password_again password $MYSQL_ROOT_PASS" |sudo debconf-set-selections echo "mysql-server-5.5 mysql-server/root_password seen true" |sudo debconf-set-selections echo "mysql-server-5.5 mysql-server/root_password_again seen true" |sudo debconf-set-selections export DEBIAN_FRONTEND=noninteractive sudo apt-get update
然后开始安装mysql
sudo apt-get -q -y install mysql-server
-q的意思是
Loggable output - no progress indicat。
下来执行
sudo sed -i "s/^bind\-address.*/bind-address = ${MYSQL_HOST}/g" /etc/mysql/my.cnf将/etc/mysql/my.cnf中的所有以
bind-address开头的字符串替换为
bind-address = 172.16.0.200
sed中
g表示一行多次替换
-i选项表示直接修改文件内容,否则只是将文件内容输出
重启mysql
sudo service mysql restart
然后执行以下命令
mysql -uroot -p${MYSQL_ROOT_PASS} -h localhost -e "GRANT ALL ON *.* to root@\"localhost\" IDENTIFIED BY \"${MYSQL_ROOT_PASS}\" WITH GRANT OPTION;" mysql -uroot -p${MYSQL_ROOT_PASS} -h localhost -e "GRANT ALL ON *.* to root@\"${MYSQL_HOST}\" IDENTIFIED BY \"${MYSQL_ROOT_PASS}\" WITH GRANT OPTION;" mysql -uroot -p${MYSQL_ROOT_PASS} -h localhost -e "GRANT ALL ON *.* to root@\"%\" IDENTIFIED BY \"${MYSQL_ROOT_PASS}\" WITH GRANT OPTION;" mysqladmin -uroot -p${MYSQL_ROOT_PASS} flush-privileges
#3 安装keystone
sudo apt-get update sudo apt-get -y install keystone python-keyring
下面是python-keyring的说明:
The Python keyring lib provides a easy way to access the system keyring service from python. It can be used in any application that needs safe password storage.
在mysql中创建一个keystone数据库
mysql -uroot -p${MYSQL_ROOT_PASS} -e "CREATE DATABASE keystone;"
为这个数据库创建一个用户,并设置密码
MYSQL_KEYSTONE_PASS=openstack mysql -uroot -p${MYSQL_ROOT_PASS} -e "grant all privileges on keystone.* to 'keystone'@'%'" mysql -uroot -p${MYSQL_ROOT_PASS} -e "set password for 'keystone'@'%'=password('${MYSQL_KEYSTONE_PASS}');"
配置openstack身份认证服务,让其使用mysql数据库
sudo sed -i "s#^connection.*#connection=mysql://keystone:openstack@172.16.0.200/keystone#" /etc/keystone/keystone.conf
这里需要说明的是所有跟在s后面的符号都被sed当做分隔符,之所以不用默认分隔符
/是为了和连接字符串中的
/区别开来。
配置超级用户admin的token
sudo sed -i "s/^# admin_token.*/admin_token = ADMIN/" /etc/keystone/keystone.conf
配置keystone的签名加密方式,Grizzly版本开始可以支持PKI(Public Key Infrastructure),我们这里设置为UUID(Universally Unique Identifier)
sudo sed -i "s/^#token_format.*/token_format = UUID/" /etc/keystone/keystone.conf
重启keystone服务
sudo stop keystone sudo stop keystone
使用
sudo keystone-manage db_sync为keystone数据库填充必要的数据表
可能报错
ImportError: No module named MySQLdb
解决方案
sudo apt-get install python-mysqldb
重新执行
sudo keystone-manage db_sync
至此,openstack身份认证服务keystone安装完成。
#创建租户、用户、角色
使用
vagrant ssh controller登录到 controller
安装ubuntu客户端
sudo apt-get update sudo apt-get -y install python-keystoneclient
配置环境变量
export ENDPOINT=172.16.0.200 export SERVICE_TOKEN=ADMIN export SERVICE_ENDPOINT=http://${ENDPOINT}:35357/v2.0
创建两个租户
keystone tenant-create --name cookbook --description "Default Cookbook Tenant" --enabled true keystone tenant-create --name admin --description "Admin Tenant" --enabled true
创建两个角色
keystone role-create --name admin keystone role-create --name Member
获取cookbook租户的id
TENANT_ID=$(keystone tenant-list |awk '/ cookbook/{print $2}')
创建admin用户
PASSWORD=openstack keystone user-create --name admin --tenant_id $TENANT_ID --pass $PASSWORD --email root@localhost --enable=true
给用户admin添加一个角色admin
ROLE_ID=$(keystone role-list|awk '/admin/{print $2}') USER_ID=$(keystone user-list|awk '/admin/{print $2}') keystone user-role-add --user $USER_ID --role $ROLE_ID --tenant_id $TENANT_ID
继续给admin用户添加全局的admin角色
TENANT_ID=$(keystone tenant-list |awk '/admin/{print $2}') keystone user-role-add --user $USER_ID --role $ROLE_ID --tenant_id $TENANT_ID
在cookbook租户中创建一个demo用户,并为其添加Member角色
TENANT_ID=$(keystone tenant-list |awk '/cookbook/{print $2}') keystone user-create --name demo --tenant_id $TENANT_ID --pass $PASSWORD --email demo@localhost --enable=true ROLE_ID=$(keystone role-list|awk '/Member/{print $2}') USER_ID=$(keystone user-list|awk '/demo/{print $2}') keystone user-role-add --user $USER_ID --role $ROLE_ID --tenant_id $TENANT_ID
#定义服务端点
定义计算服务nova、EC2和镜像服务glance、身份认证服务keystone以及存储服务volume的服务
keystone service-create --name nova --type compute --description 'Openstack Compute Service' keystone service-create --name ec2 --type ec2 --description 'EC2 Service' keystone service-create --name glance --type image --description 'Openstack Image Service' keystone service-create --name keystone --type identity --description 'Openstack Identity Service' keystone service-create --name volume --type volume --description 'Volume Service'
创建上面5个服务对应的服务端点
NOVA_SERVICE_ID=$(keystone service-list|awk '/nova/{print $2}') PUBLIC="http://$ENDPOINT:8774/v2/\$(tenant_id)s" ADMIN=$PUBLIC INTERNAL=$PUBLIC keystone endpoint-create --region RegionOne --service_id $NOVA_SERVICE_ID --publicurl $PUBLIC --adminurl $ADMIN --internalurl $INTERNAL
EC2_SERVICE_ID=$(keystone service-list|awk '/ec2/{print $2}') PUBLIC="http://$ENDPOINT:8773/services/Cloud" ADMIN="http://$ENDPOINT:8773/services/Admin" INTERNAL=$PUBLIC keystone endpoint-create --region RegionOne --service_id $EC2_SERVICE_ID --publicurl $PUBLIC --adminurl $ADMIN --internalurl $INTERNA
GLANCE_SERVICE_ID=$(keystone service-list|awk '/glance/{print $2}') PUBLIC="http://$ENDPOINT:9292/v1" ADMIN=$PUBLIC INTERNAL=$PUBLIC keystone endpoint-create --region RegionOne --service_id $GLANCE_SERVICE_ID --publicurl $PUBLIC --adminurl $ADMIN --internalurl $INTERNAL
KEYSTONE_SERVICE_ID=$(keystone service-list|awk '/keystone/{print $2}') PUBLIC="http://$ENDPOINT:5000/v2.0" ADMIN="http://$ENDPOINT:35357/v2.0" INTERNAL=$PUBLIC keystone endpoint-create --region RegionOne --service_id $KEYSTONE_SERVICE_ID --publicurl $PUBLIC --adminurl $ADMIN --internalurl $INTERNAL
CINDER_SERVICE_ID=$(keystone service-list|awk '/volume/{print $2}') PUBLIC="http://$ENDPOINT:8776/v1/%(tenant_id)s" ADMIN=$PUBLIC INTERNAL=$PUBLIC keystone endpoint-create --region RegionOne --service_id $CINDER_SERVICE_ID --publicurl $PUBLIC --adminurl $ADMIN --internalurl $INTERNAL
创建一个service租户,并在这个租户内为上述服务创建用户
vagrant@controller:/$ keystone tenant-create --name service --description "Service Tenant" --enabled true vagrant@controller:/$ SERVICE_TENANT_ID=$(keystone tenant-list|awk '/service/{print $2}') vagrant@controller:/$ keystone user-create --name nova --pass nova --tenant_id $SERVICE_TENANT_ID --email nova@localhost --enabled true vagrant@controller:/$ keystone user-create --name glance --pass glance --tenant_id $SERVICE_TENANT_ID --email glance@localhost --enabled true vagrant@controller:/$ keystone user-create --name keystone --pass keystone --tenant_id $SERVICE_TENANT_ID --email keystone@localhost --enabled true vagrant@controller:/$ keystone user-create --name cinder --pass cinder --tenant_id $SERVICE_TENANT_ID --email cinder@localhost --enabled true
接下来,为上述用户添加admin角色
vagrant@controller:/$ ADMIN_ROLE_ID=$(keystone role-list|awk '/admin/{print $2}') vagrant@controller:/$ NOVA_USER_ID=$(keystone user-list|awk '/nova/{print $2}') vagrant@controller:/$ GLANCE_USER_ID=$(keystone user-list|awk '/glance/{print $2}') vagrant@controller:/$ KEYSTONE_USER_ID=$(keystone user-list|awk '/keystone/{print $2}') vagrant@controller:/$ CINDER_USER_ID=$(keystone user-list|awk '/cinder/{print $2}') vagrant@controller:/$ keystone user-role-add --user $NOVA_USER_ID --role $ADMIN_ROLE_ID --tenant_id $SERVICE_TENANT_ID vagrant@controller:/$ keystone user-role-add --user $GLANCE_USER_ID --role $ADMIN_ROLE_ID --tenant_id $SERVICE_TENANT_ID vagrant@controller:/$ keystone user-role-add --user $KEYSTONE_USER_ID --role $ADMIN_ROLE_ID --tenant_id $SERVICE_TENANT_ID vagrant@controller:/$ keystone user-role-add --user $CINDER_USER_ID --role $ADMIN_ROLE_ID --tenant_id $SERVICE_TENANT_ID阅读更多
相关文章推荐
- OpenStack-M版(Mitaka)搭建- – -身份认证服务(Keystone)篇
- Centos7手动部署Openstack Mitaka版安装配置--(三)安装keystone认证服务
- OpenStack双节点部署—M Keystone(身份认证服务)
- cenos7.1 安装openstack kilo 心得之六 添加身份认证服务
- CentOS 6.5 Openstack Icehouse 安装指南 -3 身份认证 keystone
- OpenStack Pike Minimal安装:二、身份认证
- OpenStack 认证服务 KeyStone [二]
- openstack-mitaka之认证服务管理安装配置部署
- 【N版】openstack——认证服务keystone(三)
- OpenStack 认证服务 KeyStone部署(三)
- OpenStack 认证服务 KeyStone连接和用户管理(四)
- 简易手动部署多节点的Openstack(L版)——贰(安装Keystone服务)
- CentOS 7部署OpenStack(2)―安装keystone服务
- OpenStack 认证服务 KeyStone [二]
- juno版OpenStack部署流程--添加认证服务(keystone)(2)
- OpenStack Newton版本部署----认证服务(keystone)
- [ Openstack ] OpenStack-Mitaka 高可用之 认证服务(keystone)
- Openstack 安装部署指南翻译系列 之 Keystone服务安装(Identity)
- OpenStack 最小化安装配置(五):KeyStone服务配置
- OpenStack(Kilo版本)控制节点基本环境和身份验证服务的安装部署