当前位置:   article > 正文

kolla-ansible 安装openstack all-in-one_vmware 安装虚机 部署kolla-ansible方式的openstack

vmware 安装虚机 部署kolla-ansible方式的openstack

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/dandanfengyun/article/details/112917279

收起

系统基本设置

CentOS7系统配置
VMware虚拟机,内存8G,硬盘100G(swap分区4G,boot分区200M,剩下全给根目录/)+50G(系统安装完成后添加,作为cinder backup的 VG卷组),CPU开启虚拟化支持,双网卡桥接模式。

1.关闭防火墙 和 selinux

关闭防火墙

  1. systemctl disable firewalld
  2. systemctl stop firewalld

关闭selinux

vi /etc/selinux/config
SELINUX=disabled

需重启系统后生效

setenforce 0

命令可将当前selinux设置为permissive,重启系统后失效

2.设置 dns 和 主机名查询静态表

设置dns服务器地址

  1. cat >> /etc/resolv.conf << EOF
  2. nameserver 8.8.8.8
  3. nameserver 8.8.4.4
  4. EOF

hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件
设置本机IP与域名

  1. cat >> /etc/hosts << EOF
  2. 192.168.199.90 ALLInOne-Kolla
  3. EOF

设置主机名

  1. cat >> /etc/hostname << EOF
  2. ALLInOne-Kolla
  3. EOF
hostnamectl set-hostname ALLInOne-Kolla

3.设置网卡,配置网卡信息

IP地址网络类型网卡 在OpenStack网络中的作用
192.168.23.102bridge(桥接)ens33 OpenStack内部管理网络(management network),Horizon web界面访问就是通过该网卡
无(不能配置IP地址)bridge(桥接)ens34 外部网络(external network),让neutron(OpenStack中的网络组件)的br-ex绑定使用,OpenStack中的虚拟机是通过该网卡与外网通信
vi /etc/sysconfig/network-scripts/ifcfg-ens33

//修改以下几行,如果不存在则添加

  1. BOOTPROTO=static   //将dhcp改为static,使自动获取改为静态获取
  2. ONBOOT=yes //启动用该网卡
  3. IPADDR=192.168.23.102 //设置IPv4地址
  4. NETMASK=255.255.255.0  //设置子网掩码
  5. GATEWAY=192.168.23.2 //设置默认网关
vi /etc/sysconfig/network-scripts/ifcfg-ens34
  • 1

//修改以下几行,如果不存在则添加。

  1. TYPE=Ethernet
  2. NAME=ens34
  3. DEVICE=ens34  //如果是开启虚拟机后添加网卡,需要手动编辑以上三行
  4. BOOTPROTO=none  //将dhcp改为none,使自动获取改为静态获取
  5. ONBOOT=yes  //启用该网卡
systemctl restart network

4.安装基础包

1.下载epel源

yum -y install epel-release

2.下载 vim 和 net-tools

yum -y install vim net-tools

3.安装基础包

yum -y install python-devel libffi-devel gcc openssl-devel git python-pip

设置pip的下载源 阿里云

mkdir .pip
  1. cat > .pip/pip.conf << EOF
  2. [global]
  3. index-url=http://mirrors.aliyun.com/pypi/simple/
  4. [install]
  5. trusted-host=mirrors.aliyun.com
  6. EOF

升级pip# 最好不要升级 升级之后使用会报语法错误

pip install --upgrade pip==20.3.4

或者找到对应版本的get-pip文件 手动升级。

wget https://bootstrap.pypa.io/2.7/get-pip.py
python get-pip.py 

如果不指定版本号

pip install --upgrade pip

一般来说可以成功,但有时升级完后pip 使用时报错sys.stderr.write(f“ERROR: {exc}“)

莫名的错误。。。可能是21.0版本的问题,可以尝试安装20.3.4版本

5.生成ssh key,并给自己授权

ssh-keygen

生成ssh公钥,默认设置即可,按三次回车。

