|
|
楼主 |
发表于 2023-4-4 15:22:43
|
显示全部楼层
目标
8 J7 G8 p5 I; T' m# w" z8 J5 U部署OpenStack官方提供的Simple Configuration示例配置中的Web Application和Container Optimized两个组件配置清单。
% `3 ]: W* } Z& x6 T3 u/ e' ]3 Z4 o+ I
其中包括- T+ c/ u# S3 ~! q
% _$ }, D& e7 o! ]6 a' \6 MWeb Application:Cinder(块存储)、Glance(镜像服务)、Keystone(身份认证)、Horizon(仪表盘)、Neutron(网络服务)、Nova(计算服务)、Trove(数据库服务)、Swift(对象存储)、Ceilometer(数据收集)、Heat(编排服务)
6 e1 R0 ~( F8 LContainer Optimized(增量):Kuryr(容器网络集成)、Barbican(密钥服务)、Designate(DNS服务)、Manila(文件存储)、Octavia(负载均衡器)、Placement(资源监控) |( E5 E3 g; B
更多OpenStack landscape景观图可以参考官方或者 OPENSTACK LANDSCAPE云原生景观 | OpenStack地图_JamesCurtis的博客-CSDN博客
8 i% s6 s% f: F* }# s0 C ?( w! F$ q
支持的操作系统- {( ?" O9 E: d: }
注意:不再支持 CentOS 7 作为主机操作系统。Train 版本同时支持 CentOS 7 和 8,并提供了迁移路径。有关迁移到 CentOS 8 的信息,请参阅Kolla Ansible Train 文档。
+ T3 Q1 |1 W5 p, |8 ~! u' k
% y/ a( x m6 q- ?3 k, E0 Kyoga版本支持以下操作系统:) J1 F4 a+ z+ K5 I4 P Q; d& c8 w
, I5 f7 N5 i' G7 e4 SCentOS Stream 8
9 `) b+ @' D1 F5 b3 A4 z5 N' |& \# B/ \! X/ n8 M/ G
Debian Bullseye (11)
% W2 N8 r0 l1 E& X! l5 W5 J0 r2 O: T, A' h) |
openEuler 20.03 LTS SP2
" v% [9 B2 Z) u0 |+ A* d; C& U/ p. c4 _ A" C/ Z; [
RHEL 8 (deprecated): Z) J) s, ]8 C' G) K4 O n, p! R
/ E0 A6 m$ y' w7 s' MRocky Linux 8% z3 V7 H# o4 q
, J1 I4 Q. m( J7 C3 Z# i J# x
Ubuntu Focal (20.04)/ I- v4 b6 E$ a0 O/ H# N4 a- P# {! w
7 E: \# {, G$ T. [3 ~ z4 b" ]7 b! @我这里使用的是Ubuntu 22.04 LTS(mini安装)
9 S6 w( k! T/ n2 T. X4 ?: K# w# r" u
1 t# F3 \# h1 C下面开始安装; ~" c! @% M+ a5 |* k- @& K" t% i
r8 \; r9 ~# i
1. 安装系统依赖
- g8 z/ A6 Q w# w' _" w1.1. 更新软件包索引$ K3 a* e) p% K# k6 D+ V; T
sudo apt update! V7 f9 i& p0 w3 b/ A
1.2. 安装python依赖
: P/ [9 G! `' r7 dsudo apt install git python3-dev libffi-dev gcc libssl-dev
4 p4 V5 T! R& l2 E2. 安装python-venv虚拟环境依赖
; Y/ o- q p9 r8 v; z9 {4 a1 g2.1 安装python3-venv2 L& @' ] B- a) l. @
sudo apt install python3-venv
9 s7 X5 X! P! L; ~1 w2.2 创建虚拟环境并激活它& Y+ r, [6 u8 e1 ~- M
mkdir /path && mkdir /path/to # 也可以自定路径
: G& U5 U8 t6 H. ^python3 -m venv /path/to/venv
6 G7 Q' \ P l% t8 F fsource /path/to/venv/bin/activate
. `4 Y. I6 i' L+ `0 N2.3 确保安装了最新版本的pip
' _. k! W! @) N5 G5 Y3 r' Hpython -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip! A2 d+ `9 g; }; a
2.4 pypi换源 J+ f, |0 P8 x+ [3 s
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
4 n; o; S$ b1 @2.5 安装Ansible
4 v' z& _% J5 H: \3 wpip install 'ansible>=4,<6'1 a& S0 r6 g# x: v( ]- h+ T( i& V
3. 安装Kolla-Ansible
' X4 T+ O1 e" u% Z' V/ a. p3.1 kolla; P3 ^1 `! s; p
# pip install git+https://opendev.org/openstack/kolla-ansible@stable/yoga
8 D- C x# O% `# 上面是原版命令,建议使用jihulab.com克隆一份
3 m4 J8 E, S( c+ I# ]pip install git+https://jihulab.com/james-curtis/kolla-ansible@stable/yoga, W5 \! H1 t% E! ` X& G5 q( r3 n
3.2 创建文件夹/etc/kolla, M+ ?( [" m- h: f# ^
sudo mkdir -p /etc/kolla
6 F3 q7 Y1 P! B" C+ I; Nsudo chown $USER:$USER /etc/kolla
* L/ ^$ ]& y3 H% h2 ]7 H' w! p% [3.3 复制 globals.yml 和 passwords.yml 到 /etc/kolla
]$ b3 f' h: y! M) i2 f# 如果你使用了自定义路径,记得替换/path/to3 o5 j `* q% ^1 l1 P# [
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
/ a; d" _) |: G" g9 W( b3.4 复制清单文件
9 t- n4 L! t; Ucp /path/to/venv/share/kolla-ansible/ansible/inventory/* . c% N2 R- i; y j8 I7 h
4. 安装Ansible Galaxy依赖
' Y) z( E' D: n+ V4.1 换源
% y: W; O p1 X) d9 o- i找到 /path/to/venv/share/kolla-ansible/requirements.yml
9 G; y) O& W8 _) v' J& ]
) _+ k6 Y) j/ r- U& r2 t内容如下2 \" Y1 T0 Y& b* S
/ x( S! |6 R2 I# R" A! i6 J) K- a/ f
---
: ^& s$ W- r7 @collections:3 Y" I. u! b2 e
- name: https://opendev.org/openstack/ansible-collection-kolla
$ ?4 ]) [% V" {/ C type: git
( D. v6 L- {1 f+ J' C- ^, | version: stable/yoga4 I0 z: n7 a, E+ f" Z+ V
修改这个git仓库地址,如果镜像拉不下,建议去拉github的OpenStack镜像7 T/ Z. m9 n6 Q2 o0 Z
. k9 F" a. s6 ~$ H修改成如下; D0 y+ X" w2 J& S
7 ^8 y7 c3 E* L$ g3 D---" N2 M9 e7 f/ f8 Q8 L1 U
collections:
0 n' u; a/ S' U6 B: S - name: https://jihulab.com/james-curtis/ansible-collection-kolla
9 P5 z# U4 a" C2 \ type: git
7 r' |. }* W2 L" y version: stable/yoga
5 m4 h# ]$ _- `% V# X4.2 安装Kolla-Ansible-Collections依赖
$ i0 y# d0 x1 U5 N, wkolla-ansible install-deps
1 }6 n% E# K( w4.3 docker换源 && 指定docker版本到20.10.*
: i2 B7 i1 @6 }这里不换源是可以的。但是截止docker 23.0.0发布时间之后再来使用kolla-ansible,首次安装没问题,后续如果要添加删除组件的话就会报错。原因是docker删除了容器的 `KernelMemory` 属性,但是kolla需要读取,导致数组下标不存在报错
: P3 c' ~6 t# s, u$ E4 h* T5 Z4 f# _0 P) {3 U8 W
请参阅:Kolla-Ansible deploy部署报错 KeyError: \\‘KernelMemory_JamesCurtis的博客-CSDN博客
- w+ {7 Q1 g' Q4 g1 v5 k% J' T# ^; T$ l6 v% w' Y2 N1 P# w
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* H; N3 A+ l& `5 L& O. R" u& c
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# \6 P% \# B# K, v T
4.4 配置Ansible
7 d! l. v/ X6 ~mkdir /etc/ansible
$ P) i2 W; A" Yecho "[defaults]
% G4 _5 ~3 _0 g2 @2 Q/ |host_key_checking=False
- m, p7 q# t: |, }' Y: { Vpipelining=True
0 R1 X' v, D* N5 ^' Bforks=100" > /etc/ansible/ansible.cfg' _, P0 _9 X! H! z& T+ Y: t
5. 准备初始化配置
- v* @# ?) {. U( @; ^7 k如果单机部署,你也可以跳过此步骤,然后使用 all-in-one 清单,后续如果再增加机器可以切换回到 multinode 清单,只需要注意修改好机器主机名就行。7 x" H, c8 h" U1 t. u: `+ ?
$ B8 ~) W+ R$ M+ x `# g/ \
对于all-in-one虚拟环境中的场景,将以下内容添加到all-in-one清单的最开头! @& j- n6 N5 c& J' o- J2 R
0 N3 p. P0 \& d) Z
localhost ansible_python_interpreter=python0 ~8 I. }) M* {( Z
5.1 修改配置文件8 _( @7 C$ k8 g3 w7 f( B" T# g+ {) F
我这里使用3+1机器演示,
! E* P8 s+ B6 n; r8 o( u0 _9 z4 k$ S. j
1 x 部署机:10.10.1.80/246 w* ]% b. Q) r/ s
& ^/ n& g: d4 q
节点01:10.10.1.81/24 control01
% u/ s' x0 J8 Q! N, f# P) X5 E% X/ ]) ]( ?: \* h
节点02:10.10.1.82/24 control02 S/ c% t1 x* h* q% w W1 w
0 b O$ Y7 a+ j# |节点03:10.10.1.83/24 control03
' T1 ^) `0 i5 Y" X4 S% C$ @1 N$ }4 z3 ^! f1 C7 w e) ?- n( U9 Z
这里仅仅展示 [baremetal:children] 节点之前的配置文件,切勿照搬!!!
/ R/ M+ G6 H& J6 Z/ C1 L, P: o2 \: F& Y
# These initial groups are the only groups required to be modified. The
6 g3 p$ j) E2 L4 {7 t2 `# additional groups are for more control of the environment./ C% E* Y; u6 D6 b
[control]
+ Y5 w+ b, B8 ^4 v0 [$ v# These hostname must be resolvable from your deployment host. t% r; h8 x5 C& o) i
control01 hostname=control01 ansible_user=root ansible_password=1
% ]3 E8 o3 q0 F8 ?control02 hostname=control02 ansible_user=root ansible_password=1' j) B# [3 u0 O) X) N0 |9 ^
control03 hostname=control03 ansible_user=root ansible_password=18 ?* D# `% Q; ]6 s0 X' o
" v: K2 g+ J) j* C- Y6 Z# The above can also be specified as follows:( g. H4 I& T5 ?& O1 X; o
# control[01:03] ansible_user=kolla
/ K) a/ r; }9 t* Z% _! e
6 L0 T- e/ G; J Z* c# The network nodes are where your l3-agent and loadbalancers will run
5 R: m. R8 P# ^% }3 n# This can be the same as a host in the control group3 c2 V' Z) n: A+ b
# [network]
- e7 C9 D v* T. W! `& z# network01
2 P4 C) [- p, j# v# ~# network024 l; z7 y v5 E# ^, b& B% v! m W+ C
9 R- W% f0 [2 y4 a7 |# H2 s
# when you specify group_name:children, it will use contents of group specified.
6 n* x+ K" O2 r3 Q |[network:children]
& d1 \+ A1 v: F; k. ycontrol* m+ W& x, [ ]5 |! b
" t2 ~) F5 k' R* g
/ t, d" z F: \& ^' j# [compute]& v/ r# f5 p: F1 G# p5 c$ u2 R* f6 _
# compute01( V2 p+ c# Z. W# O6 u- S8 r
[compute:children]
: m& I1 v" a. q7 S. U' {6 e6 Bcontrol% F' j' i0 g$ y- \/ j
' P; Q$ x' u) C
[monitoring:children]% Y& ]* o6 a, }8 C. }% G
control% V- Y s( Q, f$ X
# [monitoring]$ k4 h3 ^7 Q e& `9 [& ]0 o
# control01 ansible_user=root ansible_password=1 ansible_become=true
( j2 { l0 v8 L: j# monitoring01. c( ]* H3 ], d& L! y' Z6 Z
, ^) e3 C! r M: a3 e( ^3 D* g7 P
# When compute nodes and control nodes use different interfaces,
/ U/ a7 b }: I- r, J W$ d# you need to comment out "api_interface" and other interfaces from the globals.yml1 E0 l! u6 z* D2 w# b/ T; i( N
# and specify like below:
/ \, b6 A5 [& r#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em1
& @9 A9 \& s. f4 ?0 N
& E3 N& b, E+ ]7 j# [storage]% V3 \" Z+ E# x: A. H
# storage013 D2 _1 p% P7 O" F6 G" G9 c
[storage:children]
( X- b j/ Y9 |: U: {8 acontrol1 ~1 X3 w. l3 b4 W: Q0 v5 _
# X% Q, B- f* p[deployment]
9 Y% v$ V- ?2 v7 c, z' e0 ~deploy ansible_connection=local5 y0 e# r# p( a3 n
/ v* a8 N. L" P. j# 下接[baremetal:children]& O5 D5 |8 b# C6 ?
5.2 修改hosts
1 I, G K0 {- A7 S, |" D如果使用 all-in-one 清单,这一步也可以跳过# q% r5 f7 L& B! _* a
! t: J, [8 Q9 |$ A, b% h3 _
编辑/etc/hosts文件,注意替换成自己的机器的内网ip) m+ `/ l& f5 W- l _6 `0 X I3 F
1 r( F7 u! ?) \% p
只需要修改部署机。后续使用bootstrap-server命令之后会同步到所有节点
5 ~/ g8 i: p+ e* @' ^) R+ Q' S J9 g$ c% o+ Y6 q2 m) B
# 这里是deploy机器上的文件
8 Y+ s. ? n' o127.0.0.1 localhost
% I* J' K: G$ _1 N. ^) S4 G10.10.1.80 deploy
% b% P4 H3 R, E1 V10.10.1.81 control01
$ X! D. @; W2 ^& j10.10.1.82 control02
/ ]& I3 Z K# C10.10.1.83 control03
2 k3 \3 r7 Z$ a7 }% J5.3 安装 sshpass
1 A$ T h. I9 y. Fapt install sshpass -y
- r- T- E3 j, _/ J P, v5.4 配置ssh密钥对, f0 [0 O! @$ q
ssh-keygen. \9 q' N3 j- }* k: m
一路回车
- ` E8 {8 }$ A; }* p. u8 W6 Q* y0 z5 T, j3 e: \. u7 c
ssh-copy-id 10.10.1.814 g- w$ a- i( J) ?
# 注意替换自己的内网ip
( |9 d( B; o# K- N输入yes同意指纹,然后输入密码。就可以了/ L! x7 x& v* N0 F8 z- ]
% f u) s4 A+ m+ t; D: ?; Y) p) ^4 A7 N6 R# 看下如下提示就是成功了
: b6 C, R$ O! I" \- C" h1 troot@10.10.1.81's password: 2 o" q: |& U- P: ^7 F; n& S
8 y3 U4 N: v+ Y# @, f) ANumber of key(s) added: 1& z% z& w$ \0 d& Y; X- g, u' \
T9 r) ?& R9 l; R; j
Now try logging into the machine, with: "ssh '10.10.1.81'"+ x8 m# \- q1 }
and check to make sure that only the key(s) you wanted were added.9 J/ Q1 Z3 H; v$ \# y
5 d8 l5 u# o+ E/ Q6 a q) J
5.5 检查清单配置是否正确, l& u, n( i: h* G6 g+ b: a
ansible -i multinode all -m ping
/ ~! X% I( d3 G1 B返回下面结果就是成功
1 ]: j0 x' c }0 T9 |* s; R* |' F1 b, K: }, l+ }( y
(venv) root@ubuntu:~# ansible -i multinode all -m ping, I8 F% ~ f* a5 {% K9 b* e# k8 s
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details6 m0 G2 C2 i! h" J$ z! K
localhost | SUCCESS => {6 b+ C% J: _3 O {5 a
"ansible_facts": {
) R' ^. G4 w. d9 V) p- C, | "discovered_interpreter_python": "/usr/bin/python3"
8 q! l# U- b9 V. D4 E4 h },0 K. W/ c' w( p4 a/ N( V
"changed": false,
0 L g% ~3 {0 K( Y "ping": "pong"
. A5 X. D9 r& x}' q8 J* Z( J0 }0 j4 M! N5 d
control01 | SUCCESS => {. J- K0 }( m7 ~) l6 W
"ansible_facts": {
) C v% H1 q, l, S4 Q& C& I "discovered_interpreter_python": "/usr/bin/python3"& F' b8 F; B0 r! {' p0 Q8 t$ b7 Y
},/ V/ F) U- Q+ c9 I0 V" E4 X( \
"changed": false,
/ V) K' J+ b( B3 F2 R; y "ping": "pong"# b8 Y d2 Q+ ]9 e- g! |
}
* h. J9 e! b5 u' c% y+ R+ a5 Y. d6. 生成密码% G9 W& F1 V' q" E- P
kolla-genpwd
% i0 L1 u# H' `& e. q9 K7. 配置globals.yml( I. ^8 W5 E$ i9 R
先安装一下vim
0 K2 r/ m6 V" J9 Y- L
& E- E j4 g, j; kapt install vim -y2 B! H( m# t; `4 O6 f$ P
编辑
, }1 q ^ y1 y9 @8 K
?7 t5 q M& e b; d# @vim /etc/kolla/globals.yml
3 y, V1 h4 j9 S 先不要进入编辑模式,输入下面,显示行号
7 \" r0 n# _3 ?) i, a# n
/ z' p9 z& q2 P6 h/ G R:set number# T: B: ]" [& D4 x
7.1 修改基础镜像发行版
9 @- ^/ A$ F( z9 t0 ~/ N默认是centos,要修改为debian。默认的centos有一些镜像不存在+ m) G8 q1 Z0 \; }; W$ E
2 e @0 |" {7 a, c' N/ d& m+ W% w* ssed -i.bak 's/#kolla_base_distro: "centos"/kolla_base_distro: "debian"/' /etc/kolla/globals.yml
( i# P, A! s8 }/ w" I0 |" b: m) A7.2 编辑网络接口
5 _3 I2 B. y' }# ? |" Q8 C3 v这里,vim的基本使用不在赘述
3 s$ ~( I% X0 p$ C
' I. J M6 ^) z搜索第一个网口接口,并修改为对应配置(可以通过 ip a 查看接口名字)
% v4 V1 n0 M' p, \1 H/ [
: M* a& B5 P! k, \9 {6 y 设置的第一个接口是“ Network_interface”。这是多个管理类型网络的默认接口。
1 g0 N3 Q% u$ b8 K
1 }7 ?: a* s( h! p4 \$ |network_interface: "eth0"- ^7 {1 }- t" [, `7 i2 _
搜索并设置第二个接口
. ^% s. G9 c% u" X
% I! | ?+ r! G5 u; {, V所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,这取决于网络的创建方式。此接口应处于活动状态,没有IP地址。否则,实例将无法访问外部网络。
6 p; A9 _2 X8 H( _9 V# {
+ X* k1 Z& X& `6 J 这里说人话,就是第二个接口需要给他一个空闲的网口# X6 Y& `. I8 h0 r. @
. `# d; L6 t1 a, i; X
neutron_external_interface: "eth1"
* C' o" Y0 d. ?' l搜索并设置浮动ip2 L- e7 P2 G1 N$ ?) ^" M7 w6 M
( m5 s0 k3 F$ z/ U! z
接下来,我们需要为管理流量提供浮动IP。该IP将由keepalive管理,以提供高可用性,并且应设置为在连接到我们网络接口的管理网络中不使用的地址。
' f; v! K$ g! H2 | h9 n9 Y3 x$ X! ]! S' W3 f
这里说人话就是,浮动ip不要和network_interface中的地址冲突(一般是DHCP),比如说network_interface所在DHCP范围是10.1.1.100-10.1.1.200。那么浮动ip就不建议在这个范围内,而应该选择如10.1.1.2012 U; n: Z, p; w
9 E! _# b* [5 F' d, A; ~6 x R& {kolla_internal_vip_address: "10.1.0.250"+ ^* j* L- W" z, B8 Z
编辑完成,按下Esc,再输入
X' {) O1 L9 }% E
* G1 `5 f- K0 b% t# Q) P:wq
" o' Z: H2 P, J* F$ b* I5 y保存退出9 Q( d0 `$ j2 B# z
% ]6 Z0 o2 G7 |4 h
8. 部署
& d; I2 }% H! x, h/ C8.1 docker quay.io换源" T: [ E# g q5 U4 L
sed -i.bak 's/#docker_registry:/docker_registry: quay.nju.edu.cn/g' /etc/kolla/globals.yml
! i9 V$ Y; Y! c% N5 `( Y' k/ a8.2 引导服务器( r2 `% e @. h3 U6 o
kolla-ansible -i ./multinode bootstrap-servers y% K, F" @9 [- Q( }
完成后检查docker版本,确定在20.10.xx。不然后面所有使用kolla-ansible的改动都会报错KernelMemory4 G/ A, |' v5 ^ Z' Z
, C; N# H, o0 L- U3 ^4 r+ o* F4 L& B
确保Server: Docker Engine版本在20.10.xx就行* R" E+ U! M7 k# W
& o/ n) O7 A. j9 \(venv) root@ubuntu:~# docker version/ d$ E, N d. `: S
Client: Docker Engine - Community
: q( D+ Y+ K+ c3 p6 P Version: 23.0.0
. u: M0 Y- f5 f API version: 1.41 (downgraded from 1.42)
- X x% o F5 ^. M6 z# Y% J ^ Go version: go1.19.5
! p" V1 s: ?) v' G Git commit: e92dd87
o8 G+ [- @! ?6 m# J- P! d4 y! j Built: Wed Feb 1 17:47:51 2023
% [1 F7 u* M! X) S, W OS/Arch: linux/amd64
6 c* O& t( k5 v4 z Context: default |7 P! k5 c- H0 \3 w3 R4 K5 j- E
# L- D: u4 p4 Y C4 D* H V7 _Server: Docker Engine - Community
" ]7 v2 T5 [; y+ ~4 r9 o Engine:
$ Y! i" b' H) o: J Version: 20.10.23
8 k5 H: n9 d1 }/ d API version: 1.41 (minimum version 1.12)7 A7 M/ B- f, Q, C2 B* R
Go version: go1.18.104 v9 E" F7 _+ J' n6 D- @4 t
Git commit: 6051f14
& d* P& d1 e8 b# y. u/ c$ \ Built: Thu Jan 19 17:42:57 2023+ o( T9 t$ l* I- l$ ? h+ C8 |) m
OS/Arch: linux/amd64
3 Y' Z+ ?; L) m6 U Experimental: false
5 G& k4 q0 V {- ~5 z containerd:4 U2 ]; a5 t6 @7 b+ n
Version: 1.6.163 S# i* b% L. |( q* l% l! G
GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec( l$ d t6 S ^" I
runc:
8 s5 ]3 {7 ^8 Y3 b1 p Version: 1.1.4
2 }% W3 f2 P! [, s0 J GitCommit: v1.1.4-0-g5fd4c4d; X1 V! k7 d% O2 I+ g2 G) e/ F! V
docker-init:& \8 X" @9 y0 M" T
Version: 0.19.0
9 N( F7 H; S9 S% n GitCommit: de40ad0) I2 E/ j0 C8 s s- E
8.3 对主机进行部署前检查
. M) d% L X0 o+ F$ h/ F) Akolla-ansible -i ./multinode prechecks -vvv
! h& K4 {" s' {5 b/ U4 k" }8.4 最后进行实际的 OpenStack 部署
6 k5 k( {; y: u5 z/ @kolla-ansible -i ./multinode deploy -vvv& z" S& |* r" f: g& X( S
当本脚本完成时,OpenStack 应该启动、运行并正常运行!$ k# [+ R$ Q& [, D* D6 _% }- [
% Q. g# D) @. `) a4 t5 o
PLAY RECAP ******************************************************************************************************************************************************************2 B1 m5 g+ _8 `$ o& y+ U; P! C3 J& M
control01 : ok=308 changed=218 unreachable=0 failed=0 skipped=169 rescued=0 ignored=1 8 z$ Y- e6 U, w+ x' F; ^3 t
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + n. u1 v+ O4 g1 T
+ x. d+ [( g# ]- a- v. _# Z8 v! `
访问浮动ip地址就是前台页面,如果显示证书错误,那意思就是密码错误
9 i0 x" \ E/ u- f& z
$ z- i+ V1 D& [( o( e s5 h u
! v2 ]- T, A* M0 K
: D; i5 }" Z% W. C7 q账号为admin; J( P; {. ^# B3 e1 r* t$ |7 u
7 ?& }4 R5 r9 t# t0 U3 j' \- D8 V查看密码:
$ T- v1 w( z4 |) a3 Z+ u1 O
( `8 Z, F# n J/ _也可以在post-deploy命令执行之后,去这个文件里面看/etc/kolla/admin-openrc.sh1 |& Y: ~% n; x% t, U
# B" m3 V7 I, s/ X1 ^0 a6 \8 q
cat /etc/kolla/passwords.yml |grep keystone_admin_password0 |( h; y) d5 f5 T7 g1 J$ {
6 a. j4 x. a# N* I0 }# p
) w1 ?5 \4 |$ ?9. 使用 OpenStack " G5 p( x9 c, J- E5 `& r' \
9.1 安装 OpenStack CLI 客户端 P3 l; W8 B9 ~5 v& M# I
官方命令(网络能通的可以试试)
4 M; ?& w9 j$ n, f' v0 e ?' H: v5 ^5 k- R
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga+ v( Q9 @3 |8 {4 b5 d
如果文件获取不了建议,打开这个链接,之后会跳转到
2 F7 V: U; t$ ^- ~" ?$ phttps://opendev.org/openstack/re ... per-constraints.txt
, p, M+ G2 V; M! L再去github的OpenStack镜像,即 github.com/openstack/requirements1 _; _# s) t7 [* [
然后克隆这个仓库到jihulab.com' X. C9 c5 s) I% e0 i7 ]
! e/ z' I, n5 c, t
记得选择对应的分支4 }* U3 E. v$ q: [7 h& \& j
+ [& \- N. {2 u" S5 q
9 n& W( ^3 X% J) b+ u& {* C. f+ s' T) S0 Y- D E
,接着找到对应的文件
0 s; u% g3 u% B" y1 |( D
- W2 Z' B# b; r7 u
8 V, E E5 V& }2 M- n+ B9 i0 S$ G) Z8 X. w
打开原始文件,得到下面链接8 a! `/ u& _) l+ d8 D4 W6 n
* W3 Q7 m4 U* r/ ghttps://jihulab.com/james-curtis ... per-constraints.txt
h+ [6 [& Q" }4 J, y替换官方命令,并执行/ h+ g$ p5 ?& ^8 `
# d' F) _% d5 ^% b& N1 f; S
pip install python-openstackclient -c https://jihulab.com/james-curtis ... per-constraints.txt
( s: u1 l D) A' H2 T9.2 OpenStack 需要一个 openrc 文件( s" f5 b7 {% V+ U5 I
其中设置了管理员用户的凭据。要生成此文件
% d& Z+ h# p0 t1 g" L/ D/ M. _* C
: e" J4 n) S# Rkolla-ansible post-deploy- T2 n$ ~; g4 V& k6 m2 ^
. /etc/kolla/admin-openrc.sh. [6 P6 c$ T& H* ~* |# a# [
.(点)+(空格)+可执行文件 == source+(空格)+可执行文件1 R( p3 I0 P1 B/ t2 _* { M4 B
4 E x+ k1 I2 { w接下来就可以使用OpenStack CLI了
/ N3 z2 t& o: \5 w% S$ ]0 k; Y6 g8 D' Y& t
至此OpenStack安装完成
, U' n' w, R# b
$ G- ?& I4 ^' o. v5 f后续:# O$ U2 K; z4 n8 Q% E, X$ I. S
, A+ l9 J3 i4 M' Z
OpenStack使用Skyline Dashboard面板替换默认Horizon面板
( C, r- Y# L* a' I; f: P/ xOpenStack增加节点或者减少节点,横向拓展节点; I% _9 e5 _5 Z3 J) s; F
ProxmoxVE+Ceph+OpenStack HCI超融合平台搭建,配置Bcache加速Ceph SDS
0 Z3 O; I9 A! d; L
# v5 ~" J$ k& l) ]! z9 l! p) y4 r2 R. `3 d( _
|
|