kolla-ansible部署OpenStack(allinone方式)

kolla-ansible部署OpenStack(allinone方式)

参考文档:Quick Start — kolla-ansible 14.10.1.dev53 documentation

参考文档:Quick Start — kolla-ansible 14.10.1.dev53 documentation

一作:恩师 张雨嘉

1.设置主机名、IP地址、关闭防火墙和SElinux

# 设置主机名
hostnamectl set-hostname openstack
# 设置IP地址(两块网卡)
# 网卡规划(至少两个网络,最好三个网络)
ens160(NAT/桥接)-配置地址
ens224(配置仅主机-专门去连接到内网)-不配置地址
# 查看网络连接
nmcli connection show
# 修改NAT网卡(ens160)并生效
nmcli connection modify "ens160" ipv4.addresses "192.168.8.10/24" ipv4.gateway "192.168.8.2" ipv4.dns "223.5.5.5" ipv4.method manual connection.autoconnect yes
nmcli connection up ens160

 2.关闭防火墙和selinux

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭selinux
vi /etc/selinux/config
# 修改以下内容
SELINUX=disabled
​
# 设置hosts
echo "192.168.8.10 openstack" >> /etc/hosts
# 设置密钥
ssh-keygen -t rsa
# 配置免密
ssh-copy-id openstack

3.去aliyun换相关yum源

# 基础源替换
  sed -e 's|^mirrorlist=|#mirrorlist=|g' \
      -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \
      -i.bak \
      /etc/yum.repos.d/almalinux*.repo
# epel源
dnf install epel-release -y
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

4.安装network-scripts并设置为首选网络管理服务

# 安装network-scripts
dnf install network-scripts -y
# 设置network-scripts为首选网络管理服务
systemctl stop NetworkManager && systemctl disable NetworkManager && systemctl start network && systemctl enable network

5.安装kolla-ansible支持的基础软件包

dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux -y

6.设置pip以及venv

# 替换pip源-准备工作
mkdir .pip
cd .pip
vi pip.conf
# 替换pip源-插入以下内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
​
[install]
trusted-host=mirrors.aliyun.com
# 创建venv环境
mkdir /kolla-ansible-env
python3 -m venv /kolla-ansible-env/
# 注意:这个部分是加载env环境的,只要你系统做过关机重启,就需要重新运行以下命令加载
source /kolla-ansible-env/bin/activate

7.升级pip版本

pip install --upgrade pip

8.安装ansible和相关依赖包

pip install 'ansible>=4,<6'
pip install selinux

9.拉取kolla-ansible代码(有时候网不好,要多试几次)

pip install git+https://opendev.org/openstack/kolla-ansible@unmaintained/yoga

10.创建/etc/kolla目录并设置权限

mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla

11.拷贝模板文件到/etc/kolla目录

cp -r /kolla-ansible-env/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

12.拷贝主机清单文件并设置python解析器

