|
|
楼主 |
发表于 2023-4-4 15:22:43
|
显示全部楼层
目标
" l/ c( v" w7 Z! ]* ]部署OpenStack官方提供的Simple Configuration示例配置中的Web Application和Container Optimized两个组件配置清单。
- Y# x6 y2 o9 P* F* A% `; q
9 u6 k% x" X8 f- j/ P其中包括
9 N/ G8 _, U& P5 z h
) c3 z; D4 Z0 S; ?6 w: H5 TWeb Application:Cinder(块存储)、Glance(镜像服务)、Keystone(身份认证)、Horizon(仪表盘)、Neutron(网络服务)、Nova(计算服务)、Trove(数据库服务)、Swift(对象存储)、Ceilometer(数据收集)、Heat(编排服务)+ h+ P6 s6 o4 O0 A9 c
Container Optimized(增量):Kuryr(容器网络集成)、Barbican(密钥服务)、Designate(DNS服务)、Manila(文件存储)、Octavia(负载均衡器)、Placement(资源监控): t* K3 o& q. s# c
更多OpenStack landscape景观图可以参考官方或者 OPENSTACK LANDSCAPE云原生景观 | OpenStack地图_JamesCurtis的博客-CSDN博客
( F( S) i v1 R( R$ Q0 W+ c9 O3 X0 K7 x* A5 P
支持的操作系统
, r, F. o8 r4 b) H2 n+ e3 D0 g注意:不再支持 CentOS 7 作为主机操作系统。Train 版本同时支持 CentOS 7 和 8,并提供了迁移路径。有关迁移到 CentOS 8 的信息,请参阅Kolla Ansible Train 文档。
. A8 d/ D3 e+ b w- }! V( I9 p i3 t5 R+ M# m0 b" i( `
yoga版本支持以下操作系统:& W1 n# u4 G6 {9 X( s. \
/ i' z& V# y7 r, {1 @
CentOS Stream 8
% N0 O' Z6 H: u/ D) b! a& n" t3 e0 U9 q8 x0 H1 A: @- l
Debian Bullseye (11): t6 h5 }$ m# ~/ C8 ]
1 U" n+ _$ J9 J# [9 mopenEuler 20.03 LTS SP23 p" i4 [+ ^5 _4 _& G5 H
T& O [( v) _) ?3 E& e3 \; \. e; l. a* bRHEL 8 (deprecated)
$ A9 I) }8 |; S9 z- u% O: B
6 K3 u* G) H% W& ARocky Linux 81 \* Z* {7 ]& U( H
4 X/ K$ }+ Q; ]8 }$ s# i2 k9 c8 x! f
Ubuntu Focal (20.04); J o8 V4 ]" r$ L
& p# C6 k% y J; ~) J6 n; H1 Q, F! Z
我这里使用的是Ubuntu 22.04 LTS(mini安装)
0 @0 a# v; @2 d {4 n# `$ T7 S$ C
) H8 K' c7 o u7 a! ?# \8 b! v下面开始安装
6 i5 j) W: e9 k8 F+ j: o
! I' Q9 m$ M9 ~* F( X. [1. 安装系统依赖
7 {8 B, H3 y1 i0 c0 v( N1.1. 更新软件包索引! i! o' s6 k3 ?, ~) c
sudo apt update% t) t# b- E0 w0 x$ w
1.2. 安装python依赖
* x5 c! H. U2 T7 Tsudo apt install git python3-dev libffi-dev gcc libssl-dev
1 t3 N0 D4 H3 O4 W2. 安装python-venv虚拟环境依赖% G" a5 ~; S* q) _. }! s0 F
2.1 安装python3-venv r7 x8 g$ O$ F9 c+ E$ ^! c1 u' X
sudo apt install python3-venv
5 [3 w4 { F+ y3 L2.2 创建虚拟环境并激活它! a! j8 i- }& m2 ?+ Z' Q2 [
mkdir /path && mkdir /path/to # 也可以自定路径' t) s$ J3 `) K; u
python3 -m venv /path/to/venv
' i. w6 T1 a9 K9 A( ksource /path/to/venv/bin/activate* J; O7 x# o" X) ^3 s/ q
2.3 确保安装了最新版本的pip0 r2 u2 t$ F1 Z; T2 O- t7 }
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip! x5 @3 g" h- T: @4 [# {: Z g, ^1 m8 x
2.4 pypi换源
4 [* j$ v. _/ M. V7 s+ epip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
" ~& D* a8 M! K2 F% Z2.5 安装Ansible) r$ |& h$ g9 I1 B2 n
pip install 'ansible>=4,<6'
* }- s- z( k- O4 y3. 安装Kolla-Ansible5 p# ^! {# H- [* M2 h, b* W# i: q) |- V
3.1 kolla
5 `' S( V. y0 ~6 B+ C/ E# pip install git+https://opendev.org/openstack/kolla-ansible@stable/yoga
2 g" Q; ]) V8 X1 [+ D# 上面是原版命令,建议使用jihulab.com克隆一份
! g+ Q' D- V) A- k7 {' A: h& Kpip install git+https://jihulab.com/james-curtis/kolla-ansible@stable/yoga
0 x4 A, A8 l# C5 m' M3.2 创建文件夹/etc/kolla/ q5 K0 f; T5 n5 C6 _2 C
sudo mkdir -p /etc/kolla
4 t+ d, |# A: wsudo chown $USER:$USER /etc/kolla! K p6 H! K. U
3.3 复制 globals.yml 和 passwords.yml 到 /etc/kolla
; x1 Q. A( g' \$ N5 z# 如果你使用了自定义路径,记得替换/path/to# f' j) C; \' `2 {9 V' |: B
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
; w$ U+ w8 H+ T3.4 复制清单文件( F! R n) _9 _4 `
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
( Z, P( V/ ^3 a& d1 T4. 安装Ansible Galaxy依赖
7 M" L4 M6 {$ d$ Z. |' a6 A4.1 换源
$ x; ~& j9 z: g* ^找到 /path/to/venv/share/kolla-ansible/requirements.yml 4 d+ F0 L2 S# B6 q% `
7 d# ?. C* O: O" k内容如下
/ i0 ]/ e: K; D8 r# A7 ^( z1 }- z# x2 S! `/ D
---
1 [9 T1 ]; ?4 _collections:
2 L# Q- p2 A6 U4 C - name: https://opendev.org/openstack/ansible-collection-kolla0 |2 l; N6 s6 B
type: git
' a, D7 Z( q' }' I6 V; r: \ G version: stable/yoga
* i x& l. d1 E" A# x9 C修改这个git仓库地址,如果镜像拉不下,建议去拉github的OpenStack镜像) A$ f6 @ y1 M* b
3 D$ |, ~4 n2 r# B2 @9 q% j* G6 Z修改成如下" |1 M, C8 r1 h5 \& D" a% w
* _1 \& b0 |9 x! S' _, [---# R" }$ R0 C B: y
collections:
# m* N/ b* S. x3 T$ l$ P - name: https://jihulab.com/james-curtis/ansible-collection-kolla5 D% B% J" @0 b" m/ ~( e
type: git
o0 ?7 D6 k0 m0 x version: stable/yoga A" A3 x1 s: a* }7 a
4.2 安装Kolla-Ansible-Collections依赖6 G1 H3 g L2 }5 z
kolla-ansible install-deps
9 Q6 L5 q$ |2 D$ \/ y4.3 docker换源 && 指定docker版本到20.10.*0 Y+ F- s* U" a* i
这里不换源是可以的。但是截止docker 23.0.0发布时间之后再来使用kolla-ansible,首次安装没问题,后续如果要添加删除组件的话就会报错。原因是docker删除了容器的 `KernelMemory` 属性,但是kolla需要读取,导致数组下标不存在报错
' k7 n. R' m: O4 D) i9 b4 Q7 t) ^' |; ^7 Y: h- ]
请参阅:Kolla-Ansible deploy部署报错 KeyError: \\‘KernelMemory_JamesCurtis的博客-CSDN博客* s# ^: E5 ^1 {
& P4 b+ N# @1 V2 [1 O4 b" ]# K
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.yml2 a* K! J" G& y1 L8 X* 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
; ]3 W' w8 l6 \0 Y! e5 B4.4 配置Ansible
. _ T& Z( e( A9 W' ?mkdir /etc/ansible
# V$ Q1 |+ Q$ s" ]) r w2 techo "[defaults]1 [" A, a( _9 d! P
host_key_checking=False
! r1 s( |. l5 X; y+ ]" upipelining=True
% J4 |. r# x) |: b7 Tforks=100" > /etc/ansible/ansible.cfg
) a* O. O% l$ a* h3 s7 A& G5. 准备初始化配置
1 ~6 F$ I% U6 V4 u2 |* V( @5 r' v如果单机部署,你也可以跳过此步骤,然后使用 all-in-one 清单,后续如果再增加机器可以切换回到 multinode 清单,只需要注意修改好机器主机名就行。" A" a0 g$ Q9 Z j
$ O; _7 Q# o: B1 D
对于all-in-one虚拟环境中的场景,将以下内容添加到all-in-one清单的最开头! R6 z, D( M7 h
7 {- c# T$ z) @; b/ Jlocalhost ansible_python_interpreter=python
y! H. f3 y# C6 U5 X, m- U5.1 修改配置文件, f3 f; s1 C, b, K
我这里使用3+1机器演示,) i+ C5 M i) t; ?9 o6 Y- A
/ d& O% N+ j. q' n) z+ I1 x 部署机:10.10.1.80/243 h# J6 r( X0 a* v
0 S" _9 P2 z$ x2 n- c节点01:10.10.1.81/24 control01 F* L! C' r8 B9 Y
6 Y: Z5 o/ N; V! y节点02:10.10.1.82/24 control02 P u0 T9 K' V D9 F
) a7 w8 G) |9 M2 q
节点03:10.10.1.83/24 control03
0 [2 X6 a0 H4 p5 E1 W. z! m9 b' S% N3 _
这里仅仅展示 [baremetal:children] 节点之前的配置文件,切勿照搬!!!
9 L& }9 r e* a; I
0 P1 i Y$ O5 n+ l( l# j e# These initial groups are the only groups required to be modified. The
7 w( a" ~# t3 p% D$ h7 A# additional groups are for more control of the environment.$ q: y @$ ?, m) j$ p
[control]* \; F6 o* [6 m* N* X8 f
# These hostname must be resolvable from your deployment host
2 H$ j0 Z& a( h0 G- V2 p: U Bcontrol01 hostname=control01 ansible_user=root ansible_password=1/ C; t* ^% Q. s1 a8 G
control02 hostname=control02 ansible_user=root ansible_password=1
! {% _' v Q+ I4 C' Ycontrol03 hostname=control03 ansible_user=root ansible_password=1
& k, f/ I" T6 [; U- b1 Q* z
" S; o3 P( M6 b: `# The above can also be specified as follows:/ U4 w) \* v. o: M4 C0 C# W
# control[01:03] ansible_user=kolla3 A* [1 \& b( D; N5 l: W
! t0 n+ @! T7 U1 K9 o
# The network nodes are where your l3-agent and loadbalancers will run
# }. |$ e& X% g5 N6 _% t# This can be the same as a host in the control group
5 T5 q5 m/ g/ g- O+ h/ c! W# d$ G# [network]1 Q. _( d1 n& a4 f
# network01) F3 h6 M& h9 L+ C
# network02! N9 u' \( ]$ U/ F
" N+ P$ T2 Z. @. s J# when you specify group_name:children, it will use contents of group specified.6 j5 }/ Z$ J% q- `
[network:children]9 L( _7 e1 \' ?; r; w p
control+ N$ T8 X, o" @. Y& b% k: H* _
0 Q j# {( ?3 ?3 `7 s
M/ A; {/ d( l$ @- N. j4 P
# [compute]
8 w5 S5 S" C, B( J E# compute01
8 x* \6 Z" m: W9 E[compute:children]; S) L' s9 s: H. p* r
control9 t$ q, T1 y* t W1 T* W5 L
3 b7 K& c. X: [+ F Q$ a[monitoring:children]
7 n5 F0 k# Z2 c. C4 w9 P# d, l) r, vcontrol% k/ g. l! {9 r5 r+ C; [& x
# [monitoring]6 }% {- p3 l6 o
# control01 ansible_user=root ansible_password=1 ansible_become=true
6 B O# O) c+ x) Y9 X0 x# monitoring010 ?$ Q' k; Y% a; ^0 o# C, t& Y
1 @5 H6 g0 u* O# When compute nodes and control nodes use different interfaces,
( ~7 e! D2 i" r& k# you need to comment out "api_interface" and other interfaces from the globals.yml
# j0 p' D3 F0 x0 y2 G2 L# and specify like below:; D2 f, s$ C) p, l, f
#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em1
" U' [% p. q3 J( Y e- q$ O9 r$ I8 g' ~
# [storage]4 B& ~. d* q$ u4 S! u. b5 o
# storage01& j* |8 p( ]3 @( i3 g
[storage:children]
1 I7 ?6 z' k! A- ?control! y5 m# \& a1 }. W
+ k* p6 K- i& L9 B( F J; p[deployment]
8 |( W) A. g/ B% mdeploy ansible_connection=local
1 `, `. _+ S. N, ?" i
, X. T0 S: a6 B- A9 S8 M# 下接[baremetal:children]
) h2 Z H' r4 V* Z5.2 修改hosts- | h) F6 W" H: B0 t
如果使用 all-in-one 清单,这一步也可以跳过6 O6 e" j4 H; s( k) B
; W: T! P9 S7 f# |! f% c; r) e! t0 z0 T
编辑/etc/hosts文件,注意替换成自己的机器的内网ip
8 u3 E2 u: r0 G" k- w* p) \
& |! X4 q [6 A* d9 }8 k- |$ G只需要修改部署机。后续使用bootstrap-server命令之后会同步到所有节点% J7 J, |3 e: d- m
1 }; s3 \& m u" r: d) e! M
# 这里是deploy机器上的文件
& ]' W7 `+ ]6 r127.0.0.1 localhost: P, A" ~+ A' f
10.10.1.80 deploy' [" P+ O) i7 N4 I1 v
10.10.1.81 control012 C# ^- T5 X# [) [1 N: y2 \
10.10.1.82 control02$ A5 L/ w8 X% i
10.10.1.83 control03
. \) O6 K- e% Z) I I' \5.3 安装 sshpass
) o/ Q! i* K/ A+ F2 G& I3 dapt install sshpass -y
% x& U, u8 ?' T' u5.4 配置ssh密钥对
0 u4 `0 q# d3 p7 Z% zssh-keygen% o N( N: s, _2 w" U) U
一路回车. {, f* `5 g) o1 ~
i2 V- H$ k5 z/ Assh-copy-id 10.10.1.81) M* b3 J% r# H( x
# 注意替换自己的内网ip
" d, X8 }9 _7 W* K% k6 `输入yes同意指纹,然后输入密码。就可以了
2 @( P( T' R8 n4 _ k
; f" x+ o; ]/ W' r, \# 看下如下提示就是成功了
* v3 m- ~4 e( G/ q4 uroot@10.10.1.81's password:
2 J) t. G5 o% o- }+ M, B1 W& ^+ w( \5 f1 |2 N) z! q
Number of key(s) added: 1
' S U* c3 a; [' O
1 Y! x& ~* l7 S% ? D4 z5 m! Z/ LNow try logging into the machine, with: "ssh '10.10.1.81'"
8 Q, A! ]; p7 I- M4 @and check to make sure that only the key(s) you wanted were added.8 S% @) `$ n6 q
/ F1 ^2 |3 d! e: }7 }7 R
5.5 检查清单配置是否正确
- I' s$ a( Q Mansible -i multinode all -m ping
5 ~- t6 F& c6 k. N& u/ E" _& k返回下面结果就是成功
4 q, P2 O' m9 j3 L2 I# `( F
8 E# N; X0 s# K6 s* F( j(venv) root@ubuntu:~# ansible -i multinode all -m ping
4 F5 M0 T2 E3 t0 i9 d& a/ ~[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details) h- f: P5 I+ o% [$ P
localhost | SUCCESS => {
5 i5 a' m4 }% O" f6 P2 G% s "ansible_facts": {5 r- m2 X. k/ H, v. {
"discovered_interpreter_python": "/usr/bin/python3"2 o6 H5 v: u$ d
},
% H9 {; \ ]: Y; p "changed": false,
1 B5 ]9 y3 k2 B( t( j "ping": "pong"$ U% F5 |0 d7 u( B6 Z8 b
}5 U+ u7 z! ~$ p: M$ K8 z# F8 R
control01 | SUCCESS => {
) Z4 P B1 x3 l* |1 }4 e "ansible_facts": {% U% Q8 o9 F1 q' w
"discovered_interpreter_python": "/usr/bin/python3"
2 y3 X: k) Y/ `- L/ Y" \3 N9 L },9 p+ [% `+ a- M# D5 X; ^
"changed": false,
) Q( O) m0 G3 Z$ Y/ g' n "ping": "pong"
, O c n' V& ]8 t} i8 U V. ]3 w0 N# C
6. 生成密码
! J6 z( ?$ ?1 N$ o, `5 A$ J. Gkolla-genpwd. Q- e' q( J* c- u- U
7. 配置globals.yml$ l T8 F2 o( Y6 z
先安装一下vim
' [4 w9 q5 h9 p% s- [7 b% S- S) O
+ Q) U) C$ ~2 J" a, v) o1 Uapt install vim -y7 }8 D7 T, O3 `+ U2 t, c
编辑
. M* e0 @; F, {) I, b/ \' {
& `7 ]5 H: T& j( N* n5 \vim /etc/kolla/globals.yml1 w1 n/ s0 f! a3 Y+ y
先不要进入编辑模式,输入下面,显示行号9 h, O, ^6 s, p" M* p, p- P8 T
2 K3 I/ U8 L! \! Y2 X- ^7 I
:set number
( x% c; W' Q, t7.1 修改基础镜像发行版
9 ?3 f5 m0 K& K默认是centos,要修改为debian。默认的centos有一些镜像不存在# i. O# e) n! Q A7 T5 _; r& ~7 O5 d
+ w# ]; J0 y" X0 z0 z2 S \7 xsed -i.bak 's/#kolla_base_distro: "centos"/kolla_base_distro: "debian"/' /etc/kolla/globals.yml% C. b* `0 _6 p T
7.2 编辑网络接口
6 o0 _% A4 A+ P! E0 M5 L4 {3 w6 O; j A这里,vim的基本使用不在赘述$ A% U5 ^+ z# J
0 D A' A- c( @7 d
搜索第一个网口接口,并修改为对应配置(可以通过 ip a 查看接口名字), q* ] [! H+ s; |7 _
9 i: [# B3 G" S 设置的第一个接口是“ Network_interface”。这是多个管理类型网络的默认接口。& w' a2 w1 V6 @! o7 \7 T4 x) ^, Z6 y
" [: l) G5 Z# s0 h" e, inetwork_interface: "eth0"* P# q/ F; Y, F; Z
搜索并设置第二个接口
: ]1 r8 c8 j9 w( g+ B" v) T: e2 g4 m9 M9 V$ b5 v
所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,这取决于网络的创建方式。此接口应处于活动状态,没有IP地址。否则,实例将无法访问外部网络。% P3 s5 p3 {5 H: s3 i1 P
' N f& j& q. H0 _
这里说人话,就是第二个接口需要给他一个空闲的网口 Q4 n4 a# g( z& \8 i8 Y
% f9 C" c2 k9 ]# K! p# qneutron_external_interface: "eth1"
6 ^, F2 Q6 U) a" S搜索并设置浮动ip: [( {' i; m- q+ \
% c. b# z* L/ u& o6 h C
接下来,我们需要为管理流量提供浮动IP。该IP将由keepalive管理,以提供高可用性,并且应设置为在连接到我们网络接口的管理网络中不使用的地址。: Y% Q( ~7 k* ?0 [, X3 o. }
9 W. y0 d4 @% W1 G' y d1 H这里说人话就是,浮动ip不要和network_interface中的地址冲突(一般是DHCP),比如说network_interface所在DHCP范围是10.1.1.100-10.1.1.200。那么浮动ip就不建议在这个范围内,而应该选择如10.1.1.201
' w. I) x/ p0 m) j. o- g
5 J5 H% [0 x* D: U. i% Fkolla_internal_vip_address: "10.1.0.250"
& f' v" l v' v5 I2 C编辑完成,按下Esc,再输入, w! O0 K1 b$ i; y# ]( d
Z8 T% [6 E' d' E% N- s" a:wq& G4 U) r+ i2 V }
保存退出7 b9 `$ B. r; I; w- k" U
" r4 O) O3 j3 _
8. 部署+ \8 r8 S7 k7 y) Z5 N9 K U# P& q
8.1 docker quay.io换源
2 [4 s0 D* G; ?+ \# Ssed -i.bak 's/#docker_registry:/docker_registry: quay.nju.edu.cn/g' /etc/kolla/globals.yml6 I* e( r' w8 P3 J
8.2 引导服务器# A; E2 x d p& E
kolla-ansible -i ./multinode bootstrap-servers
* B6 J, U! r5 S& K, `完成后检查docker版本,确定在20.10.xx。不然后面所有使用kolla-ansible的改动都会报错KernelMemory2 {4 ^' p3 p' ?0 s w! u6 |7 a
" L7 j! o7 ], V! O5 ]
确保Server: Docker Engine版本在20.10.xx就行! X* @! q( }7 N
% f$ ~. j* U7 S$ Q
(venv) root@ubuntu:~# docker version3 K( { k2 k9 i# `6 [
Client: Docker Engine - Community( ]$ g% ]( R( {- Y* x
Version: 23.0.0' M, k! s: n; F* h7 G0 Y' G, l0 y3 f* x W
API version: 1.41 (downgraded from 1.42)( V4 P. `" F2 A0 `
Go version: go1.19.5, L1 o3 t6 v* _& w/ ^
Git commit: e92dd87
' K! a! g* Q& ~5 w- S9 [9 ]6 {! n Built: Wed Feb 1 17:47:51 2023
* b! W# P6 j( \0 { OS/Arch: linux/amd64
2 f9 _" X/ b5 v) }3 P; _" b7 Y# t Context: default
9 N. D2 u! {! _5 ?0 M& [2 \# w
' p, A% y1 M) SServer: Docker Engine - Community
0 V. s) h& h' }3 C! v1 o. P Engine:% P9 A s% `" K' \6 N, \8 H
Version: 20.10.23- B% J v' W' ^' g
API version: 1.41 (minimum version 1.12)
. ~7 W2 R' r# J1 z Go version: go1.18.10! K7 B. l, f3 N& Z: r: }
Git commit: 6051f14
! e! t/ \( F7 u Built: Thu Jan 19 17:42:57 2023
1 p0 h ]4 j" ?+ i* f( l( d6 I3 G OS/Arch: linux/amd64
/ |- S/ x) x# X/ S, b Experimental: false9 C+ L- ~# B9 {1 G
containerd:) `. f- W4 s& H6 L5 V; n
Version: 1.6.169 C y3 `2 M# h1 Z$ o
GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec
5 C* Y9 l: y! m: V& J runc:; v/ i! j$ |- z( J @# _. Q% b
Version: 1.1.4
+ p( N* _+ g+ b* ]' n2 k1 ? GitCommit: v1.1.4-0-g5fd4c4d) L* {! E3 \3 F J, l
docker-init:% R; Y1 C) X) `/ P2 A
Version: 0.19.03 l: y' V' P# K
GitCommit: de40ad0
/ X- i( K: A/ W2 M* y8.3 对主机进行部署前检查 |% G- _, @8 z: v) B* {
kolla-ansible -i ./multinode prechecks -vvv; S0 ?! A# M& a& I3 C0 g1 b) h
8.4 最后进行实际的 OpenStack 部署1 b' V( q1 z. A9 d" }$ H( q/ {
kolla-ansible -i ./multinode deploy -vvv2 b' M( p. {( j8 x+ c4 p
当本脚本完成时,OpenStack 应该启动、运行并正常运行!# Q! J9 B+ ^7 |, _
* K1 i3 g0 G2 ?2 h1 m
PLAY RECAP ******************************************************************************************************************************************************************
/ P' I# c7 ]% ]; `6 J2 Ucontrol01 : ok=308 changed=218 unreachable=0 failed=0 skipped=169 rescued=0 ignored=1
+ j4 {6 Q1 @, [+ P! s! elocalhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
, M" }- y; P/ G% B8 a4 f: m6 G G9 N# A @, M
访问浮动ip地址就是前台页面,如果显示证书错误,那意思就是密码错误; u$ P: {" H0 O" L
l) ?, g5 P3 G, _! y3 s1 B( J0 }# n
: l! T& B. J- D0 h) l" M( w
) |, J/ D8 M! Z: n. `$ U账号为admin
; j5 r" s, M# h6 T- y
% J( J' o, A2 r/ `7 ?查看密码:
# o1 r o6 s! z+ N+ X: K7 V6 p( B, I& ^
也可以在post-deploy命令执行之后,去这个文件里面看/etc/kolla/admin-openrc.sh
9 {5 p& c% Y d2 c, g' N8 H/ x. ]
5 k$ C6 ?8 u5 ^ L: zcat /etc/kolla/passwords.yml |grep keystone_admin_password
U1 o3 M; C( ^. v% P4 m/ O( s: k9 i, h5 |
) ^+ X" [) C7 Z. k4 \9. 使用 OpenStack ' I' p/ A g: N' O, U7 i6 t8 B
9.1 安装 OpenStack CLI 客户端+ V, t( ~/ f5 G* {
官方命令(网络能通的可以试试)
* J. t/ _. o8 G) M- h8 b' C. W; Q. N; w& H8 a& S& q6 M
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga
+ {+ d/ Q. T/ t5 U如果文件获取不了建议,打开这个链接,之后会跳转到. J9 b: ^% s( _9 W/ O( D
https://opendev.org/openstack/re ... per-constraints.txt
2 r4 x$ d& N/ a+ a7 @; V再去github的OpenStack镜像,即 github.com/openstack/requirements% e: F7 x' F# f% |
然后克隆这个仓库到jihulab.com. p+ L \' \" N! t8 P R
0 P! |" E$ o1 o: C2 d. s" I) T记得选择对应的分支
4 h3 `" B2 p, T$ i1 C7 I1 A* G. M6 K K1 B0 ^
- |) \5 s8 ]" G( j3 N# s9 k* t: l3 p- s# q9 w( l0 J8 c
- \8 r x% ~" e% p ,接着找到对应的文件5 W2 P" z7 T2 M& v2 g4 `
; L4 ?$ o3 K h6 X
: c/ _0 B- X' P$ ^: ]7 y" O, R6 Y& D
打开原始文件,得到下面链接
, P( I: d1 S2 Z( X1 m8 O( f
+ r( R- B3 q/ V( U: ihttps://jihulab.com/james-curtis ... per-constraints.txt! o/ b' ]8 n, X2 I+ N
替换官方命令,并执行
* B2 Q$ {2 n; ^& ?) i1 Q9 p- m
! I+ O0 c, M+ H: p8 P+ S2 Opip install python-openstackclient -c https://jihulab.com/james-curtis ... per-constraints.txt
* C, a# }1 K8 }' y2 I9.2 OpenStack 需要一个 openrc 文件9 R& k7 C: I. c1 M& j5 C/ d
其中设置了管理员用户的凭据。要生成此文件) n, e8 v" V+ v( R( m& Z, u, |3 y
" t. V# L$ q: O+ i: Q' ?' y6 P! Wkolla-ansible post-deploy; _" Q+ |9 S; h" R0 ~0 h, f
. /etc/kolla/admin-openrc.sh7 @1 x2 ?% e: j' d. x l
.(点)+(空格)+可执行文件 == source+(空格)+可执行文件
+ O0 g. e' i5 K7 i* X3 E9 X% {/ W) a; c: D3 ]! B! ?: Q
接下来就可以使用OpenStack CLI了# r# K$ m7 U* O3 O
" W; d( | e4 C至此OpenStack安装完成
# J6 M2 t$ f) s6 x* ]& u G# C! `
后续:1 x- l* t5 N K" g' j
7 f; ]% Z: f7 V7 H( a" t9 QOpenStack使用Skyline Dashboard面板替换默认Horizon面板) {$ ~8 m- \0 R+ x
OpenStack增加节点或者减少节点,横向拓展节点
2 Y. H: c; d6 ^( y& A/ _% w2 hProxmoxVE+Ceph+OpenStack HCI超融合平台搭建,配置Bcache加速Ceph SDS4 e# f2 E0 P {$ d' }2 T
6 Q# `! `: w8 x( C' F
) \& \5 F! x5 ~# q
|
|