ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

通过Kolla安装部署OpenStack train版,ALLinOne

2021-01-29 17:00:01  阅读:938  来源: 互联网

标签:-- train etc ansible ALLinOne pip OpenStack kolla


系统基本设置

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

1.关闭防火墙 和 selinux

关闭防火墙

systemctl disable firewalld
systemctl stop firewalld

关闭selinux

vi /etc/selinux/config
SELINUX=disabled

需重启系统后生效

setenforce 0

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

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

设置dns服务器地址

cat >> /etc/resolv.conf << EOF
nameserver	8.8.8.8
nameserver 8.8.4.4
EOF

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

cat >> /etc/hosts << EOF
192.168.199.90	ALLInOne-Kolla
EOF

设置主机名

cat >> /etc/hostname << EOF
ALLInOne-Kolla
EOF
hostnamectl set-hostname ALLInOne-Kolla

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

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

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

BOOTPROTO=none  		//将dhcp改为none,使自动获取改为静态获取
ONBOOT=yes				//启动用该网卡
IPADDR=192.168.199.90  //设置IPv4地址
NETMASK=255.255.255.0  //设置子网掩码
GATEWAY=192.168.199.1  //设置默认网关
vi /etc/sysconfig/network-scripts/ifcfg-ens34

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

TYPE=Ethernet
NAME=ens34
DEVICE=ens34  //如果是开启虚拟机后添加网卡,需要手动编辑以上三行
BOOTPROTO=none  //将dhcp改为none,使自动获取改为静态获取
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
cat > .pip/pip.conf << EOF
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF

升级pip

pip install --upgrade pip

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

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

pip install --upgrade pip==20.3.4

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

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

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

ssh-keygen
ssh-copy-id root@ALLInOne-Kolla

安装kolla-ansible 部署OpenStack

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

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

一、安装ansible kolla-ansible

使用pip时可能有警告

/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!
  RequestsDependencyWarning)
pip uninstall -y urllib3
pip uninstall -y chardet
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

未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/

cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
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

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

vim /etc/kolla/globals.yml 
# Valid options are ['centos', 'debian', 'rhel', 'ubuntu'] 系统类型
kolla_base_distro: "centos"

# Valid options are [ binary, source ]	安装方式
kolla_install_type: "binary"

# Do not override this unless you know what you are doing. 安装版本
openstack_release: "train"

# Location of configuration overrides	默认配置文件位置
#node_custom_config: "/etc/kolla/config"

# OpenStack内部管理网络地址。
#如果设置了高可用haproxy,此处为VIP(虚拟漂移IP)。使用ALLinOne配置,直接将ens33IP 写入即可
kolla_internal_vip_address: "192.168.199.90"

# OpenStack内部管理网络地址的网卡接口
network_interface: "ens33"

# 网卡应该在没有IP地址的情况下处于活动状态。
neutron_external_interface: "ens34"

# 关闭高可用
enable_haproxy: "no"

# 设置块存储cinder。默认使用lvm时块存储名称cinder-volumes
enable_cinder: "yes"
enable_cinder_backup: "yes"
enable_cinder_backend_lvm: "yes"
#cinder_volume_group: "cinder-volumes"

# Valid options are [ qemu, kvm, vmware, xenapi ]
# 如果设置虚拟机开启了CPU虚拟化 或者 宿主机支持CPU虚拟化且开启。那么可以使用kvm。 如果未启用CPU虚拟机,选择qemu。
nova_compute_virt_type: "qemu"

4.编辑 allinone 文件。

vim /etc/kolla/all-in-one 

修改3到19行

[control]
ALLinOne-Kolla

[network]
ALLInOne-Kolla

[compute]
ALLInOne-Kolla

[storage]
ALLInOne-Kolla

[monitoring]
ALLInOne-Kolla

[deployment]
ALLInOne-Kolla

三、安装部署

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

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

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

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

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

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

