设为首页 收藏本站
查看: 2439|回复: 0

[经验分享] [问题篇]VMWare搭建Openstack——执行自动化Linux Shell 创建Admin Tenant User报错

[复制链接]

尚未签到

发表于 2015-10-10 14:23:10 | 显示全部楼层 |阅读模式
  最近在写基于OpenStack部署的自动化部署脚本,我没有使用官方推荐的工具,由于目前没有足够多的时间,学习成本比较高,还是自己写Linux Shell来的比较快,而且比较灵活,也不复杂,不过这个东西说起来简单,对于一个没有Linux Shell经验的人来说,还是比较耗费时间的。
  


  目前针对三个节点的脚本已经整理完毕,可能里面还需要优化,但是在执行控制节点,特别是在执行Keystone创建admin的tenant user时,系统老是报错。
  


  先看一下我的keystone脚本

#===============================================================
#
#Controller Node Install And Configuate KeyStone
#
#===============================================================
echo "*"
echo "*"
echo "************Controller Node Install And Configuate KeyStone********"
echo "*"
sudo apt-get install keystone
sleep 3s
echo "*"
echo "==============================update connection in keystone.conf"
sudo sed -i '/connection = .*/{s|sqlite:///.*|mysql://'"$keystone_db_user"':'"$keystone_db_pass"'@'"$controller"'/keystone|g}'\
/etc/keystone/keystone.conf

