ubuntu16.04 用devstack部署OpenStack ocata

本人OpenStack小白一个,最近看到这方面很火,所以就试试。百度有很多资料,就跟着人家的步骤一步步开始部署。

主要是跟着这篇文章部署的https://blog.csdn.net/pfztab/article/details/78632393 ,但是中途遇到了很多问题,我在这里做以补充。

如果有哪写的不对的地方欢迎大家评论补充。如果有新的报错信息和解决方法也可以在下方评论补充。


介绍:

       宿主机win7,在vmware下创建两台ubuntu16.04虚拟机,一台作为控制节点,一台作为计算节点,利用devstack部署openstack ocata。

前期工作:

  1、下载ubuntu镜像,我用的是ubuntu-16.04.3-server-amd64版本

  2、下载vmware workstation,我用的是vmware workstation 11版本

  3、下载xshell,用于ssh连接虚拟机,方便复制代码

  4、安装完vmware后,点击编辑,启动虚拟网络编辑器,选择vmnet8,依次设置子网ip、子网掩码、点击NAT设置,修改网关为10.10.10.2(10.10.10.1默认分给宿主机)

  ubuntu16.04 用devstack部署OpenStack ocata 

   ubuntu16.04 用devstack部署OpenStack ocata

安装虚拟机:

  作为控制节点的虚拟机至少分配40g磁盘空间,4g内存,处理器开启虚拟化,网络适配器设置NAT模式,再添加一个网络适配器,设置为host-only模式;作为计算节点的虚拟机至少30g磁盘空间,2g内存,网络适配器类似;然后启动虚拟机,安装操作系统。

  ubuntu16.04 用devstack部署OpenStack ocata

开始搭建:(控制节点+计算节点)

1、安装完毕,进入系统,切换到root用户并设置密码

  sudo su

  passwd

2、编辑sshd_config文件

  vi /etc/ssh/sshd_config

  将PermitRootLogin改为yes,保存退出。

    ubuntu16.04 用devstack部署OpenStack ocata

  重启ssh服务

  service ssh restart

  问题1:没有sshd_config文件,需要安装openssh-server:apt-get install openssh-server

  问题2:vi编辑器无法编辑,需要安装vim编辑器:apt-get install vim

3、测试虚拟机能否ping通宿主机、能否ping通外网,测试宿主机能否ping通虚拟机,都可以的话利用xshell通过ssh连接虚拟机

4、ssh访问成功后,查看网卡信息(ip a),编辑网卡信息

  vi /etc/network/interfaces

  替换掉原来的ens33、ens34信息(我的网卡名是ens33和ens34,将它们替换为你们的网卡名;这里我设置控制节点的ip为10.10.10.10,计算节点ip为10.10.10.11,大家随意;网关设置为10.10.10.2,与前面虚拟网络编辑器设置的一致就好)

  auto ens33

  iface ens33 inet static

  address 10.10.10.10

  netmask 255.255.255.0

  gateway 10.10.10.2

  dns-nameserver 114.114.114.114

 

  auto ens34

  iface ens34 inet manual

  保存退出,reboot重启,输入ip r查看ip是否改变,ping下外网是否可ping通,成功可进入下一步

5、换源,将apt源换为国内的源。

  备份:cp /etc/apt/sources.list /etc/apt/sources.list.back

  编辑:vi /etc/apt/sources.list

  清空并替换为:

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

  保存退出。

  更新:

  apt-get update

  apt-get upgrade

6、输入pip检测是否安装pip,若没有则输入apt-get install python-pip安装。

  设置pip源:

  mkdir ~/.pip

  vi ~/.pip/pip.conf

  添加

  [global]

  index-url = http://pypi.douban.com/simple/

  trusted-host = pypi.douban.com

  保存退出。

7、设定时间同步

  设定时区:dpkg-reconfigure tzdata

    选择Asia -> 再选择Shanghai -> OK

  同步时间命令:

    1、sudo apt-get install ntpdate // 安装时间同步工具

    2、sudo ntpdate cn.pool.ntp.org // 与网络服务器同步时间

            3、date // 查看时间是否已同步

8、安装git:apt-get install git

9、创建stack用户:

  sudo useradd -s /bin/bash -d /opt/stack -m stack

  echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

  切换到stack用户:

  sudo su - stack

  重复步骤6,给stack用户也布置pip源

10、下载devstack

  cd /opt/stack

  git clone https://github.com/openstack-dev/devstack -b stable/ocata

  cd devstack

