openstack

环境准备
基础条件:CentOS或Redhat裸机一台,内存16G以上,并自行安装基础工具包(net-tools及vim等)
配置物理机YUM源(请使用官方提供的最完整的仓库)

TIPS: 前面的步骤均为环境准备,具体安装步骤请看该博客最后部分

搭建KVM平台

yum -y install qemu-kvm \
  > libvirt-client \
  > livbirt-daemon \
  > libvirt-daemon-driver-qemu
systemctl restart libvirtd

物理机:添加一个虚拟网卡

vim /etc/libvirt/qemu/network/vbr.xml
   
          vbr
          
          
          
   

virsh net-define vbr.xml         ##创建虚拟网络
virsh net-start vbr                  ##启动虚拟网络
virsh net-autostart vbr           ##设置vbr虚拟网络开机自启动
virsh net-list                           ##查看虚拟网络

物理机:搭建FTP服务(保证与虚拟机的文件传输)

yum -y install vsftpd
vim /etc/vsftpd/vsftpd.conf
    listen=YES
    listen_ipv6=NO
systemctl start vsftpd
systemctl enable vsftpd

物理机:搭建DNS和NTP服务

yum -y install bind-chroot
vim /etc/named.conf
   listen-on port 53 { 192.168.1.254; };
   allow-query   { any; };
   forwarders  { 202.106.196.115; };
   dnssec-enable no;
   dnssec-validation no;
systemctl restart named

yum -y install chrony
vim /etc/chrony.conf
   server ntp1.aliyun.com iburst
   bindacqaddress 0.0.0.0
   allow 0/0
systemctl restart chronyd
chronyc sources -v

虚拟机openstack,nova:

yum -y install chrony
vim /etc/chrony.conf
   server 192.168.1.254 iburst
systemctl restart chronyd
chronyc sources -v

创建后端模板虚拟机

qemu-img create -f qcow2 node.qcow2 8G         ##创建后端盘
在virt-manager中使用该后端盘新建一台虚拟机,具体操作如下:
选择网络安装
-->URL: ftp://176.204.xx.xx/centos
-->RAM: 2048MiB   CPU: 2
-->选择或创建自定义存储 /var/lib/libvirt/images/node.qcow2
-->选择网络 虚拟网络'vbr':NAT
-->最小化分区Minimal Install
-->关闭 KUDMP
-->选择手动分区 I will configure partitioning
-->New mount points will use the following partitioning scheme: 
   Standard Partition     
   选择 /
设置root密码,并等待安装完成

进入后端模板虚拟机:

vim /etc/selinux/config    ##禁用selinux
cd /etc/yum.repos.d/
rm -f *
vi centos.repo
    [local_source]
    name=centos
    baseurl=ftp://192.168.1.254/centos
    enabled=1
    gpgcheck=0

yum repolist
yum -y install vim net-tools

卸载防火墙和NetworkManager

yum -y remove firewalld-*
yum -y remove python-firewall
vim /etc/sysconfig/network-scripts/ifcfg-eth0
   DEVICE=eth0
   ONBOOT=yes
   IPV6INIT=no
   TYPE=Ethernet
   BOOTPROTO=dhcp
yum -y remove NetworkManager-*
systemctl stop NetworkManager
systemctl restart network 

ip route show                                 ##将看到一条空路由,会有一定的影响
vim /etc/sysconfig/network
   NOZEROCONF=yes                  ##添加本行,禁用空路由
systemctl restart network
ip route show                                

导入gpg key

yum -y install lftp
vim /etc/yum.repos.d/centos.repo
       gpgcheck=1    ##仅修改本行
lftp 192.168.1.254/centos
>get RPM-GPG-KEY-CentOS7
>bye
rpm --import RPM-GPG-KEY-CentOS7
yum -y install psmisc                               ##验证导入KEY后能否安装软件

打开串口终端,方便使用virsh console连接

vim /etc/sysconfig/grub
   GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
   GRUB_DISABLE_LINUX_UUID="true"
   GRUB_ENABLE_LINUX_LABEL="true"

grub2-mkconfig -o /boot/grub2/grub.cfg     ##重新生成grub.cfg
vim /etc/fstab
   ##将UUID修改为/dev/vda1