ssh-copy-id root@ALLInOne-Kolla

ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。
选择yes,输入root用户 密码

6.安装docker

curl -sSL https://get.docker.io | bash

 

设置docker 容器镜像加速,阿里云

  1. cat >> /etc/docker/daemon.json << EOF
  2. {
  3. "registry-mirrors": ["https://4606dfbh.mirror.aliyuncs.com"]
  4. }
  5. EOF

设置docker volume卷挂载方式 Share 方便增加磁盘,不用重启docker

mkdir -p /etc/systemd/system/docker.service.d
  1. cat >> /etc/systemd/system/docker.service.d/kolla.conf << EOF
  2. [Service]
  3. MountFlags=shared
  4. EOF

重启docker

  1. systemctl daemon-reload
  2. systemctl restart docker

 

安装kolla-ansible 部署OpenStack

Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署和管理。

Kolla实际上分为两部分:
  Kolla部分提供了生产环境级别的镜像,涵盖了OpenStack用到的各个服务;Kolla为操作OpenStack云提供可生产的容器和部署工具。
  Kolla-ansible部分提供了自动化的部署。Kolla-Ansible在Docker容器中部署OpenStack服务和基础设施组件。

一、安装ansible kolla-ansible

使用pip时可能有警告

  1. /usr/lib/python2.7/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.3) or chardet (2.2.1) doesn't match a supported version!
  2. RequestsDependencyWarning)
  1. pip uninstall -y urllib3
  2. pip uninstall -y chardet
  3. pip install requests

1.使用pip安装ansible,注意不要使用yum安装,否则会与kolla中的YAML包冲突。且ansible版本应为2.6-2.9

pip install ansible==2.9.0

2.pip安装kolla-ansible 同样需要指定版本,版本对应如下
https://releases.openstack.org/teams/kolla.html

pip install kolla-ansible==9.3.0

如果有报错 ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately

pip install kolla-ansible --ignore-installed PyYAML

未git clone kolla和kolla-ansible项目。
Kolla为操作OpenStack云提供可生产的容器和部署工具,也就是可以通过kolla的部署工具来构建镜像,docker hub中存在这些镜像。可以直接pull。
Kolla-Ansible在Docker容器中部署OpenStack服务和基础设施组件。已经通过pip 安装了,不必再通过git项目获取。
且通过pip 安装的kolla-ansible同时下载了配置文件。且可通过kolla-ansible的剧本完成 镜像的拉取,容器的创建等,不必通过kolla工具。

二、进行基本OpenStack配置

1.复制配置文件到/etc/kolla/

  1. cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
  2. cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/

文件说明:all-in-one是安装单节点OpenStack的ansible自动安装配置文件;multinode是安装多节点OpenStack的ansible自动安装配置文件;globals.yml是OpenStack部署的自定义配置文件;passwords.yml是OpenStack中各个服务的密码文件。

生成密码到passwords.yml 包括dashboard认证密码,grafana登录密码等

kolla-genpwd

这些密码是即将设置到OpenStack中的,安装部署OpenStack前可以修改,但是OpenStack安装完成后,不要再修改。

/etc/kolla/passwords.yml

2.添加一块新硬盘,设置为lvm vg卷组 作为cinder 卷

yum -y  install lvm2 

创建一个PV卷

pvcreate /dev/sdb

创建卷组 卷组名cinder-volumes