echo "*"
echo "==============================RM keystone.db"
export keystone_db="/var/lib/keystone/keystone.db"   
if [ -f "$keystone_db" ]; then
sudo rm "$keystone_db"
echo "successfull===========rm keystone db"
fi
echo "*"
echo "==============Start to Create KeyStone MySQL  info======================="
sudo mysql -uroot -p$root_pass -e 'CREATE DATABASE keystone;'
sudo mysql -uroot -p$root_pass -e "CREATE USER $keystone_db_user;"
sudo mysql -uroot -p$root_pass -e "GRANT ALL PRIVILEGES ON keystone.* TO '$keystone_db_user'@'localhost' IDENTIFIED BY '$keystone_db_pass';"
sudo mysql -uroot -p$root_pass -e "GRANT ALL PRIVILEGES ON keystone.* TO '$keystone_db_user'@'%' IDENTIFIED BY '$keystone_db_pass';"
sudo mysql -uroot -p$root_pass -e "SET PASSWORD FOR '$keystone_db_user'@'%' = PASSWORD('$keystone_db_pass');"
echo "Successfull============== Create KeyStone MySQL  info======================="
echo "*"
echo "==============Start to Sync KeyStone DB  ======================="
su -s /bin/sh -c "keystone-manage db_sync" keystone
echo "*"
echo "==============Start to configuate keystone.conf  ======================="
sudo sed -i -e " s/#admin_token=ADMIN/admin_token=$admin_token/g" /etc/keystone/keystone.conf
sudo sed -i "/log_dir/a log_dir = /var/log/keystone" /etc/keystone/keystone.conf
echo "*"
sudo service keystone restart
sleep 3s
sudo service keystone restart
echo "*"
echo "==============Start to crontab keystone token  ======================="
(crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/crontabs/keystone
echo "*"
export OS_SERVICE_TOKEN=$admin_token
echo $OS_SERVICE_TOKEN
export OS_SERVICE_ENDPOINT=http://$controller:35357/v2.0
echo $OS_SERVICE_ENDPOINT
echo "*"
#***************************************************************
#Create Admin/DEMO tenant user role
#***************************************************************
echo "==============Create demo tenant user role======================="
export demo_pass=demo
keystone user-create --name=demo --pass=$demo_pass --email=demo@test.com
keystone tenant-create --name=demo --description="Demo Tenant"
keystone user-role-add --user=demo --role=_member_ --tenant=demo
echo "==============Create Admin tenant user role======================="
keystone user-create --name=admin --pass=$admin_pass --email=admin@test.com
keystone role-create --name=admin
keystone tenant-create --name=admin --description="Admin Tenant"
keystone user-role-add --user=admin --tenant=admin --role=admin
keystone user-role-add --user=admin --role=_member_ --tenant=admin

echo "==============Create a service tenant======================="
keystone tenant-create --name=service --description="Service Tenant"

echo "==============Define services and API endpoints======================="
keystone service-create --name=keystone --type=identity \
--description="OpenStack Identity"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ identity / {print $2}') \
--publicurl=http://$controller:5000/v2.0 \
--internalurl=http://$controller:5000/v2.0 \
--adminurl=http://$controller:35357/v2.0

echo "==============Verify the Identity Service installation======================="
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
echo "*"
echo "==============Create admin openrc======================="
sudo touch /root/admin-openrc.sh
cat >  /root/admin-openrc.sh << EOF
export OS_USERNAME=admin
export OS_PASSWORD=$admin_pass
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://$controller:35357/v2.0
EOF
echo &quot;*&quot;
echo &quot;==============Create demo openrc =======================&quot;
sudo touch /root/demo-openrc.sh
cat >  /root/demo-openrc.sh << EOF
export OS_USERNAME=demo
export OS_PASSWORD=$demo_pass
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://$controller:35357/v2.0
EOF
echo &quot;*&quot;
  

</pre><pre>
  
  关于环境变量,我就不再一一说明了,主要是执行如下信息报错

export OS_SERVICE_TOKEN=$admin_token
echo $OS_SERVICE_TOKEN
export OS_SERVICE_ENDPOINT=http://$controller:35357/v2.0
echo $OS_SERVICE_ENDPOINT
echo &quot;*&quot;
#***************************************************************
#Create Admin/DEMO tenant user role
#***************************************************************
echo &quot;==============Create Admin tenant user role=======================&quot;
keystone user-create --name=admin --pass=$admin_pass --email=admin@test.com
  
  错误提示:Unable to establish connection to http://192.168.3.180:35357/v2.0/users,但是后面的创建租户,角色都能成功完成。

==============Start to crontab keystone token  =======================
*
SuperMap_Token
http://192.168.3.180:35357/v2.0
*
==============Create Admin tenant user role=======================
Unable to establish connection to http://192.168.3.180:35357/v2.0/users
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | e6c5404ecb334ea1877b831250da7604 |
|   name   |              admin               |
+----------+----------------------------------+
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Admin Tenant           |
|   enabled   |               True               |
|      id     | 4e426e76ab334e019afcef948e99d6d8 |
|     name    |              admin               |
+-------------+----------------------------------+
No user with a name or ID of 'admin' exists.
No user with a name or ID of 'admin' exists.
==============Create demo tenant user role=======================
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |          demo@test.com           |
| enabled  |               True               |
|    id    | 68c02b4a38024c1c849edc55abae79c4 |
|   name   |               demo               |
| username |               demo               |
+----------+----------------------------------+
  
  然后查看日志都是警告

2015-06-23 09:24:20.830 6356 WARNING keystone.openstack.common.versionutils [-] Deprecated: keystone.middleware.core.XmlBodyMiddleware is deprecated as of Icehouse in favor of support for &quot;application/json&quot; only and may be removed in K.
2015-06-23 09:24:23.929 6372 WARNING keystone.openstack.common.versionutils [-] Deprecated: keystone.middleware.core.XmlBodyMiddleware is deprecated as of Icehouse in favor of support for &quot;application/json&quot; only and may be removed in K.
2015-06-23 09:24:24.900 6372 WARNING keystone.common.wsgi [-] Could not find user, admin.
2015-06-23 09:24:25.040 6372 WARNING keystone.common.wsgi [-] Could not find user, admin.
2015-06-23 09:24:25.485 6372 WARNING keystone.common.wsgi [-] Could not find user, demo.
2015-06-23 09:24:25.501 6372 WARNING keystone.common.wsgi [-] Could not find role, _member_.
2015-06-23 09:24:25.509 6372 WARNING keystone.common.wsgi [-] Could not find project, demo.

  
  


  在网上查了半天,也没有有什么有用的信息。最后跟同事交流,发现执行这个操作前面有一个keystone服务的重启,是否是keystone启动完毕,立即执行创建租户用户导致的问题呢?

sudo service keystone restart
sleep 3s
sudo service keystone restart
sleep 5s
  
  果断在服务重启后,等待5s,重新测试,成功!
  


  这些小细节真的不好把握,而且在OpenStack的部署过程中,有几个服务每次都要启动两次才能成功,我记得比较深刻的是nova-compute和neutron-l3-agent,所以,每次重启服务,我都启动两遍,这样也会避免这个问题,现在每次服务启动后,都等待几秒钟,这样会避免很多不必要的问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125176-1-1.html 上篇帖子: openstack 不适合做公有云 下篇帖子: Pacemaker+Corosync+DRBD实现Openstack A/P高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表