安装分区扩展软件(有扩容需求时执行)

yum -y install cloud-utils-growpart
shutdown
物理机:virt-sysprep -d node            ##执行信息清理工作

快速创建虚拟机

virsh undefine node                 ##取消定义,保证后端模板只读
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b node.qcow2 node1.img 30G
sed 's,node,node1,' /root/node.xml > /etc/libvirtd/qemu/node1.xml
virsh define /etc/libvirtd/qemu/node1.xml
virsh start node1

添加一块新的网卡和设备

virsh console node1
ip link show
Ctrl + ]                                                   ##退出虚拟机,进入物理机
virsh edit node1
                      ##在第一个后添加4行
             
             
     

poweroff -p 
virsh start --console node1
ip link show
ifconfig -a
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1
   DEVICE=eth1
   ONBOOT=yes
   IPV6INIT=yes
   TYPE=Ethernet
   BOOTPROTO=static
   IPADDR=192.168.4.100
   PREFIX=24

systemctl restart network

物理机:为虚拟机node1添加一块硬盘

qemu-img create -f qcow2 disk.img 20G
virsh edit node1
     
           
           
           
    

halt -p
virsh start node1
lsblk

离线修改前,后端磁盘的方式(非需要操作,需谨慎)

##注意:修改后端盘后,所有前端盘都会失效
guestmount -a /var/lib/libvirt/images/node.qcow2 -i /mnt/     ##-a 指定镜像的位置  -i 指定一个空的目录
chroot /mnt/
cd /mnt/
umount /mnt

切记:每台机器只能有一个网关!
在/etc/sysconfig/network-scripts/ifcfg-eth0将网关配置为192.168.1.254
使private1能够上网
物理机:

virsh net-edit private1
     

虚拟机openstack:
创建openstack存储卷

yum -y install lvm2
vgcreate cinder-volumes /dev/vdb

修改centos1708YUM源的gpgcheck=1,并导入公钥,

rpm --import RPM-GPG-KEY-CentOS-7
yum -y install qemu-kvm \
  > libvirt-client \
  > livbirt-daemon \
  > libvirt-daemon-driver-qemu \
  > python-setuptools

最后的环境检测

sestatus                                        ##查看SELinux状态并禁用
rpm -qa |grep firewall                    ##查看是否已卸载防火墙
rpm -qa |grep NetworkManager    ##查看是否已卸载NetworkManager
ping 192.168.4.xx                         ##查看ip是否正确
yum repolist                                  ##查看YUM源
vgs                                                ##查看是否存在cinder-volumes卷组
gpgcheck=1                                  ##查看是否已修改第一个系统源的gpgcheck=1
virsh                                              ##查看KVM平台是否搭建成功
##注意:需修改所有ip为静态IP,取消DHCP服务
##两台虚拟机均需符合以上配置:第一台修改主机名为openstack,内存8G;第二台修改主机名为nova,内存6G

开始安装openstack

虚拟机openstack:

yum -y install openstack-packstack
packstack --gen-answer-file answer.ini                                                  ##ini文件自带颜色,便于发现错误
vim answer.ini                                                                                        ##修改应答文件
   CONFIG_DEFAULT_PASSWORD=Taren1                                        ##第11行
   CONFIG_CINDER_INSTALL=n                                                          ##第25行 使用本机硬盘存储,不适用共享存储
   CONFIG_SWIFT_INSTALL=n                                                             ##第42行
   CONFIG_NTP_SERVERS=192.168.1.254                                         ##第75行
   CONFIG_CINDER_VOLUMES_CREATE=n                                       ##第554行
   CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan                    ##第840行
   CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5                    ##第876行
   CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex   ##第910行
   CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0                 ##第921行
   CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1                                   ##第936行
   CONFIG_PROVISION_DEMO=n                                                        ##第1179行

packstack --answer-file answer.ini

openstack安装完成后

vim /etc/httpd/conf.d/15-horizon_vhost.conf
    WSGIApplicationGroup %{GLOBAL}              ##添加本行
apachectl graceful

在虚拟机家目录下:
cat ~/keystonerc_admin                                       ##查看密码

物理机:
firefox 192.168.1.100                                           ##通过浏览器访问dashboard,可以看到登录页面