openstack T版要求python2或者python3.5,U版要求3.8,centos默认下载的3.6,所以不能用U版

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service
  3. firewall-cmd --state
  4. sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
  5. sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
  6. grep --color=auto '^SELINUX' /etc/selinux/config
  7. setenforce 0
  8. getenforce
  9. systemctl disable iptables
  10. #设置清华yum,阿里的现在维护,用不了
  11. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  12. vi /etc/yum.repos.d/CentOS-Base.repo
  13. #CentOS-Base.repo
  14. #
  15. #The mirror system uses the connecting IP address of the client and the
  16. #update status of each mirror to pick mirrors that are updated to and
  17. #geographically close to the client. You should use this for CentOS updates
  18. #unless you are manually picking other mirrors.
  19. #
  20. #If the mirrorlist= does not work for you, as a fall back you can try the
  21. #remarked out baseurl= line instead.
  22. #
  23. #
  24. [base]
  25. name=CentOS-$releasever - Base
  26. baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
  27. gpgcheck=1
  28. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  29. #released updates
  30. [updates]
  31. name=CentOS-$releasever - Updates
  32. baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
  33. gpgcheck=1
  34. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  35. #additional packages that may be useful
  36. [extras]
  37. name=CentOS-$releasever - Extras
  38. baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
  39. gpgcheck=1
  40. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  41. #additional packages that extend functionality of existing packages
  42. [centosplus]
  43. name=CentOS-$releasever - Plus
  44. baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
  45. gpgcheck=1
  46. enabled=0
  47. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  48. #更新缓存
  49. yum clean all
  50. yum makecache
  51. yum install -y git
  52. yum install -y epel-release
  53. yum install -y python-pip
  54. yum -y install net-tools
  55. #改pip
  56. mkdir ~/.pip
  57. vi ~/.pip/pip.conf
  58. [global]
  59. index-url = https://pypi.tuna.tsinghua.edu.cn/simple
  60. [install]
  61. trusted-host = https://pypi.tuna.tsinghua.edu.cn
  62. #通过设置Githttp缓存大小,解决了这个问题,在当前工程目录下运行如下命令:
  63. git config --global http.postBuffer 20M
  64. #否则拉代码时候报错error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly
  65. cd /home
  66. U版要求python3.8,但是默认依赖自动下载了python3.6,报错,换T版不报错
  67. git clone https://github.com/openstack-dev/devstack.git --branch stable/ussuri
  68. git clone https://github.com/openstack-dev/devstack.git --branch stable/train
  69. cd devstack
  70. #使用 devstack 提供的工具创建一个 stack 用户
  71. cd /home/devstack/tools/
  72. ./create-stack-user.sh
  73. #修改devstack目录权限,让stack用户可以运行
  74. chown -R stack:stack /home/devstack
  75. chmod 777 /opt/stack -R
  76. echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
  77. 切换到stack用户下
  78. # su stack
  79. $ cd /home/devstack
  80. 7、编辑创建local.conf文件,添加以下内容:
  81. # Misc
  82. ADMIN_PASSWORD=admin
  83. DATABASE_PASSWORD=$ADMIN_PASSWORD
  84. RABBIT_PASSWORD=$ADMIN_PASSWORD
  85. SERVICE_PASSWORD=$ADMIN_PASSWORD
  86. SERVICE_TOKEN=$ADMIN_PASSWORD
  87. # Target Path
  88. DEST=/opt/stack
  89. # Enable Logging
  90. LOGFILE=$DEST/logs/stack.sh.log
  91. VERBOSE=True
  92. LOG_COLOR=True
  93. SCREEN_LOGDIR=$DEST/logs
  94. KEYSTONE_TOKEN_FORMAT=UUID
  95. # Nova
  96. enable_service n-novnc n-cauth
  97. # Neutron
  98. disable_service n-net
  99. ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
  100. ENABLED_SERVICES+=,q-lbaas,q-vpn,q-fwaas
  101. # Swift
  102. #enable_service s-proxy s-object s-container s-accounts
  103. #SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
  104. # Cinder
  105. VOLUME_GROUP="cinder-volumes"
  106. ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak
  107. # Ceilometer
  108. #enable_service ceilometer-acompute ceilometer-acentral ceilometer-anotification ceilometer-collector ceilometer-api
  109. #enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator
  110. # Heat
  111. enable_service heat h-api h-api-cfn h-api-cw h-eng
  112. enable_service tempest
  113. # Trove
  114. enable_service trove tr-api tr-tmgr tr-cond
  115. # Sahara
  116. enable_service sahara
  117. # Murano
  118. enable_plugin murano git://git.openstack.org/openstack/murano
  119. enable_service murano-cfapi
  120. enable_service g-glare
  121. MURANO_APPS=io.murano.apps.apache.Tomcat,io.murano.apps.Guacamole
  122. enable_service murano murano-api murano-engine
  123. 博客网络:
  124. HOST_IP=10.10.10.129 //本机IP地址
  125. FIXED_RANGE=10.0.0.0/24 //私有IP网段
  126. NETWORK_GATEWAY=10.0.0.1 //私有网段网关
  127. 注意:若需要安装其他服务,请参考其他资料。
  128. #安装虚拟网桥
  129. #ovs-vsctl add-br br-
  130. 8、运行Devstack,执行安装
  131. $ ./stack.sh
  132. #上面出错就用下面命令
  133. FORCE=yes ./stack.sh

