找回密码
 注册
查看: 20|回复: 0

openstack 2023.2 Bobcat 本地安装部署

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2025-3-17 10:00:02 | 显示全部楼层 |阅读模式
一、系统环境, ~& c6 V* m. M5 ^
root@server:~# cat /etc/lsb-release) K! n5 E6 H. \
DISTRIB_ID=Ubuntu
# Y) r: F% E3 r5 Q! BDISTRIB_RELEASE=22.04
* e: j( }( N, y6 n! C3 [' e( j! m; gDISTRIB_CODENAME=jammy
7 }4 Y/ b* }! r8 E' LDISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"  x# |2 h! [5 k$ M3 l
& A6 @, h, k# Z5 M- P2 q2 T2 D
root@server:~# python3 --version
5 Q2 v# }( q: x  Z  X% HPython 3.10.12
3 K9 F+ G, a# }- w- V1 g% g* S5 ~' t
% X" {: X) ~: i3 eroot@server:~# pip --version+ D  ?+ a7 d- ^, V
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10), _, s0 E3 L& U8 I5 x4 |& L
9 t3 D; N- L! @3 I$ {
root@server:~# pip3 --version: I0 s" ?* \) s6 ?+ f$ T
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
! U  D) \/ O! x: f) T. A$ J
# Z1 i0 O+ i  {) Nroot@server:~# docker --version
- B7 h, l& Z! c+ v; {; K# X  l4 \Docker version 27.2.1, build 9e34c9b
3 R  T' M- U" z- Y' A4 s 最小硬件要求7 X4 D, e8 \. F) V3 P
; I8 q9 U/ r( ?  H5 a+ ^5 O: n
2 network interfaces
/ R3 N2 P8 h, `9 }% I
- v& h( n  b  l. p+ B8GB main memory. D! C, k. P" f8 }
( H* R6 c( U, G
40GB disk space
) ^; t, C$ K: i" t二、openstack版本时间列表  R2 [# s3 u! I( p# v* Y
请阅览: T4 E4 l# V# J  H! a
官方文档:OpenStack Releases: OpenStack Releases& X1 D- Q0 V5 b; O0 b
+ w% m0 [: |+ F/ E$ ?. M
三、安装步骤
9 t1 R3 L& R$ T% ^0 w+ m0 L9 q2 |1 K1、更新安装源
5 M5 s- b) q5 v& S+ jsudo apt update: u& O: A/ L% w  H: Q
2、安装python依赖库" j/ n. a* |- n7 W6 f; N1 s5 M
sudo apt install git python3-dev libffi-dev gcc libssl-dev -y4 `$ k# c( }9 C
*在第二步安装完成后,官方文档建议使用python虚拟环境1 ?1 w# }$ r2 I$ p
. x0 S; @7 ~" P5 X
python3-venv
0 l8 X& a* S) A8 `1 t7 Q8 n实际安装中,启用虚拟环境会出现一些文件和依赖库找不到的情况,有科学上网的情况下不使用python虚拟环境更容易成功。- u: ^  `* |$ c1 [) X/ ~/ E$ E
3、更新Pip
/ G% I. S; z# h3 D9 X- ?pip install -U pip
, ?: S" D- _' [8 b1 u4、安装ansible,*此步有版本兼容要求 ,详细查看官方文档
2 B" z. t8 J3 `1 [pip install 'ansible-core>=2.14,<2.16', }$ q( h% c% b; ~% M