vgcreate cinder-volumes /dev/sdb
  •  
  1. [root@ALLInOne-Kolla ~]# vgdisplay
  2. --- Volume group ---
  3. VG Name cinder-volumes
  4. System ID
  5. Format lvm2
  6. Metadata Areas 1
  7. Metadata Sequence No 1
  8. VG Access read/write
  9. VG Status resizable
  10. MAX LV 0
  11. Cur LV 0
  12. Open LV 0
  13. Max PV 0
  14. Cur PV 1
  15. Act PV 1
  16. VG Size <20.00 GiB
  17. PE Size 4.00 MiB
  18. Total PE 5119
  19. Alloc PE / Size 0 / 0
  20. Free PE / Size 5119 / <20.00 GiB
  21. VG UUID H9H1Aa-gdbE-W0rV-SLBC-wMPL-baPQ-RLEJCe
  22. --- Volume group ---
  23. VG Name centos
  24. System ID
  25. Format lvm2
  26. Metadata Areas 1
  27. Metadata Sequence No 3
  28. VG Access read/write
  29. VG Status resizable
  30. MAX LV 0
  31. Cur LV 2
  32. Open LV 2
  33. Max PV 0
  34. Cur PV 1
  35. Act PV 1
  36. VG Size 99.80 GiB
  37. PE Size 4.00 MiB
  38. Total PE 25549
  39. Alloc PE / Size 25549 / 99.80 GiB
  40. Free PE / Size 0 / 0
  41. VG UUID PsaQNJ-QcF9-knVD-1KxF-tuAV-qSpc-NI7ERV

3.编辑golbals配置文件。(只设置安装基本的OpenStack组件。)

vim /etc/kolla/globals.yml 
  1. # Valid options are ['centos', 'debian', 'rhel', 'ubuntu'] 系统类型
  2. kolla_base_distro: "centos"
  3. # Valid options are [ binary, source ] 安装方式
  4. kolla_install_type: "source"
  5. # Do not override this unless you know what you are doing. 安装版本
  6. openstack_release: "train"
  7. # Location of configuration overrides 自定义配置文件位置。(默认各组件配置文件路径是/etc/kolla/{服务名}/配置文件)
  8. 如果在/etc/kolla/config设置了相关服务的配置文件,会将该配置文件替换原配置文件(复制该文件替换原文件。。。)
  9. 使用前还是复制原配置文件到/etc/kolla/config再在基础上做修改更好。
  10. #node_custom_config: "/etc/kolla/config"
  11. # OpenStack内部管理网络地址。
  12. #如果设置了高可用haproxy,此处为VIP(虚拟漂移IP)。使用ALLinOne配置,直接将ens33IP 写入即可
  13. kolla_internal_vip_address: "192.168.199.90"
  14. # OpenStack内部管理网络地址的网卡接口
  15. network_interface: "ens33"
  16. # 网卡应该在没有IP地址的情况下处于活动状态。
  17. neutron_external_interface: "ens34"
  18. # 关闭高可用
  19. enable_haproxy: "no"
  20. # 设置块存储cinder。默认使用lvm时块存储名称cinder-volumes
  21. enable_cinder: "yes"
  22. enable_cinder_backup: "yes"
  23. enable_cinder_backend_lvm: "yes"
  24. #cinder_volume_group: "cinder-volumes"
  25. # Valid options are [ qemu, kvm, vmware, xenapi ]
  26. # 如果设置虚拟机开启了CPU虚拟化 或者 宿主机支持CPU虚拟化且开启。那么可以使用kvm。 如果未启用CPU虚拟机,选择qemu。
  27. nova_compute_virt_type: "qemu"

4.编辑 allinone 文件。

vim /etc/kolla/all-in-one 

修改3到19行

  1. [control]
  2. ALLInOne-Kolla
  3. [network]
  4. ALLInOne-Kolla
  5. [compute]
  6. ALLInOne-Kolla
  7. [storage]
  8. ALLInOne-Kolla
  9. [monitoring]
  10. ALLInOne-Kolla
  11. [deployment]
  12. ALLInOne-Kolla

三、安装部署

1.bootstrap-server安装OpenStack所需的依赖包。

kolla-ansible bootstrap-servers -i /etc/kolla/all-in-one 

 

2.pull 拉取docker镜像。有时候出错停止,重新执行就好了。

kolla-ansible pull -i /etc/kolla/all-in-one

3.检测安装。

kolla-ansible prechecks -i /etc/kolla/all-in-one

4.部署安装 不进行pull操作,直接deploy也是可以的。deploy会先把镜像下载到本地,然后设置配置文件,再运行容器。