安装中遇到的问题解决方法

1 很多类似的报错:file /usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/twofactor/totp.pyc from install of python2-cryptography-2.5-1.el7.x86_64 conflicts with file from package python-cryptography-0.8.2-1.el7.x86_64

解决:包冲突,卸载python-cryptography-0.8.2-1.el7.x86_64
sudo yum remove -y python-cryptography-0.8.2-1.el7.x86_64

2 关于安装pip报错,其实系统已经有pip了,报错如图,+tools/install_pip.sh:_install_get_pip:98是这里的问题

image.png
解决:注释这行,默认应该是103行 # _install_get_pip python $PIP_GET_PIP_PY27_URL $LOCAL_PIP_PY27
因为这行调上面的 _install_get_pip函数下载pip

  1. function install_get_pip {
  2. # _install_get_pip python $PIP_GET_PIP_PY27_URL $LOCAL_PIP_PY27
  3. if python3_enabled; then
  4. if [[ "$PYTHON3_VERSION" == "3.5" ]]; then
  5. PIP_GET_PIP_URL=$(dirname $PIP_GET_PIP_URL)/3.5/$(basename $PIP_GET_PIP_URL)
  6. LOCAL_PIP=${LOCAL_PIP}-py35
  7. fi
  8. _install_get_pip python${PYTHON3_VERSION} $PIP_GET_PIP_URL $LOCAL_PIP
  9. fi
  10. }

3 下载bindep报错的话就手动安装 pip install bindep

4 下载etcd-v3.3.12-linux-amd64.tar.gz网络连接不好会报错,多试几次

5 uwsgi报错,原因是包名字是大写,脚本里是小写,不匹配

解决:https://blog.csdn.net/cojn52/article/details/108003049
修改/devstack/lib/apache 脚本,123-128行按博客修改

  1. #pip_install uwsgi #注释下载
  2. 120 #pip download uwsgi -c $REQUIREMENTS_DIR/upper-constraints.txt
  3. 121 sudo cp /tmp/uwsgi-2.0.19.tar.gz $dir
  4. #这里的意思的把uwsgi复制到mktemp -d生成的历史文件
  5. 122 local uwsgi
  6. 123 uwsgi=$(ls uwsgi*)
  7. 124 mkdir uwsgi-2.0.19 # 这里的意思时创建这个文件夹
  8. 125 tar xvf $uwsgi -C uwsgi-2.0.19 # 这里的意思时解压时把文件放到这个目录

把uwsgi压缩包名字换成小写,给stack用户这个压缩包所有权限 ,sudo chmod 777 uwsgi.tar

6 net_mlx5: cannot initialize PMD due to missing run-time dependency on rdma-core libraries (libibverbs, libmlx5)PMD: net_mlx4: cannot load glue library: libmlx4.so.1: cannot open shared object file: No such file or directory

sudo yum install libibverbs libmlx5 libmlx4

解决问题6后看到问题8末尾,跳过78内容

7 升级完pip后命令失效

image.png
Python 2.7已于2020年1月1日到期,请停止使用。请升级您的Python,因为不再维护Python 2.7。pip 21.0将于2021年1月停止对Python 2.7的支持。pip 21.0将删除对此功能的支持。解决此问题并继续使用不受支持的Python 2.7,不应升级到最新的pip版本,而应升级到<21的版本。
解决方法:sudo pip install —upgrade “pip < 21.0”

或者wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py,实际上用此方法安装了pip20,但是输入pip -V还是显示pip8版本

接下来执行到了这一步,中间有可能存在包下载出错的问题,在执行脚本就行多试几次
image.png

8 Command “python setup.py egg_info” failed with error code 1 in /opt/stack/keystone

image.png
pip install —upgrade setuptools=34.1.1

如果不指定版本就会遇到如下报错
image.png
指定了版本遇到如下报错
image.png
解决方法:从错误6开始,不升级pip,只升级setuptools,pip install —upgrade setuptools=33.1.1
会过升级那一步,后面会继续安装很多python的库,如果卡住了就重新执行
后面顺利进行到下载glance,cinder,NEUTRON

9:安装,NOVNC报错fatal: unable to access ‘https://github.com/novnc/noVNC.git/‘: TCP connection reset by peer

image.png
解决办法:执行命令 git config —global http.sslverify false可正常下载
含义:通过HTTPS访问Git远程仓库,如果服务器的SSL证书未经过第三方机构签署,那么Git就会报错;命令的意思就是让git忽略ssl证书错误
image.png
接下来是安装nova,可会遇到git clone报错的问题,多试几次可以下载
然后安装placement,horizon(下载极慢),tempest

10 安装tempest出错:ERROR: full: InterpreterNotFound: python3

image.png
解决办法:sudo yum install python3,然后执行到下图
image.png
等了较长时间,一路继续往下执行

11 ImportError: version conflict: ‘/usr/lib64/python2.7/site-packages/psutil/_psutil_linux.so’ 包版本冲突

image.png
解决方法:按照提示卸载 sudo pip uninstall psutil

12 Didn’t find service registered by hostname after 60 seconds

感觉是快装完了,之前的日志显示的应该是某些配置
image.png
问题一:Didn’t find service registered by hostname after 120 seconds
解决方法:在local.conf中加入
enable_service placement-api

13galance启动失败 /home/devstack/lib/glance:335:die

[ERROR] /home/devstack/lib/glance:335 g-api did not start image.png