& V" T0 s9 a, y- J5 J8 t2 E$ B5、 安装kolla-ansible,*有科学上网速度更快,更易成功。
0 u. }. B( i- h  I( m  ~* x$ Upip install git+https://opendev.org/openstack/kolla-ansible@stable/2023.2" e2 ^' L# q$ h0 P7 |
验证! A+ q/ l# G' n9 P0 P* `* ?# ^: E

" w4 _7 f. ^( s& u% Z8 Lroot@server:~# kolla-ansible --version
/ e$ c4 Q$ k4 M1 b! k17.5.1# L; \# w& N, h; [0 f
. B2 Q8 z& J4 S* a
6、创建/etc/kolla目录
! e/ \) b2 l- s+ U' i0 i: e: dsudo mkdir -p /etc/kolla7 J% F3 W, y8 Z8 P- g) i0 ?; v
sudo chown $USER:$USER /etc/kolla5 r, H! R# T7 V& q
7、复制globals.yml和passwords.yml至/etc/kolla目录。8 p, @- K8 u4 V0 `6 O
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla6 I; e4 |5 M) I3 \. u" B( c" {
6 n; b0 V# A8 ~; d( H
8、将存文件all-in-one复制到当前目录 / b  S/ p+ o, Y. S, }( X6 ?
cp /usr/local/share/kolla-ansible/ansible/inventory/all-in-one .6 B. \* p: h* `  h9 c$ W0 U" z  e& C
9、安装 Ansible Galaxy 依赖项2 d- R. A7 P" q4 @9 M
kolla-ansible install-deps* ^/ g) y9 P+ ]1 g( _+ T- }
10、准备初始配置
# w  P8 D3 {, R6 D, U/ `1 [2 ykolla-genpwd
0 W. q, T: G  n; f. O  n 此命令会自动在/etc/kolla/passwords.yml文件中生成需用到的密码,手动改成我们容易记忆的密码
9 s( Y2 {+ ?8 k6 n
! E  j4 c1 F' i% ~+ O- ^$ ?% [vim /etc/kolla/passwords.yml
' _$ X! h" J4 i3 @1 t: i0 _5 [  R ironic_database_password: OP51scqsHjnnhyrcNP78EgrueWfCZqLsWsAxr6vY& a2 d7 _7 y2 |; r4 b, n
ironic_inspector_database_password: wFGxG2AGUObjFfAgjTik6xKyy45u1q82wJaM9Cpa6 B1 L0 D4 [7 g( n6 B, A7 I
ironic_inspector_keystone_password: 3oO8YGp0C3lLdCWe9po2KlLuLUtZAlbDS5grxAjn3 z6 Y6 {: k5 h1 @
ironic_keystone_password: LnnnShk6HEM8THNgGrng9wqVFzFGtKNSIIzCfYMd8 [6 g5 h( d1 g) ?3 I9 T/ ~
keepalived_password: NzQGRdKBrw3WP9FFbAG0cwHpUNpDMEUolzEWn2Dm
( P3 t3 ?& d7 Vkeystone_admin_password: 【登入密码】例如:root1234.
6 w2 d  o7 E/ l1 Mkeystone_database_password: xaYRCMsOtfPBs27upLeeC8Ve2VuZcmhuKEXvxXFE8 m! S+ [, m5 n8 `5 F  t
keystone_federation_openid_crypto_password: U5q5RIrkZawlGtR0sgHWWMYjO36UJtPWBPnC1vx2
' Z9 X9 f6 c. S' W6 ?' r; |) k) }7 c# P
修改/etc/kolla/globals.yml文件2 n& b, R: a8 s* I8 b

; ?" U2 I% W3 N9 ]/ a0 _" d' v8 Rvim /etc/kolla/globals.yml
  I: J; k$ K% R8 `1 M6 m% C网络部分:
- U- U, }8 _( U/ j+ T! U7 o0 B9 _1 D" s! a
#**********' V% \" f- y, j
kolla_internal_vip_address: "192.168.8.88"
  H% q+ Q1 b) I: U/ ~4 Q9 L" y+ t- J% s
#**************6 C7 Z- n  ]: l! b8 H7 [/ N6 {$ q
network_interface: "ens160"" n5 P, l4 L! Q" R0 u6 c9 p2 o
  L7 G3 ?$ _. ^' N* u8 @
neutron_external_interface: "ens190"
. l$ C! o! X0 O*network_interface设备正常连接,并配IP4可正常上网和科学上网,和192.168.8.88在同一网段。 # H+ R! p) H. {2 d
0 ]  v: e3 Z( D5 e0 P
*neutron_external_interface 设备为启用,但不连接状态
! i# o' w9 r' C+ u5 W' P1 A. _4 Y; K+ c3 B/ p: ]+ T$ Z
启用裸金属配置* f7 [1 b6 N- ?1 o

1 ^. N1 Z9 ~3 i2 c- v" l#enable_influxdb: "{{ enable_cloudkitty | bool and cloudkitty_storage_backend == 'influxdb' }}"
7 y+ k# C- U) |% a7 L6 ?3 Nenable_ironic: "yes"
$ o" [" D% l8 @#enable_ironic_neutron_agent: "{{ enable_neutron | bool and enable_ironic | bool }}"
% Q4 A' ~; d: N3 x4 Y 裸金属配置部分2 q4 K( H7 ~# I% f' ^
/ S& r# E$ [/ p/ h& l6 _0 D* Q
#############################
$ \' k' w1 A* q9 t) K5 M# Ironic options
. p/ L* L8 r2 K#############################
0 ^  K% l+ a% p# dnsmasq bind interface for Ironic Inspector, by default is network_interface2 y* b/ Y! D: }3 t8 z; u
#ironic_dnsmasq_interface: "{{ network_interface }}"' Z7 R7 f8 z! }7 j9 r* f
ironic_cleaning_network: "public1"
2 I/ G1 Y/ j6 O1 t5 c, M% Q; V# The following value must be set when enabling ironic, the value format is a
0 {4 `; k: Q2 H1 W8 R6 P9 u# list of ranges - at least one must be configured, for example:
# H% ~$ h5 W5 ]# - range: 192.168.0.10,192.168.0.100
( S3 }; y4 h3 c7 H1 K& O# See Kolla Ansible docs on Ironic for details.1 ^( s+ n, F3 H6 A# e1 M
#ironic_dnsmasq_dhcp_ranges:* o; T. Q, R  s% i
# PXE bootloader file for Ironic Inspector, relative to /var/lib/ironic/tftpboot.8 @  q" j6 K. h! ]  P$ c  F+ ^
#ironic_dnsmasq_boot_file: "pxelinux.0"+ ]" S% X* h* k& H9 O( b( a

, n8 ~7 h4 r8 N  J* M# PXE bootloader file for Ironic Inspector, relative to /tftpboot.
* B/ o  K4 a% d& ]ironic_dnsmasq_dhcp_ranges:( G8 v8 N2 y2 ?" O* \# ]
  - range: "192.168.6.100,192.168.6.120,255.255.255.0"0 R0 I' u, W7 r+ A
    routers: "192.168.6.1"
+ T2 U8 t* f) z% f- X; X+ o# # PXE bootloader file for Ironic Inspector, relative to /tftpboot.+ I7 A5 V: r/ C- u5 U! \
ironic_dnsmasq_boot_file: "pxelinux.0"
# u0 O- T: v9 r( M: Xironic_cleaning_network: "public1"
0 o, Q5 w) B+ ]ironic_dnsmasq_default_gateway: 192.168.6.17 Y/ C9 c; l6 [  ?9 t
11、 带有 kolla 部署依赖项的引导服务检查8 G* E* B5 u' O7 R) v# n
kolla-ansible -i ./all-in-one bootstrap-servers8 j' S" p9 N1 ]. ^- o4 T
此过程中,可能遇到的问题
/ v2 i6 `3 }' t+ u; z3 O9 i9 \3 X
* ]. W% J, C! V; ?1、无法下载docker gpg key文件
' G8 O! W8 v- _$ Y
3 }2 q0 P8 w8 H' D& y9 }TASK [openstack.kolla.docker : Install docker apt gpg key] ******************************************************************************************************************************************************& N* O# Q, {: I8 _2 P
fatal: [localhost]: FAILED! => {"changed": false, "dest": "/etc/apt/keyrings/docker.asc", "elapsed": 0, "msg": "Request failed: <urlopen error [Errno 104] Connection reset by peer>", "url": "https://download.docker.com/linux/ubuntu/gpg"}/ Z9 `4 N* v% G2 C5 q9 q3 D
( A6 Z/ D6 g' C6 I- o
PLAY RECAP ******************************************************************************************************************************************************************************************************
" q1 k/ M6 a8 e7 xlocalhost                  : ok=15   changed=4    unreachable=0    failed=1    skipped=4    rescued=0    ignored=0   % W* H6 a& C/ A8 _2 X
kolla-ansible无法安装docker官网的gpg文件,可用科学上网或是代理方法手工导入。例如
* ]' J) A" X8 g4 M4 B9 P" [, L3 c7 D: z1 P6 d, Q
curl  -x http://103.41.117.2:912 -U username:password  -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -: ^) B0 D3 B1 X% z
2、设置apt repository错误- z+ E. s* |; T7 y" p
. X! _; _+ h3 u1 ^( Z3 k3 {
TASK [openstack.kolla.docker : Enable docker apt repository] ****************************************************************************************************************************************************
7 j" ~) l# H8 x+ s% }An exception occurred during task execution. To see the full traceback, use -vvv. The error was: apt_pkg.Error: E:Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/ubuntu/ jammy: /usr/share/keyrings/docker-archive-keyring.gpg != /etc/apt/keyrings/docker.asc, E:The list of sources could not be read.
8 e0 p0 Z. a. X8 D0 ofatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/root/.ansible/tmp/ansible-tmp-1726959353.5827672-18889-136818767683024/AnsiballZ_apt_repository.py\", line 107, in <module>\n    _ansiballz_main()\n  File \"/root/.ansible/tmp/ansible-tmp-1726959353.5827672-18889-136818767683024/AnsiballZ_apt_repository.py\", line 99, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/root/.ansible/tmp/ansible-tmp-1726959353.5827672-18889-136818767683024/AnsiballZ_apt_repository.py\", line 47, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.apt_repository', init_globals=dict(_module_fqn='ansible.modules.apt_repository', _modlib_path=modlib_path),\n  File \"/usr/lib/python3.10/runpy.py\", line 224, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.10/runpy.py\", line 96, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.10/runpy.py\", line 86, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_apt_repository_payload_hw0whgee/ansible_apt_repository_payload.zip/ansible/modules/apt_repository.py\", line 765, in <module>\n  File \"/tmp/ansible_apt_repository_payload_hw0whgee/ansible_apt_repository_payload.zip/ansible/modules/apt_repository.py\", line 742, in main\n  File \"/usr/lib/python3/dist-packages/apt/cache.py\", line 152, in __init__\n    self.open(progress)\n  File \"/usr/lib/python3/dist-packages/apt/cache.py\", line 214, in open\n    self._cache = apt_pkg.Cache(progress)\napt_pkg.Error: E:Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/ubuntu/ jammy: /usr/share/keyrings/docker-archive-keyring.gpg != /etc/apt/keyrings/docker.asc, E:The list of sources could not be read.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
  V$ _4 @/ s& o" u0 s4 q 科学上网可以解决,或者可以手工导入docker官方源
1 F# @2 J3 e/ z" X! \; F1 D- i% @. F# ]6 r; _
sudo tee /etc/apt/sources.list.d/docker.list <<EOF( T4 A7 n' J2 x, J6 i" }
deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable
% y  x7 n, \+ CEOF
; c1 B+ y6 Q/ H5 U. {: \) a* F) I12、对主机进行部署前检查7 y0 \, g; \* B% @0 k' t% Z
kolla-ansible -i ./all-in-one prechecks. n$ J) P) ^4 W/ p7 O; N2 a& U5 Z& ~/ l
13、实际的OpenStack部署
, y  T, P. G1 m6 jkolla-ansible -i ./all-in-one deploy% X, _) k# W% Y7 M6 c% }) B4 Q
部署成功后,裸金属向导界面为* M3 t; [5 B: T5 u) D. S7 D! W

# y8 W, C( D% a) r8 ?3 ]3 i$ E6 z5 c" t0 f
  w0 n! X7 B8 e7 z) S; m8 E) w2 G
注册节点驱动属性增加http下载
. r* \9 Y6 r# a% P) A% I+ U( I2 G" H+ ?) T: t$ F% y

, M8 X0 ~8 e' P6 {
: y% X! P7 [1 i7 q+ W3 h. A- a  W5 S$ d2 N( A- d, Y& t

" W: ^) p) Y4 R( t5 y5 P四、其他问题, h" b: T2 B9 C' @$ M/ m
1、部署出问题时,摧毁所有系统配置。7 d8 v+ a; b. s9 t" t! [3 D
kolla-ansible destroy -i ./all-in-one --yes-i-really-really-mean-it0 A$ ^% G% M- N. B1 t2 W
, e/ r- I$ b& r* i/ d% h. `6 p
2、安装CLI客户端
3 }2 i' X* y+ X/ T& y' `& X" C+ kpip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2023.28 k2 j& X6 Y! L- n+ t/ P& M% }1 ~- ?% |$ G
& r0 t. K# s! x0 l
3、生成管理员认证访问凭据文件5 v1 G* N: h$ p* p* u) N2 P- D
kolla-ansible post-deploy
8 K9 o( ^* D( }. |, Z8 S( P
' n, l$ V7 T$ _0 y# c3 V+ Gcp /etc/kolla/admin-openrc.sh .0 r5 Z: k/ h8 y: r% I( T2 h
使用CLI访问时,可先启用
! c/ q1 q) e0 U* E# M+ H& \9 O+ v+ Y" ~1 ]" d: w8 @
. admin-openrc.sh% D2 z# T# i5 O4 m
运行测试
2 p( K, \3 x1 r
% a1 I2 D% q% O4 }4 }- lroot@odoo16e-server:~# . admin-openrc.sh
9 b, J8 o" p, j+ _0 O6 }  ^7 Rroot@odoo16e-server:~# openstack compute service list
" W. _9 \2 J  Z- f+--------------------------------------+----------------+-----------------------+----------+---------+-------+----------------------------+" _; _0 K; X+ C* j" Q1 b9 u# S5 f% ]4 w
| ID                                   | Binary         | Host                  | Zone     | Status  | State | Updated At                 |
/ J: r! S' |8 R2 o2 t  X" \3 \+--------------------------------------+----------------+-----------------------+----------+---------+-------+----------------------------+
# `$ K$ _  L$ \2 @& b4 {9 Z| 67f25603-5d6e-4327-a9d2-b0fd341876f3 | nova-conductor | odoo16e-server        | internal | enabled | up    | 2024-09-19T03:31:17.000000 |9 d0 ]' n+ `: ~
| f49326e1-1608-4546-bed0-123dd2e52af8 | nova-compute   | odoo16e-server        | nova     | enabled | up    | 2024-09-19T03:31:13.000000 |2 G8 x( l) M6 _7 l5 ^
| b26f35c0-bb02-4151-8df4-e30d65eb6e4a | nova-compute   | odoo16e-server-ironic | nova     | enabled | up    | 2024-09-19T03:31:19.000000 |
* h& G, U0 T9 ], ^$ T( O% p( g| 9b988858-bcbf-4fce-8b55-c0c01e30a463 | nova-scheduler | odoo16e-server        | internal | enabled | up    | 2024-09-19T03:31:19.000000 |
, c2 W  k0 N% C6 m* N6 [) w+--------------------------------------+----------------+-----------------------+----------+---------+-------+----------------------------+
9 Y1 a4 n  t) n: M' E4 J+ g) Q3 u( B

0 Z. j/ y' |' g0 {( ?- n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-11 23:03 , Processed in 0.019780 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表