重启docker

systemctl daemon-reload
systemctl restart docker

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
# This EXT_NET_CIDR is your public network,that you want to connect to the internet via.
# 与外部连接网络 相关设置
ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.199.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.199.20,end=192.168.199.79'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.199.1'}

# 注释掉与镜像下载相关
echo Checking for locally available cirros image.
# Let's first try to see if the image is available locally
# nodepool nodes caches them in $IMAGE_PATH
#if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
#    IMAGE_PATH='./'
#    if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
#        echo None found, downloading cirros image.
#        curl -L -o ${IMAGE_PATH}/${IMAGE} ${IMAGE_URL}/${IMAGE}
#    fi
#else
#    echo Using cached cirros image from the nodepool node.
#fi

#echo Creating glance image.
#openstack image create --disk-format qcow2 --container-format bare --public \
#    --property os_type=${IMAGE_TYPE} --file ${IMAGE_PATH}/${IMAGE} ${IMAGE_NAME}

加载认证

source /etc/kolla/admin-openrc.sh

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

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

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

/usr/lib/python2.7/site-packages/openstack/utils.py
/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
openstack image list

4.登录dashboard。
dashboard

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

[root@ALLInOne-Kolla ~]# kolla-ansible -h
Usage: /usr/bin/kolla-ansible COMMAND [options]

Options:
    --inventory, -i <inventory_path>   Specify path to ansible inventory file
    --playbook, -p <playbook_path>     Specify path to ansible playbook file
    --configdir <config_path>          Specify path to directory with globals.yml
    --key -k <key_path>                Specify path to ansible vault keyfile
    --help, -h                         Show this usage information
    --tags, -t <tags>                  Only run plays and tasks tagged with these values
    --skip-tags <tags>                 Only run plays and tasks whose tags do not match these values
    --extra, -e <ansible variables>    Set additional variables as key=value or YAML/JSON passed to ansible-playbook
    --passwords <passwords_path>       Specify path to the passwords file
    --limit <host>                     Specify host to run plays
    --forks <forks>                    Number of forks to run Ansible with
    --vault-id <@prompt or path>       Specify @prompt or password file (Ansible >=  2.4)
    --ask-vault-pass                   Ask for vault password
    --vault-password-file <path>       Specify password file for vault decrypt
    --verbose, -v                      Increase verbosity of ansible-playbook

Commands:
    prechecks           Do pre-deployment checks for hosts
    check               Do post-deployment smoke tests
    mariadb_recovery    Recover a completely stopped mariadb cluster
    mariadb_backup      Take a backup of MariaDB databases
                            --full (default)
                            --incremental
    bootstrap-servers   Bootstrap servers with kolla deploy dependencies
    destroy             Destroy Kolla containers, volumes and host configuration
                            --include-images to also destroy Kolla images
                            --include-dev to also destroy dev mode repos
    deploy              Deploy and start all kolla containers
    deploy-bifrost      Deploy and start bifrost container
    deploy-servers      Enroll and deploy servers with bifrost
    deploy-containers   Only deploy and start containers (no config updates or bootstrapping)
    post-deploy         Do post deploy on deploy node
    pull                Pull all images for containers (only pulls, no running container changes)
    reconfigure         Reconfigure OpenStack service
    stop                Stop Kolla containers
    certificates        Generate self-signed certificate for TLS *For Development Only*
    upgrade             Upgrades existing OpenStack Environment
    upgrade-bifrost     Upgrades an existing bifrost container
    genconfig           Generate configuration files for enabled OpenStack services

genconfig 	生成配置文件,deploy之前设置,生成后可进行相应修改再deploy
reconfigure	还原配置重启相应docker容器组件
destroy		删除OpenStack相关组件。

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

标签:--,train,etc,ansible,ALLinOne,pip,OpenStack,kolla
来源: https://blog.csdn.net/dandanfengyun/article/details/112917279

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有