# 拷贝文件
cp /kolla-ansible-env/share/kolla-ansible/ansible/inventory/* .
# 设置解析器
vi all-in-one
# 在文件首行插入以下内容
localhost ansible_python_interpreter=python

13.安装kolla-ansible相关galaxy

# 检查文件是否是如下内容
cat /usr/local/share/kolla-ansible/requirements.yml
---
collections:
  - name: https://opendev.org/openstack/ansible-collection-kolla
    type: git
    version: unmaintained/yoga
# 安装依赖项
kolla-ansible install-deps

14.配置ansible.cfg

mkdir /etc/ansible/
vi /etc/ansible/ansible.cfg
# 插入以下内容
[defaults]
host_key_checking=False
pipelining=True
forks=100

15.生成密码文件

# 生成
kolla-genpwd
# 所有密码都在这里找,重点查看登录密码
cat /etc/kolla/passwords.yml | grep keystone_admin_password
......
keystone_admin_password: xxxxxxxxxxxxxxxxxxxxxxxx
......

16.修改global.yml

vi /etc/kolla/globals.yml
# 只修改以下几个选项并取消注释
# 这行直接取消注释即可
kolla_base_distro: "centos"
# 这行修改成你的桥接/NAT的外网网卡
network_interface: "ens160"
# 这行修改为你的内网网卡即可
neutron_external_interface: "ens224"
# 配置虚拟 IP 地址(和外网一个网段)
kolla_internal_vip_address: "192.168.8.210"

17.修改docker的daemon.json文件,防止拉取镜像出问题

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["这里写你的镜像加速器地址,去阿里云里边去看"]
}
EOF

18.软件更新/重启/做模板(给多节点部署做准备工作)

# 更新
dnf update
# 更新后重启
reboot
# 开机后关机->做快照

19.下载需要部署的软件包

# 注意:因为docker国内被封禁,所以需要改这个kolla-ansible源码中的变量
# 转到这个目录
cd /root/.ansible/collections/ansible_collections/openstack/kolla/roles/baremetal/defaults
# 打开这个文件
vi main.yml
# 找到这条,修改以下内容
docker_yum_url: "https://mirrors.aliyun.com/docker-ce/linux/centos/"

# 注意:这个部分是加载env环境的,只要你系统做过关机重启,就需要重新运行以下命令加载
source /kolla-ansible-env/bin/activate
# 运行预部属(allinone单节点方式)
kolla-ansible -i ./all-in-one bootstrap-servers

# 多节点方式(需要配置清单)
# 先修改multinode里边的IP地址
vim multinode
# 测试这些节点是否可以通畅(前提各个节点都需要做免密登录)
ansible -i multinode all -m ping
# 运行预部属
kolla-ansible -i ./multinode bootstrap-servers

20.检查机器是否符合要求

# 注意:因为这个工具不支持咱们(alama 相当于centos7)的系统,但实际是可以的,所以需要改代码
cd /kolla-ansible-env/share/kolla-ansible/ansible/roles/prechecks/vars
# 编辑文件
vi main.yml
# 添加以下内容(注意跟前边的格式对齐)
  AlmaLinux:
    - "8"
    - "9"
# 单节点
kolla-ansible -i ./all-in-one prechecks
# 多节点
kolla-ansible -i ./multinode prechecks
# 如果在单节点预检时候出现下列问题,检查/etc/host里的内容,删除多余hosts条目即可
failed: [localhost] (item=[{'changed': False, 'stdout': '172.25.250.10   STREAM openstack\n172.25.250.10   DGRAM  \n172.25.250.10   RAW    ', 'stderr': '', 'rc': 0, 'cmd': ['getent', 'ahostsv4', 'openstack'], 'start': '2024-06-20 06:32:26.093954', 'end': '2024-06-20 06:32:26.096506', 'delta': '0:00:00.002552', 'msg': '', 'invocation': {'module_args': {'_raw_params': 'getent ahostsv4 openstack', '_uses_shell': False, 'warn': False, 'stdin_add_newline': True, 'strip_empty_ends': True, 'argv': None, 'chdir': None, 'executable': None, 'creates': None, 'removes': None, 'stdin': None}}, 'stderr_lines': [], 'failed': False, 'item': 'localhost', 'ansible_loop_var': 'item'}, '172.25.250.10   STREAM openstack']) => {"ansible_loop_var": "item", "changed": false, "item": [{"ansible_loop_var": "item", "changed": false, "cmd": ["getent", "ahostsv4", "openstack"], "delta": "0:00:00.002552", "end": "2024-06-20 06:32:26.096506", "failed": false, "invocation": {"module_args": {"_raw_params": "getent ahostsv4 openstack", "_uses_shell": false, "argv": null, "chdir": null, "creates": null, "executable": null, "removes": null, "stdin": null, "stdin_add_newline": true, "strip_empty_ends": true, "warn": false}}, "item": "localhost", "msg": "", "rc": 0, "start": "2024-06-20 06:32:26.093954", "stderr": "", "stderr_lines": [], "stdout": "172.25.250.10   STREAM openstack\n172.25.250.10   DGRAM  \n172.25.250.10   RAW    "}, "172.25.250.10   STREAM openstack"], "msg": "Hostname has to resolve uniquely to the IP address of api_interface"}

21.正式部署

# 单节点
kolla-ansible -i ./all-in-one deploy
# 多节点
kolla-ansible -i ./multinode deploy

22.安装命令行管理

# 安装
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga
# 生成admin文件
kolla-ansible post-deploy
# 使用文件
cp /etc/kolla/admin-openrc.sh /root/admin-openrc
source /root/admin-openrc

 

23.(重要)修改网络配置文件,使得openstack能正常与外部通信

注意:

1.一定要保证openstack中没有任何网络,如果有,需要把所有网络删除清空后在修改配置文件

2.如果是多节点部署,这个配置需要在控制节点/网络节点里修改(如何找这个文件请自行研究)

 

# 修改此文件
vim /etc/kolla/neutron-server/ml2_conf.ini
# 清空文件中的所有行,并复制以下的所有内容
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security,qos

[securitygroup]
enable_security_group=True

[ml2_type_geneve]

[ml2_type_gre]

[ml2_type_flat]
flat_networks = physnet1

[ml2_type_vxlan]
vni_ranges = 10000:19999

[ml2_type_flat]
flat_networks=extnet

# 修改此文件
vim /etc/kolla/neutron-openvswitch-agent/openvswitch_agent.ini
# 清空文件中的所有行,并复制以下的所有内容
[agent]
tunnel_types = vxlan
vxlan_udp_port=4789
l2_population = false
arp_responder = true
drop_flows_on_start=false

[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

[ovs]
bridge_mappings = extnet:br-ex
integration_bridge=br-int
tunnel_bridge=br-tun
datapath_type = system
ovsdb_connection = tcp:127.0.0.1:6640
ovsdb_timeout = 10
local_ip = 192.168.8.10
# 重启openstack虚拟机
reboot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值