|
|
楼主 |
发表于 2023-4-4 15:22:43
|
显示全部楼层
目标
, h- W, h* g# X1 N" |) J1 A部署OpenStack官方提供的Simple Configuration示例配置中的Web Application和Container Optimized两个组件配置清单。6 B/ d# U' `) Q3 F% m) |
2 K) W1 V- w5 [) j" O+ |4 b; ?( t) `. f+ w其中包括
. n; G5 L7 w6 @( x* I: X M
- U+ ^8 c' Q {9 z: ]- a) \Web Application:Cinder(块存储)、Glance(镜像服务)、Keystone(身份认证)、Horizon(仪表盘)、Neutron(网络服务)、Nova(计算服务)、Trove(数据库服务)、Swift(对象存储)、Ceilometer(数据收集)、Heat(编排服务)$ s8 ~7 b: x R d, T
Container Optimized(增量):Kuryr(容器网络集成)、Barbican(密钥服务)、Designate(DNS服务)、Manila(文件存储)、Octavia(负载均衡器)、Placement(资源监控)
! ?8 F$ u- S! }! D& ~' k更多OpenStack landscape景观图可以参考官方或者 OPENSTACK LANDSCAPE云原生景观 | OpenStack地图_JamesCurtis的博客-CSDN博客
+ x& P( c) d) @; m& A- K4 `- M* @2 p
支持的操作系统) U$ ?# P |# w# Q* j3 I) _
注意:不再支持 CentOS 7 作为主机操作系统。Train 版本同时支持 CentOS 7 和 8,并提供了迁移路径。有关迁移到 CentOS 8 的信息,请参阅Kolla Ansible Train 文档。
/ r9 t4 S' G J2 h" ~! q( g: u9 d* o9 s% U& x
yoga版本支持以下操作系统:/ y7 ^/ A$ l& ~& R' r& e
( F) K+ z- b+ u7 W4 f; k6 jCentOS Stream 86 N# x) U5 t+ d1 u: d4 Q: B
: h0 @8 e( E7 r. e) s
Debian Bullseye (11)
% k& Z6 Y+ [3 j/ y1 V1 I
2 X5 ?+ z: s$ popenEuler 20.03 LTS SP2 V; m( \$ }4 V- q
2 e* ^2 |9 \* M9 J3 ~8 K4 I
RHEL 8 (deprecated) {0 K7 F$ Z; `, z& I/ g
1 {4 v) Y/ O2 ARocky Linux 8
8 ^# L0 v5 c: P
. P9 K! Y% F2 n) `1 _7 c% xUbuntu Focal (20.04)) y" e: U. g$ U) ^$ c Z4 J' ]
9 @- x5 a1 X/ j/ T! C我这里使用的是Ubuntu 22.04 LTS(mini安装)
) v) D5 M1 }5 o1 Y2 b
& J, b2 m2 E9 w" h- t- I下面开始安装
# m+ R1 K: k) p- l3 s8 w, p0 `/ L. m3 A1 M4 p
1. 安装系统依赖7 y. y F- D$ c& j7 K2 P t1 B
1.1. 更新软件包索引
; V3 o! |& G3 y; Csudo apt update
5 ~* q+ H% I) G1.2. 安装python依赖
/ _4 t3 j* P% X1 msudo apt install git python3-dev libffi-dev gcc libssl-dev% }+ k: \! z2 \7 v! J5 U% @
2. 安装python-venv虚拟环境依赖
3 `0 d G6 N0 A, B2.1 安装python3-venv1 G( ^% r! f( ^5 l/ r/ [5 U
sudo apt install python3-venv
# s5 `. D: K1 a- W* U3 \! w2.2 创建虚拟环境并激活它8 j8 K3 `% s$ W: D* q
mkdir /path && mkdir /path/to # 也可以自定路径5 G; g" [% L4 Y0 B+ ~
python3 -m venv /path/to/venv0 i( b7 D8 V+ I* u+ _3 l3 T# U
source /path/to/venv/bin/activate0 g$ R) ^7 t1 r$ z
2.3 确保安装了最新版本的pip
" Z+ P' ?- ?, w3 B9 opython -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
@) P; Z9 P, B 2.4 pypi换源
& X6 M+ l9 m$ R7 \pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
. B9 w6 Z1 \4 w7 S/ @# `% X2.5 安装Ansible
" p: ~2 a6 g5 ~( opip install 'ansible>=4,<6'0 O/ b, W: C3 b; e
3. 安装Kolla-Ansible& E$ M1 x* z7 j4 L3 v2 }. X
3.1 kolla+ |+ b @8 m F+ }6 J+ {
# pip install git+https://opendev.org/openstack/kolla-ansible@stable/yoga
j2 O( Q" \$ v8 t# g4 r# 上面是原版命令,建议使用jihulab.com克隆一份
2 R6 K: D2 X+ C _6 m1 W1 Vpip install git+https://jihulab.com/james-curtis/kolla-ansible@stable/yoga
1 g& S8 m5 ^, D- ], a5 d1 i: O' K# `3.2 创建文件夹/etc/kolla% {! e( e6 W1 s' `: B
sudo mkdir -p /etc/kolla
) U2 \( |. f U" g" [5 P# ksudo chown $USER:$USER /etc/kolla* W" C. W1 P+ O6 q; [+ k3 E
3.3 复制 globals.yml 和 passwords.yml 到 /etc/kolla3 W. f5 K8 i6 M6 m
# 如果你使用了自定义路径,记得替换/path/to
5 N1 z; j+ k" B2 |- M9 y+ ecp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla$ V% l5 {; i% m! T: M9 Q X5 \* K% z
3.4 复制清单文件
5 W! N2 \8 u5 t6 d& s d* ?cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .+ {* V! o3 }# U( ~
4. 安装Ansible Galaxy依赖. x7 F$ O l# d$ D
4.1 换源
+ V2 ?/ }% X) U; q8 Z9 i找到 /path/to/venv/share/kolla-ansible/requirements.yml ; Y! `8 s+ Y2 Y2 H' L+ w+ n/ T
$ s' o5 z& h) ]( d2 N! Z6 H内容如下; k% e; @7 i' r& o) f
1 J* c$ Q% e; _
---5 v0 o" W$ K4 w, R# n% n
collections:
9 V1 G3 v# c" \: \ - name: https://opendev.org/openstack/ansible-collection-kolla" R4 h1 I' _- g( k. _
type: git- E5 T' A$ d3 z
version: stable/yoga+ n, U. a6 M( c# M
修改这个git仓库地址,如果镜像拉不下,建议去拉github的OpenStack镜像
; ?4 Z5 ~1 l( l3 K0 v- \1 D( \. k' |4 j9 ~% p( I. j
修改成如下
9 m1 h3 Z" x6 m3 @
2 q6 O6 N" Q, s1 O3 b---: }$ J4 Q% z/ o7 Y( m. X9 s: k
collections:
Y! \/ K! r d7 g - name: https://jihulab.com/james-curtis/ansible-collection-kolla! s" D1 j6 Y. d: \9 j- w
type: git9 ^ W, B0 t C# X! X; g
version: stable/yoga
) Z. [* |+ p5 e3 i) g5 M4.2 安装Kolla-Ansible-Collections依赖* L4 F( \8 g9 s [+ {3 l8 S$ T$ ?
kolla-ansible install-deps/ e0 t/ e, {% ?
4.3 docker换源 && 指定docker版本到20.10.*
; N* E \# b7 P/ K' E这里不换源是可以的。但是截止docker 23.0.0发布时间之后再来使用kolla-ansible,首次安装没问题,后续如果要添加删除组件的话就会报错。原因是docker删除了容器的 `KernelMemory` 属性,但是kolla需要读取,导致数组下标不存在报错
3 }2 b% q& B2 ~" o. `9 a( W/ J. R& Z* w$ p* p
请参阅:Kolla-Ansible deploy部署报错 KeyError: \\‘KernelMemory_JamesCurtis的博客-CSDN博客
$ I5 _/ n2 N: A" S! ~
9 y9 O$ {/ l$ g- x, a! @sed -i.bak 's/https:\/\/download\.docker\.com/https:\/\/mirrors\.tuna\.tsinghua\.edu\.cn\/docker-ce/g' /root/.ansible/collections/ansible_collections/openstack/kolla/roles/baremetal/defaults/main.yml$ `2 q3 a( K% c8 u2 U, M
sed -i.bak 's/_package: "docker-ce"/_package: "docker-ce=5:20.10*"/g' /root/.ansible/collections/ansible_collections/openstack/kolla/roles/baremetal/defaults/main.yml/ g9 T# W0 [/ u' v9 x
4.4 配置Ansible8 E; Q: i% K- C6 |- R
mkdir /etc/ansible
' c* n' v% g" ?$ l3 a* becho "[defaults]9 m9 d, O8 V1 H! g! v" M% O; v
host_key_checking=False. q0 \, d2 ~2 K
pipelining=True( [* F. B5 v) }; k
forks=100" > /etc/ansible/ansible.cfg
9 J! T. S" y8 |7 B. v6 I/ A5. 准备初始化配置6 t# r$ x$ ]+ h6 v: T7 @
如果单机部署,你也可以跳过此步骤,然后使用 all-in-one 清单,后续如果再增加机器可以切换回到 multinode 清单,只需要注意修改好机器主机名就行。4 R! q& z2 z7 g
) p( w Y! W- v. X( E9 ?( P; V- b对于all-in-one虚拟环境中的场景,将以下内容添加到all-in-one清单的最开头& U. T( k0 W4 e* Y" ?' Q5 X
0 C q( K" v, Qlocalhost ansible_python_interpreter=python
9 ~4 M( }& ]" C+ c/ l5.1 修改配置文件" A% n7 ^3 {! b4 C: Y" q- `# ?
我这里使用3+1机器演示,* e' H( l) \( e" T% K# D0 j
, [3 P4 A- E) d t! w) P3 {1 x 部署机:10.10.1.80/24
7 X5 o. n9 @- H' ~! ?4 e! h: _' d
节点01:10.10.1.81/24 control01- L8 _5 A6 @/ Z6 p: x4 @ s3 B( \ `
& v0 D4 n7 l' L3 `3 V* o9 N节点02:10.10.1.82/24 control02
5 G7 |3 z) b& p& H; K! I/ H4 @' e# a+ u2 y7 {; w8 J
节点03:10.10.1.83/24 control03
! |) B* j/ P# R n0 x4 g2 a# Z
4 L B2 X7 K" Z9 ~* R, K# x这里仅仅展示 [baremetal:children] 节点之前的配置文件,切勿照搬!!! 8 H7 G, w' b5 W' A) B+ ^3 P+ [8 m! \' ^
* F6 {0 r$ _3 q$ R! U8 d1 ]4 K2 h, V
# These initial groups are the only groups required to be modified. The
" S* P. r, M) ^# additional groups are for more control of the environment.& `+ }5 B' A. f( D
[control]
- L9 r, J0 D8 b! Q( [# These hostname must be resolvable from your deployment host
7 t8 d; _9 h6 i' O9 [. F# [control01 hostname=control01 ansible_user=root ansible_password=17 m+ Q/ R+ @+ i
control02 hostname=control02 ansible_user=root ansible_password=1% b# ^" H5 Q+ }8 X- G: Z* }6 n
control03 hostname=control03 ansible_user=root ansible_password=1* s. s0 p" z# Q
! I. M9 E% C; L# The above can also be specified as follows:
! T9 j$ Z3 n* K/ q# control[01:03] ansible_user=kolla
% \4 O0 W3 m1 b7 S: T+ E
6 X" x: w) N; ~ g- C# The network nodes are where your l3-agent and loadbalancers will run
% }* [5 F6 ]: N6 j- _* ^% [. G# This can be the same as a host in the control group0 Q! L) c( D6 g6 Y E
# [network]- z. P$ e5 S/ c$ b0 o
# network01/ @ L! m; Q9 o6 u) P- _
# network02
6 u- v0 _6 m1 q0 O2 v; |% A8 H, v* s
# when you specify group_name:children, it will use contents of group specified.3 B' J0 \7 d1 d0 S* v- G! k
[network:children]
2 E+ o/ D9 p$ F4 f+ bcontrol
& R& w/ y2 f( q- q k* Q% y9 c r/ B, s
$ m) a3 W. d ^, A9 a* F/ G
# [compute]
3 \! w+ ]( b. b( m8 R! @1 y" a# compute01
) r2 Z/ D4 U: q) x" _[compute:children]
- D. j2 w+ H7 [$ U" s0 lcontrol
5 M* F. a% n1 U; t& o. k3 C: ^: u' E* U# o2 q% R+ h7 I9 F7 @
[monitoring:children]: C7 w& J# f1 L# i9 ^
control
+ o, V! Z2 ` Z" f% Z* _# [monitoring]
9 U% |8 y6 ^) N5 _& ]8 R; @# control01 ansible_user=root ansible_password=1 ansible_become=true# Q' E( O* B! C/ b3 s; g
# monitoring01
4 _ U! T; w0 d; A' @* t9 J% o
# When compute nodes and control nodes use different interfaces,
4 ^9 [0 Y3 x# z/ V5 R) E# you need to comment out "api_interface" and other interfaces from the globals.yml
# O0 r2 h' R" [# and specify like below:
, d$ ]' m) X s, F9 M#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em17 v: c( a; ?$ s& R
3 T, \' U' G* r) Q; d, ?
# [storage]
4 S. p( ^2 ^) z. T7 b# storage01/ d7 t1 O3 q7 R, X! S, o/ h
[storage:children]
' Y5 b& Z2 M" v4 Y* R- Q2 x% m$ j' T- Ccontrol) E0 u6 ^& D* O6 v8 P' z
! \" J- Y% A7 ^5 R[deployment]
% \7 v* I: D: g4 _% w8 G: X" gdeploy ansible_connection=local1 _( z: A+ A7 g5 G2 b" K N
, V5 S; d- x$ O
# 下接[baremetal:children]9 B) @, `# i% W
5.2 修改hosts3 A8 A) t% n+ H! Y5 G u
如果使用 all-in-one 清单,这一步也可以跳过: ~: @6 ?; G' ^4 P
$ g! Y/ U# y6 Y8 h
编辑/etc/hosts文件,注意替换成自己的机器的内网ip2 `8 T5 G' Q; E
, r S7 y: V3 g4 l/ Q! l* B& p; p4 c" b只需要修改部署机。后续使用bootstrap-server命令之后会同步到所有节点! }0 t) F* `1 c8 K; v# h' ^; e1 U5 j/ U/ i
# o8 L0 C/ [9 r# j$ _/ n, z; ]8 i
# 这里是deploy机器上的文件+ f5 z* q, A8 Q) [0 T! u
127.0.0.1 localhost+ X3 T, I2 c# D8 `3 { q2 F
10.10.1.80 deploy& ` ?9 l4 J0 \( s7 O
10.10.1.81 control01* Q& c9 H0 D8 z4 V
10.10.1.82 control02
* K4 ?1 p0 x+ ]4 w6 s" G: y1 h10.10.1.83 control03
$ t+ [! W# r! F. A# y5.3 安装 sshpass
" E" h \3 | papt install sshpass -y
9 Q$ _3 E8 a) ~5.4 配置ssh密钥对0 S0 |% p# k8 z5 V/ T
ssh-keygen
X0 Z9 z9 A8 n* F1 o) n0 @3 k一路回车
' C7 l- [, k/ v: I0 X! B3 T7 g- ^% d1 U
ssh-copy-id 10.10.1.81* ^+ m2 {! T! y- {9 e
# 注意替换自己的内网ip$ g1 y1 _! @0 F1 k8 T2 S1 r
输入yes同意指纹,然后输入密码。就可以了
4 U7 {8 F* D7 ^; r# {( ?' r% y. j) X4 U$ E
# 看下如下提示就是成功了
! t Y: X: C1 aroot@10.10.1.81's password: 5 S* Z1 H' q" |6 V; F; R
! G" h$ Y" e9 }Number of key(s) added: 1- b7 [2 u8 R( U1 B$ e1 y. I
' I, h4 h; W1 I, f+ |* I2 ~
Now try logging into the machine, with: "ssh '10.10.1.81'"2 l0 ]/ R* K x# |( B7 I+ K3 \( C2 U: e
and check to make sure that only the key(s) you wanted were added.* A% [& F- S) D: F) C% D- K
7 C O4 r, o @( N5.5 检查清单配置是否正确& x, ~) }3 y4 v* u/ M8 h H
ansible -i multinode all -m ping
7 G4 E( z: c, r% J返回下面结果就是成功
+ d4 j- j9 F. T' S8 K
- C+ ^7 f3 y- S4 l/ U$ S2 v(venv) root@ubuntu:~# ansible -i multinode all -m ping& ~* |; b9 g7 w# n
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
9 n% \7 i1 A+ ~' f$ `localhost | SUCCESS => {
0 J! Y; M$ @+ ]: w8 N "ansible_facts": {
" t% h% E7 w* N { a& _' @ "discovered_interpreter_python": "/usr/bin/python3": r- G r$ s8 O7 U3 V9 l* W% `2 J
},$ u% c( D4 M( C1 M/ @
"changed": false,
$ e5 f$ Y$ w% D" d7 D "ping": "pong"
7 G6 z0 Q% E d9 Q* d) y5 n}. J! n9 f, E5 ?' Z# e) g
control01 | SUCCESS => {
) o) I# x! E; H" {* E! @2 n" p6 `( m "ansible_facts": {5 S% f! b3 s7 C& c/ L
"discovered_interpreter_python": "/usr/bin/python3"4 t5 g5 \& g/ @0 j8 \, S' D, L
},
8 K3 N* K/ C0 f. J& S "changed": false,' i. D' _) ~, w
"ping": "pong": N8 T% l5 F: \8 A8 X
}
) S+ s' o; z8 @) b- H) ?1 [6. 生成密码
; o" D4 \0 C8 n) ]* Vkolla-genpwd( S; C( f7 L) a, l D9 `
7. 配置globals.yml4 {9 Z k0 C) V1 U
先安装一下vim
: K6 ]5 t2 l$ h- L6 p2 Z* H
; l/ g+ j( ]: O0 J; B4 c4 Hapt install vim -y
; |' B' r4 r6 S J1 V9 ?2 \! r+ k/ l编辑
; X: R) n- g0 s- W- O2 T. E
; X' P4 X3 n) B+ Ovim /etc/kolla/globals.yml: w& ~+ I9 W% O! Z( L( C) P
先不要进入编辑模式,输入下面,显示行号* c/ {3 q+ {- v# g" X( x* d
" ?! `# c S, Z% H) N. y/ A" R! e:set number& i1 T2 x. m" N! N, l* n- {1 M
7.1 修改基础镜像发行版
! Q* h7 h' v* ]8 j9 N$ d) u默认是centos,要修改为debian。默认的centos有一些镜像不存在& ^% u: T( N6 U
% i# [ b8 ~* d( O4 ised -i.bak 's/#kolla_base_distro: "centos"/kolla_base_distro: "debian"/' /etc/kolla/globals.yml
* v }1 f! F% n7 l0 q! i7.2 编辑网络接口
* q, U6 Z" ], c Y( y6 N7 X这里,vim的基本使用不在赘述! E+ u/ K" S" j5 q; c; Y7 b
: v' ~3 a1 f# M# S: F) ^" `9 N- _$ \
搜索第一个网口接口,并修改为对应配置(可以通过 ip a 查看接口名字)
; ]) P2 [4 _# q1 M- E7 z
4 n2 W5 E$ n- D$ n/ w9 q5 I9 X8 \ 设置的第一个接口是“ Network_interface”。这是多个管理类型网络的默认接口。% m3 v1 o4 H7 ]$ F# L) @2 `
2 h4 x1 w# h' r. F: k, n
network_interface: "eth0"7 J# v8 P6 W, q( A. ^
搜索并设置第二个接口
8 j- [9 ^, S) X% t9 d! u
! O3 x1 K% |, t) S9 m6 e, ?所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,这取决于网络的创建方式。此接口应处于活动状态,没有IP地址。否则,实例将无法访问外部网络。" Z. j5 Z3 w. q* q5 ?) c
) H, Q1 ]% c* W% U5 E
这里说人话,就是第二个接口需要给他一个空闲的网口$ m7 w0 h% }' |
9 b& X. x* Q+ U; u# |* ]
neutron_external_interface: "eth1"% ^2 `; W- U2 d6 l( L; i7 S
搜索并设置浮动ip8 P$ r6 M1 k, @( F$ a- x) _
: Z# p! ^$ a/ G$ w, h6 v0 Z接下来,我们需要为管理流量提供浮动IP。该IP将由keepalive管理,以提供高可用性,并且应设置为在连接到我们网络接口的管理网络中不使用的地址。
& k" B! g! a9 _: x, \+ W7 ]/ \
这里说人话就是,浮动ip不要和network_interface中的地址冲突(一般是DHCP),比如说network_interface所在DHCP范围是10.1.1.100-10.1.1.200。那么浮动ip就不建议在这个范围内,而应该选择如10.1.1.2013 s* [" O6 I' K2 r# N% H" L) k* F
( D# R) ~! y/ s8 Q4 E- ukolla_internal_vip_address: "10.1.0.250"
) r# e4 M/ w4 r- i+ Q编辑完成,按下Esc,再输入- U; L- u! g$ p) E+ y- m1 ~2 {
2 }3 c. z) _. U: H* r4 T
:wq
/ m9 |, ?3 C& u, _& t6 V保存退出" }6 e2 e2 A: u/ `" H% g* H7 |9 F
a2 `/ j& F- E4 p) J4 U# h& P8. 部署. F! @( |6 D, }! M. V' H* p
8.1 docker quay.io换源$ O+ U4 e! v$ @, Z# @& p* u
sed -i.bak 's/#docker_registry:/docker_registry: quay.nju.edu.cn/g' /etc/kolla/globals.yml& B! h* h3 r2 O
8.2 引导服务器
8 l3 J' c9 Z. _7 j7 O+ M; j7 P/ Ekolla-ansible -i ./multinode bootstrap-servers' q- B. @! Z" y" S
完成后检查docker版本,确定在20.10.xx。不然后面所有使用kolla-ansible的改动都会报错KernelMemory9 p( ]8 B9 W' y& I& H; O Y$ A
6 P2 ]! ]. _ p; |& ~确保Server: Docker Engine版本在20.10.xx就行
. u' V, T8 Y4 O
" O' _' K" \3 W1 r; @(venv) root@ubuntu:~# docker version. Z* |' w5 S! t' d7 G4 h
Client: Docker Engine - Community
& v P6 `0 G: H5 d, e: T& g, _ Version: 23.0.0( \' X6 {$ f; ^
API version: 1.41 (downgraded from 1.42)
" y+ G2 j; p2 B& v( E Go version: go1.19.50 }' w; s9 {: v ~$ K8 u# w3 D
Git commit: e92dd87% ~# m j+ L) C; G$ X8 c2 a0 ]
Built: Wed Feb 1 17:47:51 2023
k# a' m' u" G OS/Arch: linux/amd64" _+ u6 x N8 f: L! E4 ^
Context: default
* P: F+ s1 K1 T: s6 d! o( r1 ~; s) V4 ~
Server: Docker Engine - Community( Z r5 k& p6 B2 y2 J8 ~6 z
Engine:
. T8 ]% z2 q! p! n. [: v: d. D+ W3 k Version: 20.10.23
9 ]8 Y' r: ^# X# R2 X5 \! Y API version: 1.41 (minimum version 1.12) f9 o2 m! r4 Y. M9 ~
Go version: go1.18.102 r; T- W0 m, m D0 I* X
Git commit: 6051f141 ]) I: y; n( N$ L4 k1 M* S7 a
Built: Thu Jan 19 17:42:57 20231 [) v) B! C& O* H; [! h
OS/Arch: linux/amd64
2 v1 b( R! c# u+ y/ ` Experimental: false* U$ u, Z6 |. z/ M G" G1 a2 G; Y; }! M1 o
containerd:
+ L+ N" k8 C, \+ ? Version: 1.6.16
# `+ ~0 J3 M# L/ H GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec$ J" b9 x; y- [; Y" f: v2 h8 E1 R1 b
runc:" c# c+ K0 {9 q3 f$ s+ p0 P
Version: 1.1.4! D2 ^7 Q0 B8 o8 m$ {" ]1 ]5 [
GitCommit: v1.1.4-0-g5fd4c4d4 U% I( z- b) P8 `4 o
docker-init:
$ t5 `+ ?8 c8 I# L+ P% { Version: 0.19.0 K, I" w: o b+ w; E* Z* Z$ u
GitCommit: de40ad0; H! J+ _% Z0 m9 \) `3 D8 J( T
8.3 对主机进行部署前检查
+ D! j/ t. t) n1 X* m0 R- [kolla-ansible -i ./multinode prechecks -vvv
7 J( ?5 }4 l: A1 e8 N8 c8.4 最后进行实际的 OpenStack 部署% K6 _! |2 s; F. S# M
kolla-ansible -i ./multinode deploy -vvv& ^2 C+ y* Y3 [! H" h
当本脚本完成时,OpenStack 应该启动、运行并正常运行!
' @1 U, R: \0 D/ D b+ b
7 p* J$ `; N- o6 CPLAY RECAP ******************************************************************************************************************************************************************
$ f( ^: p+ `1 [) f7 L# [- Mcontrol01 : ok=308 changed=218 unreachable=0 failed=0 skipped=169 rescued=0 ignored=1 4 ^, L' C8 O7 \+ k; {: o
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
# R) x% ~5 I( N7 r. _1 _9 G$ \; N1 v9 D
访问浮动ip地址就是前台页面,如果显示证书错误,那意思就是密码错误
1 \* d( T a4 U# d, S
& |( W) T; B- n4 E7 u
. v o, d' G2 v4 K a$ W, k2 z
, ~4 ]! ]; u, N9 l) [- H账号为admin, W0 p5 a% E; Q# P( a+ s
! m6 f& K4 ]- N8 ^$ C
查看密码:
4 B' a! f# p% J( a: ~9 g
; t- D3 l6 H) C1 b7 {6 m' i& Z* y% A% K$ L也可以在post-deploy命令执行之后,去这个文件里面看/etc/kolla/admin-openrc.sh# ~) b6 m- h. p* n8 J) b
3 e8 m2 W1 ^8 |: d% n) S$ ecat /etc/kolla/passwords.yml |grep keystone_admin_password8 r5 c/ j8 K3 d2 X8 `
9 o% t9 N T, I* G: `1 V. Z1 G
9 J( [- {; `" @% [' M6 Q: F" N
9. 使用 OpenStack 7 x2 v/ U& I5 w5 x9 c% F
9.1 安装 OpenStack CLI 客户端; Z8 a; U2 D7 _2 U; M9 \
官方命令(网络能通的可以试试)
4 |8 y2 {7 O3 I, Y9 N3 [0 O- w/ [/ W" V$ C, W) i( J
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga L1 U2 D( }. ]1 U7 y) B) }1 Z
如果文件获取不了建议,打开这个链接,之后会跳转到* {/ h0 J8 X/ O' J6 g3 l% n. o( k, G2 C( [
https://opendev.org/openstack/re ... per-constraints.txt
# a. |, x4 f+ m7 R/ y再去github的OpenStack镜像,即 github.com/openstack/requirements
4 }: C' b. `: m R: P! C+ d' O0 Z然后克隆这个仓库到jihulab.com4 k" u; E4 F% }5 ]$ u4 p4 i
* U8 Q& a* d9 Y: f9 j( w( ^记得选择对应的分支
R* |- n1 X" W2 q' Z! X' d% F3 ~ n! Q1 F' k- q. A
$ ^4 s% ]/ Y1 D, H- ~3 v
8 @) ]3 D- r0 E' z5 ^6 |6 T ,接着找到对应的文件
$ a* U0 j" g$ G7 c) N( F
6 k: `9 }- w- V, N6 B# m* k; y7 l9 @8 O6 ?/ ?7 P3 M
) i" F1 G* h' J4 i. q' M+ C) X. m打开原始文件,得到下面链接+ g! ^5 ~9 e' ?' ~
7 r4 s2 \1 o1 R: x
https://jihulab.com/james-curtis ... per-constraints.txt, v4 s' Q3 S, `* I1 O
替换官方命令,并执行1 _$ R0 w: M G+ l6 G$ ]
# [- y b, Y: C6 N N1 k2 |( wpip install python-openstackclient -c https://jihulab.com/james-curtis ... per-constraints.txt
2 @. i$ j" |4 t o/ s9.2 OpenStack 需要一个 openrc 文件0 T4 `3 Z7 G% A' L+ b6 A
其中设置了管理员用户的凭据。要生成此文件/ J/ H% {, `+ w( q6 ^
( X& v+ c7 S( i% {3 i' U s
kolla-ansible post-deploy
. _2 i! O) i6 j8 ~% G5 Y. /etc/kolla/admin-openrc.sh
8 ?2 X, ?5 P0 s" N$ G M+ J3 P.(点)+(空格)+可执行文件 == source+(空格)+可执行文件' ^6 Z' I7 W- v7 ] W5 E
. `- ^ B8 n! w: m
接下来就可以使用OpenStack CLI了
! U, o g5 T0 H/ B2 J$ Y" d5 \2 r8 D M' K9 s4 p- V1 {( e
至此OpenStack安装完成
" B8 p* \+ l0 m1 O. A# g& T
) o: }# p$ l( |后续:
8 y0 {6 g- s$ o9 Q# a3 G1 I7 z
4 k0 e3 j6 _$ W7 K7 g+ t) FOpenStack使用Skyline Dashboard面板替换默认Horizon面板
( ^, N* W- Y8 C2 X9 K3 e5 n. J* SOpenStack增加节点或者减少节点,横向拓展节点
3 {3 ~ a# `, p8 C; s2 GProxmoxVE+Ceph+OpenStack HCI超融合平台搭建,配置Bcache加速Ceph SDS7 W2 i3 Z, g' F: q
! ~! V; v0 A8 _: ^5 w9 l7 e5 f. x
/ [ C }( e" N$ J0 [ F, D! V |
|