11、编辑local.conf文件

  vi local.conf

  添加如下内容:

  控制节点:(HOST_IP改为你的控制节点ip,# Credentials 设置密码,# Branches设置要装的openstack版本)

  [[local|localrc]]

 

  MULTI_HOST=true

 

  # management & api network

  HOST_IP=10.10.10.10

  LOGFILE=/opt/stack/logs/stack.sh.log

 

  # Credentials

  ADMIN_PASSWORD=ztabtabz

  MYSQL_PASSWORD=ztabtabz

  RABBIT_PASSWORD=ztabtabz

  SERVICE_PASSWORD=ztabtabz

  SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz

 

  # enable neutron-ml2-vlan

  disable_service n-net

  enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron,q-lbaas,q-fwaas,q-v*n

  Q_AGENT=linuxbridge

  ENABLE_TENANT_VLANS=True

  TENANT_VLAN_RANGE=3001:4000

  PHYSICAL_NETWORK=default

 

  LOG_COLOR=True

  LOGDIR=$DEST/logs

  SCREEN_LOGDIR=$LOGDIR/screen

 

  # Branches

  KEYSTONE_BRANCH=stable/ocata

  NOVA_BRANCH=stable/ocata

  NEUTRON_BRANCH=stable/ocata

  SWIFT_BRANCH=stable/ocata

  GLANCE_BRANCH=stable/ocata

  CINDER_BRANCH=stable/ocata

 

  # use TryStack git mirror

  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

  计算节点:(HOST_IP改为你的计算节点ip,SERVICE_HOST 改为你的控制节点ip,# Credentials 设置密码,# Branches设置要装的openstack版本)

  [[local|localrc]]

 

  MULTI_HOST=true

 

  # management & api network

  HOST_IP=10.10.10.11

 

  # Credentials

  ADMIN_PASSWORD=ztabtabz

  MYSQL_PASSWORD=ztabtabz

  RABBIT_PASSWORD=ztabtabz

  SERVICE_PASSWORD=ztabtabz

  SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz

 

  # Service information

  SERVICE_HOST=10.10.10.10

  MYSQL_HOST=$SERVICE_HOST

  RABBIT_HOST=$SERVICE_HOST

  GLANCE_HOSTPORT=$SERVICE_HOST:9292

  Q_HOST=$SERVICE_HOST

  KEYSTONE_AUTH_HOST=$SERVICE_HOST

  KEYSTONE_SERVICE_HOST=$SERVICE_HOST

 

  CEILOMETER_BACKEND=mongodb

  DATABASE_TYPE=mysql

 

  ENABLED_SERVICES=n-cpu,q-agt,neutron

  Q_AGENT=linuxbridge

  ENABLE_TENANT_VLANS=True

  TENANT_VLAN_RANGE=3001:4000

  PHYSICAL_NETWORK=default

 

  # vnc config

  NOVA_VNC_ENABLED=True

  NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"

  VNCSERVER_LISTEN=$HOST_IP

  VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN

 

  LOG_COLOR=True

  LOGDIR=$DEST/logs

  SCREEN_LOGDIR=$LOGDIR/screen

 

  # Branches

  KEYSTONE_BRANCH=stable/ocata

  NOVA_BRANCH=stable/ocata

  NEUTRON_BRANCH=stable/ocata

  SWIFT_BRANCH=stable/ocata

  GLANCE_BRANCH=stable/ocata

  CINDER_BRANCH=stable/ocata

 

  # use TryStack git mirror

  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

  保存退出。

12、安装。

  在stack用户下,运行/opt/stack/devstack/stack.sh

  等待1小时左右,如报错(time out),一般是网速问题,重新运行stack.sh就好。

13、安装完成

  提示This is your ip 等等,代表安装成功。

14、浏览器输入控制器ip,访问openstack。

  ubuntu16.04 用devstack部署OpenStack ocata

  用户名:admin,密码:你设置的密码。登陆后检测下各服务是否都能正常访问;最好做个快照,以防万一。

      注意:虚拟机重启后openstack服务不会自动运行,需要切换到devstack目录下,输入screen -c stack-screenrc 以手动启动

  ubuntu16.04 用devstack部署OpenStack ocataubuntu16.04 用devstack部署OpenStack ocata

question1:
./stack.sh: line 508: generate-subunit: command not found
answer:
sudo  apt-get install python-pip
pip install --upgrade pip

pip install -U os-testr

question2:

如果安装pip   vim还要各种依赖的话,我建议你换个apt源,update  upgrade,之后再试试。如果你在上步忽略的话,那么你在接下来的安装过程中会遇到各种各样的问题,基本都是缺各种依赖的问题,我一开始就很自然的入坑了,一直在解决各种依赖,真是相当头疼。后来发现是apt源的问题,也是欲哭无泪呀。希望你们在这块注意一下。

question3:
E: Unable to locate package libsystemd-dev
answer:
The devstack link devstack_latest_docsays that the latest devstack supports Ubuntu 16.04/17.04.
Few packages which are available in 16.04 are not available in 14.04 or the names of the packages are different.

I see "libsystemd-dev" is available in 16.04 and the corresponding package in 14.04 is "libsystemd-daemon-dev"

question4:
E: brctl    common not found
answer:

sudo apt-get install bridge-utils

question5:

如果安装过程中某个包提示找不到,则需要重新执行./stack.sh(如果有其他问题则需要先./unstack.sh)。在整个devstack安装过程中会有很多次重新执行./stack.sh。我就重复执行了好几次。

question6:

./stack.sh 之前先把pip更新一下 sudo pip isntall --upgrade pip, 我在安装途中就因未更新报了错,具体错误我忘了。

注意1:

Devstack 以非root用户运行,但需要sudo权限。
$ sudo useradd -s /bin/bash -d /opt/stack -m stack
因为stack用户需要对系统作出改变,则需要为stack添加sudo权限
$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

$ sudo su - stack

注意2:

安装成功之后最好先做个快照。