致谢:星风雪宇的文章,该文章提供基本思路,然后我借此操作稍加整合。也感谢众多网友的无私奉献。
文章出处:https://blog.csdn.net/weixin_41977332/article/details/104232293
一、实验准备
注意:实验虚拟机的配置至少4C,8G内存。否则可能会因为资源不足会报错。
1.1 配置网卡
1.1.1 更改网卡名称为eth*
root@ubuntu:~# vim /etc/default/grub
......省略.....
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
1.1.2 配置网卡
root@ubuntu:~# vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.134.166
netmask 255.255.255.0
gateway 192.168.134.2
dns-nameserver 223.5.5.5
1.2 配置root远程登录
编辑/etc/ssh/sshd_config文件修改如下:
[root@ubuntu ~]#vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password #默认为禁⽌登录
PermitRootLogin yes #改为允许登录
#PasswordAuthentication yes
PasswordAuthentication yes #打开密码认证,其实默认就是允许通过密码认证登录
#重启sshd服务
systemctl restart sshd
二、配置apt下载源和pip下载源
2.1 修改apt源为国内的清华下载源
vim /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
更新下载源
sudo apt-get update
sudo apt-get upgrade
2.2 pip下载源的修改
#创建pip.conf
mkdir ~/.pip
vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
三、 安装和配置devstack环境
3.1 创建stack用户
devstack的安装与运行是不允许以root身份运行的,需要一个新创建的stack用户,使用该用户来安装整个环境。创建stack用户并赋予该用户sudo权限。
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo passwd stack #编辑stack用户的登录密码
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
3.2 切换到stack用户空间下
sudo su stack
3.3 下载源码
因为安装的是O版的版本,指定代码分支为stable/ocata
git clone https://opendev.org/openstack/devstack -b stable/ocata
3.4 切换到stack的devstack目录,创建local.conf,并添加内容如下
具体的变量意义如有兴趣可以到openstack官网或自行搜索,这里不做解释了。
stack@ubuntu:/root$ cd ~/devstack/
vim local.conf
[[local|localrc]]
ADMIN_PASSWORD=openstack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=192.168.134.166
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
TEMPEST_REPO=http://git.trystack.cn/openstack/tempest
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
enable_service placement-api
enable_service placement-client
3.5 运行安装脚本stack.sh进行安装
./stack.sh
如果最后界面出现如下内容,表示安装成功
如果中间遇到因某个组件pip安装失败导致部署失败,可以在运行./unstack.sh之后手动安装该组件,之后再运行./stack.sh脚本。
安装完成之后,会创建两个新用户admin和demo,我们可以通过如下的命令设置环境变量的值来登陆admin用户
source openrc admin admin
接下来我们就可以使用openstack命令
关机重启之后,利用Screen重启DevStack服务
su - stack
cd devstack
sudo screen -c stack-screenrc
如上图:5$(L)n-api* 所表示的意思为序号为5的服务,具体服务是n-api(即nova-api),*代表的是当前界面所处的服务。
可以通过指令:ctrl + a + 序号 来切换需要的服务。
四 重点:一些错误问题问题及排错方法
问题一:env: ‘/opt/stack/requirements/.venv/bin/pip’: No such file or directory
解决思路:
在 ~/devstack/local.conf 添加内容:
enable_service placement-api
enable_service placement-client
在stack用户下执行:
stack@ubuntu:~/devstack$ virtualenv ../requirements/.venv/
问题二:You are using pip version 9.0.3, however version 20.1 is available.解决办法
解决思路:
在/devstack/tools目录下的cap-pip.txt文件中
# cap-pip.txt
pip!=8,<10
修改为:
pip!=8
devstack/tools目录下,找到install_pip.py,或者是ipstall_pip.sh, 找到并注释掉install_get_pip这个函数调用
最后:pip install --upgrade pip安装到最新版本后,重新执行./stack.sh
问题三:(原问题已找不到,在网上找的。和此处的报错基本一致)
1832 static files copied to '/opt/stack/horizon/static'.
+lib/horizon:init_horizon:155 DJANGO_SETTINGS_MODULE=openstack_dashboard.settings
+lib/horizon:init_horizon:155 django-admin compress --force
/opt/stack/devstack/lib/horizon: line 139: 38834 Killed
解决思路:
内存不够,swap都用满了,系统选择性杀死进程。解决方法。我的是4G之后扩大到8G就好了
问题四:HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out
一般认为安装超时
解决思路:
最好:下载离线包,使用 pip install ******.whl 安装
或者重新安装./stack.sh