kolla-ansible deploy -i /etc/kolla/all-in-one

5.验证部署,并且生成/etc/kolla/admin-openrc.sh认证文件。

kolla-ansible post-deploy -i /etc/kolla/all-in-one

备注: docker 相关

kolla安装OpenStack各个组件docker,容器使用的host网络模式,该模式下的Docker 容器会和host宿主机共享同一个网络namespace,故Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的IP地址即为宿主机 eth0的IP地址。

1.各个组件的日志文件.多个组件共用一个docker volume。

ls /var/log/kolla/

2.各个组件的配置文件

ls /etc/kolla/

可以修改配置文件,然后重启对应的docker 容器。

3.各个组件挂载的数据卷

docker volume ls

五、初始化OpenStack网络,镜像等。创建虚拟机

1.安装OpenStack命令行。
先安装版本不匹配的组件

pip install -I ipaddress

安装命令行工具

pip install python-openstackclient

2.初始化OpenStack 如网络 安全组 实例类型等。通过init-runonce文件完成。
编辑init-runonce文件 去除 cirros镜像下载相关(下载速度特别慢)
设置外部网络相关

vim /usr/share/kolla-ansible/init-runonce
  1. # This EXT_NET_CIDR is your public network,that you want to connect to the internet via.
  2. # 与外部连接网络 相关设置
  3. ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
  4. EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.199.0/24'}
  5. EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.199.20,end=192.168.199.79'}
  6. EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.199.1'}
  7. # 注释掉与镜像下载相关
  8. echo Checking for locally available cirros image.
  9. # Let's first try to see if the image is available locally
  10. # nodepool nodes caches them in $IMAGE_PATH
  11. #if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
  12. # IMAGE_PATH='./'
  13. # if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
  14. # echo None found, downloading cirros image.
  15. # curl -L -o ${IMAGE_PATH}/${IMAGE} ${IMAGE_URL}/${IMAGE}
  16. # fi
  17. #else
  18. # echo Using cached cirros image from the nodepool node.
  19. #fi
  20. #echo Creating glance image.
  21. #openstack image create --disk-format qcow2 --container-format bare --public \
  22. # --property os_type=${IMAGE_TYPE} --file ${IMAGE_PATH}/${IMAGE} ${IMAGE_NAME}

加载认证

source /etc/kolla/admin-openrc.sh
  • 1

初始化OpenStack。(部署完成未操作过OpenStack,不然可能有奇怪的错误)(不进行这一步,自己手动创建网络也是可以的)

/usr/share/kolla-ansible/init-runonce
  • 1

执行命令可能会报错ImportError: No module named queue
replace “import queue” with:
from multiprocessing import Queue as queue
将相应报错文件 将import queue改为

  1. /usr/lib/python2.7/site-packages/openstack/utils.py
  2. /usr/lib/python2.7/site-packages/openstack/cloud/openstackcloud.py
from multiprocessing import Queue as queue

3.可以使用OpenStack命令行工具对openstack进行操作。如查看镜像,创建实例等
操作前也要先完成认证。

source /etc/kolla/admin-openrc.sh
  • 1
openstack image list
  • 1

4.登录dashboard。
dashboard

如果创建的实例启动卡在Booting from Hard Disk。可尝试修改镜像文件元数据。修改硬盘属性为ide,网卡属性为e1000

openstack image set  --property hw_disk_bus=ide  --property hw_vif_model=e1000 92ddf5ae-0c96-4522-b77e-17afa517e386

六、kolla-ansible 一些其他命令。

  1. [root@ALLInOne-Kolla ~]# kolla-ansible -h
  2. Usage: /usr/bin/kolla-ansible COMMAND [options]
  3. Options:
  4. --inventory, -i <inventory_path> Specify path to ansible inventory file
  5. --playbook, -p <playbook_path> Specify path to ansible playbook file
  6. --configdir <config_path> Specify path to directory with globals.yml
  7. --key -k <key_path> Specify path to ansible vault keyfile
  8. --help, -h Show this usage information
  9. --tags, -t <tags> Only run plays and tasks tagged with these values
  10. --skip-tags <tags> Only run plays and tasks whose tags do not match these values
  11. --extra, -e <ansible variables> Set additional variables as key=value or YAML/JSON passed to ansible-playbook
  12. --passwords <passwords_path> Specify path to the passwords file
  13. --limit <host> Specify host to run plays
  14. --forks <forks> Number of forks to run Ansible with
  15. --vault-id <@prompt or path> Specify @prompt or password file (Ansible >= 2.4)
  16. --ask-vault-pass Ask for vault password
  17. --vault-password-file <path> Specify password file for vault decrypt
  18. --verbose, -v Increase verbosity of ansible-playbook
  19. Commands:
  20. prechecks Do pre-deployment checks for hosts
  21. check Do post-deployment smoke tests
  22. mariadb_recovery Recover a completely stopped mariadb cluster
  23. mariadb_backup Take a backup of MariaDB databases
  24. --full (default)
  25. --incremental
  26. bootstrap-servers Bootstrap servers with kolla deploy dependencies
  27. destroy Destroy Kolla containers, volumes and host configuration
  28. --include-images to also destroy Kolla images
  29. --include-dev to also destroy dev mode repos
  30. deploy Deploy and start all kolla containers
  31. deploy-bifrost Deploy and start bifrost container
  32. deploy-servers Enroll and deploy servers with bifrost
  33. deploy-containers Only deploy and start containers (no config updates or bootstrapping)
  34. post-deploy Do post deploy on deploy node
  35. pull Pull all images for containers (only pulls, no running container changes)
  36. reconfigure Reconfigure OpenStack service
  37. stop Stop Kolla containers
  38. certificates Generate self-signed certificate for TLS *For Development Only*
  39. upgrade Upgrades existing OpenStack Environment
  40. upgrade-bifrost Upgrades an existing bifrost container
  41. genconfig Generate configuration files for enabled OpenStack services
  1. genconfig 生成配置文件,deploy之前设置,生成后可进行相应修改再deploy
  2. reconfigure 看官方文档应该是加载新配置的意思
  3. destroy 删除OpenStack相关组件。

自定义配置 文件设置

node_custom_config: "/etc/kolla/config"

/etc/kolla/config 就是自定义配置文件的目录(可能需要自己创建该目录)。可以设置的自定义配置文件路径如下。service name服务名,hostname主机名, config file配置文件。
/etc/kolla/config/<< config file >>,
/etc/kolla/config/<< service name >>/<< config file >>
/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>

注,自定义配置文件会替换原配置文件。。。也就是说reconfigure后原配置文件就不存在了。会复制自定义配置文件到原配置文件位置。修改尽量在原配置基础上修改(先复制再修改。。。)

kolla-ansible reconfigure

七。OpenStack镜像与实例的创建相关

https://blog.csdn.net/avatar_2009/article/details/107859727

当设置nova_compute_virt_type: "kvm" 时,有可能有一些问题。

  • 使用kvm时,镜像的元数据需要设为hw_disk_bus=ide hw_vif_model=e1000创建的虚拟实例才能成功启动,否则一直卡在Booting from Hard Disk

  • 创建卷cinder 无法连接到实例上。虽然未报错。。。

  • 如果设置hw_disk_bus=virtio/scsi。实例启动时卡在 Machine UUID。也是无法启动

  • 且附加cinder 卷时 虽然未报错,但是一直无法成功。

  • (原因未知,可能是在VMware虚拟机部署OpenStack的缘故?) 真实服务器作为宿主机没这种问题?

  • 设置为qemu时(既不用设置元数据实例即可正常启动,也可以成功挂载cinder卷)

通过安装的监控相关docker来监控虚拟机 学习中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/176669
推荐阅读
相关标签
  

闽ICP备14008679号