|
|
楼主 |
发表于 2023-4-4 15:22:43
|
显示全部楼层
目标
% \- {. a# B3 D, o9 }0 Z/ B部署OpenStack官方提供的Simple Configuration示例配置中的Web Application和Container Optimized两个组件配置清单。5 I# r0 d4 U% D
5 f0 W- L# @6 q2 h' l; L6 p- G8 y! o其中包括; g' M* z8 S6 J8 `: S, T% q3 o
3 v! i# p& h8 [: c; i* vWeb Application:Cinder(块存储)、Glance(镜像服务)、Keystone(身份认证)、Horizon(仪表盘)、Neutron(网络服务)、Nova(计算服务)、Trove(数据库服务)、Swift(对象存储)、Ceilometer(数据收集)、Heat(编排服务)8 a3 e" r# H; D3 q+ h8 O* ~% s2 n
Container Optimized(增量):Kuryr(容器网络集成)、Barbican(密钥服务)、Designate(DNS服务)、Manila(文件存储)、Octavia(负载均衡器)、Placement(资源监控)- L5 R1 G8 j; Y) l) S
更多OpenStack landscape景观图可以参考官方或者 OPENSTACK LANDSCAPE云原生景观 | OpenStack地图_JamesCurtis的博客-CSDN博客) D5 p4 F O4 S4 a8 z* J3 O
; S% G( @7 s4 o) V8 R
支持的操作系统+ b4 @+ j, X6 u( {* v
注意:不再支持 CentOS 7 作为主机操作系统。Train 版本同时支持 CentOS 7 和 8,并提供了迁移路径。有关迁移到 CentOS 8 的信息,请参阅Kolla Ansible Train 文档。
; V/ ~& u: p' `2 D5 }
9 ]4 @* v) w7 J m/ gyoga版本支持以下操作系统:; R8 W2 m$ a3 `# q9 H6 I. m
) ]. u" |& W d2 m/ m- {! Y
CentOS Stream 8
$ E( Y& j( m6 Y* x
: v& A% S0 {2 j/ ]$ H$ {/ @Debian Bullseye (11)
+ P3 ^2 w1 \8 o5 X5 I
3 d/ o) t+ g* x' |' ZopenEuler 20.03 LTS SP2# ~! ^9 G& H, S+ c8 U' C
5 d* \5 s" F o! w- I
RHEL 8 (deprecated)5 F# ]1 V' P; n) Y; Y9 G8 E( {
$ T- |6 U8 f. i6 b3 w: ]' c
Rocky Linux 8
) I7 D: D" T7 \9 T% k/ i: ?; M0 A9 A
: L7 ?8 {' W! K. v% T& ]Ubuntu Focal (20.04)
) P/ o2 N% J5 r3 R
/ R& h: w1 X2 a8 s7 L2 Y我这里使用的是Ubuntu 22.04 LTS(mini安装)
3 o# a& _. s% O' n5 e
) }7 ^ K4 T' z- f' Z, @7 \. ~下面开始安装
$ m& C% X0 `3 i) I' U9 W0 _3 b2 L9 E5 u ^2 U1 @
1. 安装系统依赖6 Q4 C( q( g0 }# V" K
1.1. 更新软件包索引. D+ J& N% e8 {' K M
sudo apt update: B- x2 x6 ?4 V# G0 R; e; z
1.2. 安装python依赖( v& X9 U' c n, P: C& T
sudo apt install git python3-dev libffi-dev gcc libssl-dev
: O1 n4 F% a0 \$ a/ V2. 安装python-venv虚拟环境依赖. e; k4 l$ \3 T* A2 L
2.1 安装python3-venv! `2 G8 V0 Z. J) m& m
sudo apt install python3-venv
- R* _, z2 m7 [1 Z, V; G \2.2 创建虚拟环境并激活它0 q# ?8 e! M! A' {4 o
mkdir /path && mkdir /path/to # 也可以自定路径
2 s" D2 Q+ [6 y1 }python3 -m venv /path/to/venv
& R+ T' B# R% {, U7 psource /path/to/venv/bin/activate
* v6 C# @9 D% o% r- S2 u2.3 确保安装了最新版本的pip
# E5 N* ? T/ H' d0 t4 Kpython -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip9 Z9 m! Q, c1 I5 ^9 _
2.4 pypi换源( x# Y2 b+ k2 X" Z
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple: m' O7 U* f& c& a" H0 Q
2.5 安装Ansible( Y) u# [6 E$ M7 q5 w" J( o- g
pip install 'ansible>=4,<6'# u' p* J9 |0 W: \8 b- T
3. 安装Kolla-Ansible* a1 k; q6 o8 _% c6 ]
3.1 kolla* F1 \. L4 d L& N
# pip install git+https://opendev.org/openstack/kolla-ansible@stable/yoga# x) B- B9 n% X: L! `9 [- x/ i1 `
# 上面是原版命令,建议使用jihulab.com克隆一份& v; ~" Y Z; \" H4 e7 _
pip install git+https://jihulab.com/james-curtis/kolla-ansible@stable/yoga: j% V. C# v/ I" Y$ a4 y$ O
3.2 创建文件夹/etc/kolla) ?3 k- N: O9 x% e9 f) n( z8 o6 `
sudo mkdir -p /etc/kolla
' a5 y* P) n6 e* C/ i+ ^sudo chown $USER:$USER /etc/kolla
7 Z6 L4 d; w6 |7 G Q3.3 复制 globals.yml 和 passwords.yml 到 /etc/kolla
4 I; C& x/ b4 H% f/ R# 如果你使用了自定义路径,记得替换/path/to
1 }4 V4 l0 u0 l( j- G: I* S' ]) Scp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla+ Q q( L) A9 @. Q% Y$ p
3.4 复制清单文件
; W8 R" d2 z) [8 r& ]) u+ Q3 Jcp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
4 h8 D1 M* y& G# f, m4. 安装Ansible Galaxy依赖5 B/ R/ T8 e5 _+ @0 z
4.1 换源+ p" c n; ^ T2 f; S- t
找到 /path/to/venv/share/kolla-ansible/requirements.yml 8 Y4 _: l3 O$ U2 \7 s! G
: P& ~+ Q. v4 }5 K$ r4 u& R9 z
内容如下( D6 H5 U6 z( U; f( S5 e: X3 T2 X
+ u# a# b' `$ ^---# X8 i/ R/ I. {+ `, Z2 N
collections:
, B. c! _1 x3 y" h% S% H! R - name: https://opendev.org/openstack/ansible-collection-kolla
7 E2 f- z4 t: m0 |4 o# f/ y type: git+ h. ^& [7 G$ S8 A# a- R+ a) Q
version: stable/yoga
1 F* B' U' B% b5 b1 Q8 J, e" Z修改这个git仓库地址,如果镜像拉不下,建议去拉github的OpenStack镜像
" }' b, h" o# V2 o- i: V; ^2 C- c
}% m h" ?& V h( R3 \修改成如下
6 w/ A% Y+ b3 R" U
- _! J& u9 b- e0 ]( D' R---$ V7 O7 n# J$ I7 z$ _$ E
collections:& ~( P3 [5 C0 C7 J. B' p2 @% \! Q
- name: https://jihulab.com/james-curtis/ansible-collection-kolla6 M3 U& l! r, n8 ]: L0 P
type: git$ @/ r6 G& G# h5 g6 m
version: stable/yoga
* Z. W3 \: N6 M) ?5 h4.2 安装Kolla-Ansible-Collections依赖- Q! i+ x' G! m2 M
kolla-ansible install-deps. y, @* q& o6 z& ~$ E
4.3 docker换源 && 指定docker版本到20.10.*- l+ H1 u7 h2 a( b0 Z# g2 ]
这里不换源是可以的。但是截止docker 23.0.0发布时间之后再来使用kolla-ansible,首次安装没问题,后续如果要添加删除组件的话就会报错。原因是docker删除了容器的 `KernelMemory` 属性,但是kolla需要读取,导致数组下标不存在报错
, C: B, q+ f* z1 [; B T* c! ~
C" a' N0 [6 c8 s* @& u请参阅:Kolla-Ansible deploy部署报错 KeyError: \\‘KernelMemory_JamesCurtis的博客-CSDN博客
) L- Y0 l7 b& q3 m `
+ v8 K% S! }) f! Y/ Lsed -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
. W' @2 l8 l% y" D9 ~- l. B: L- k( csed -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
: s# r/ E: S* K ^4.4 配置Ansible' \( I0 d$ ]- Q/ \
mkdir /etc/ansible 6 c" s. V2 ` T$ }+ k4 T
echo "[defaults]
: ~; p4 }% ^5 n! L7 uhost_key_checking=False
2 f/ d& w9 }5 q' Q, ppipelining=True
7 K$ @0 I k% X* `9 c( \/ Yforks=100" > /etc/ansible/ansible.cfg
3 ]& g% Y7 \. f5. 准备初始化配置
8 S/ k4 m4 F( V L* W/ @/ r+ J如果单机部署,你也可以跳过此步骤,然后使用 all-in-one 清单,后续如果再增加机器可以切换回到 multinode 清单,只需要注意修改好机器主机名就行。
: L E* `" m1 p! _/ W A7 Q+ v% z$ s- @" K! c W. g1 ^0 [3 P) R: m
对于all-in-one虚拟环境中的场景,将以下内容添加到all-in-one清单的最开头
. x( N) Z2 z, t! {" y
5 @* ~1 q* ?9 p5 X2 V. G* G! Glocalhost ansible_python_interpreter=python: \. _9 F1 D l8 f$ c
5.1 修改配置文件% \2 [+ D9 b! D9 U4 \4 {7 e
我这里使用3+1机器演示,. }' M+ H' v' c7 K
! {* z4 `3 b0 e+ e. Z2 C4 _. P. T& l1 x 部署机:10.10.1.80/24" Y* A1 Q# X3 R9 O0 N, B; Z
5 R5 T3 j& K$ _: s6 a# T3 m节点01:10.10.1.81/24 control01: ?4 W) k) l/ m% N* c5 n
: P0 w/ x+ z* b' Y- Q/ _0 c# K节点02:10.10.1.82/24 control02
6 J& \* X- L. N# k7 {3 j4 X8 V7 v: Z
节点03:10.10.1.83/24 control03
+ o4 ^4 `" F8 V) m3 T# b4 L- I% O. g
这里仅仅展示 [baremetal:children] 节点之前的配置文件,切勿照搬!!! 7 a/ Q& k; [- f# p+ m; {$ w
& r: Z- P, q: [/ N8 z# These initial groups are the only groups required to be modified. The/ C% N+ \2 u/ S8 @: h1 X/ H: E
# additional groups are for more control of the environment.2 }1 e8 X! a _2 ?8 K# K
[control]
0 I% M4 U! D" d }# These hostname must be resolvable from your deployment host
$ m+ }) U# H/ E/ B6 s9 E& d( q6 H$ X0 ccontrol01 hostname=control01 ansible_user=root ansible_password=1
: {) u: W/ l5 Y* _control02 hostname=control02 ansible_user=root ansible_password=1/ y) c) {4 b$ i
control03 hostname=control03 ansible_user=root ansible_password=1( w& K" l6 P$ J6 ^
3 q7 _( L9 l7 G9 F# F3 p( K' E$ }# The above can also be specified as follows:
! ^- l! Q& a* g4 O) a& f7 \# control[01:03] ansible_user=kolla
+ A6 r `1 D" w
" V. Y2 _. V& X# X; c8 F2 p3 X# The network nodes are where your l3-agent and loadbalancers will run
9 q1 R/ Z( B7 d+ h% a v# This can be the same as a host in the control group
# b6 L. V' Q- `# [network]5 m* q: A4 v% O$ {
# network01
( N: i2 b! G& A! z5 S# network02
j) ~0 q! G c
& {5 |9 o$ t$ _( R# when you specify group_name:children, it will use contents of group specified.. N! _; J" K& I1 y- k) K' u& h
[network:children]! J5 a# Q% x/ Z# x
control
3 |: ?3 f3 g$ i. F$ J* A' L+ s E# m9 d
. J. D5 g& f3 h ^' x# [compute]& F. q5 b1 t- k, x' i. ^0 W
# compute01
. @; w( N, v6 J; h[compute:children]
( f3 F* C+ ^% U- L Vcontrol6 l! |# }; X$ E! w
8 n9 u3 j6 ^5 }
[monitoring:children]
7 ^' q/ K5 v* m1 S' Y1 ucontrol% H* q9 L+ l D* }- W- R: {6 ?! A: Y
# [monitoring]
+ S- W: u" ^+ ]) G9 s4 r, V8 E# control01 ansible_user=root ansible_password=1 ansible_become=true
) s; U8 U+ q* ~* Q, L# monitoring01. ]0 Q l& L( G0 [
! H: \) e. r8 H9 s& T# When compute nodes and control nodes use different interfaces,) J' U7 Y0 o" r9 |) J2 {* w+ E* L$ e
# you need to comment out "api_interface" and other interfaces from the globals.yml1 H" F8 k) Z$ X4 O. ~6 N/ s
# and specify like below:
$ H# h$ Y. z5 w/ v9 H#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em11 J% o! S! M+ p, H7 D- T) R5 a, t
+ m7 C; W0 d3 D6 ^+ l3 @# [storage]
4 N# g) f$ J6 b( X# storage01
6 c9 E `' B. v" n[storage:children]4 B" W" w, P8 E) ?7 M3 E2 u
control& U7 l9 N7 q0 s6 g
/ R; V' L# r4 y[deployment]
0 r0 ] o. H$ N" \- ?9 r/ a- ?# Jdeploy ansible_connection=local
8 q4 s& ^' e5 |, V# `* W& O
# s$ M3 }- q# t# d* u. z/ D# 下接[baremetal:children]! G: w% L5 L! i
5.2 修改hosts
/ Z. s/ b, S5 f) f4 d9 C如果使用 all-in-one 清单,这一步也可以跳过: j1 A( a7 P4 q, X7 z* _( r
# U; {( b/ }% K) c* [ ?
编辑/etc/hosts文件,注意替换成自己的机器的内网ip
7 ?. w4 I. J0 P- K9 l, F+ V- T
8 c3 B, h7 [6 `' ?3 I+ g只需要修改部署机。后续使用bootstrap-server命令之后会同步到所有节点7 i/ y) [, J \& c6 J' T e) r
* J3 K4 }) o( Y# n" [# 这里是deploy机器上的文件9 r% ^% ^% y; ?+ |6 W
127.0.0.1 localhost! a8 k# k2 R8 h0 n2 ]
10.10.1.80 deploy; A( m# e) s3 @2 g& \
10.10.1.81 control01) f2 u, i s" ?
10.10.1.82 control028 L4 |1 `3 ?8 [3 c# E |
10.10.1.83 control03
& k6 w3 _* u7 @4 D5 X( } n" G" ~5.3 安装 sshpass# U1 L* R0 y% {' R1 L
apt install sshpass -y3 S0 L/ G2 e2 l7 B1 \% _" p
5.4 配置ssh密钥对
! x- w& Q' S* a1 U/ O* lssh-keygen
+ w! F0 Z/ K: ]一路回车0 d3 {) T; A# E4 v/ S
6 ^' w5 w8 Z2 t0 J% \" t& lssh-copy-id 10.10.1.813 a) g' H' F# w% a8 s
# 注意替换自己的内网ip9 W+ P! K ~1 L* [$ N" }
输入yes同意指纹,然后输入密码。就可以了/ j$ {, S. ?2 Z0 }' J
7 g$ Q/ L& A- l6 x! B# 看下如下提示就是成功了3 L8 Q Z5 w3 d. ~& I) a+ Z; T3 a
root@10.10.1.81's password:
' k# ^/ r% D5 a0 X4 V8 U- E; z! N2 ` |9 c6 y G1 Z8 v
Number of key(s) added: 11 X; M6 L3 C8 ~$ c0 q0 W0 N
1 `/ g; Q9 B% E. z0 U" b
Now try logging into the machine, with: "ssh '10.10.1.81'"
' H ^$ {3 H: M- U$ {and check to make sure that only the key(s) you wanted were added.* S9 K4 N% H* m
* U8 A8 X0 s9 s. m5 f9 r; B5.5 检查清单配置是否正确
' w5 x1 I5 Q8 ]ansible -i multinode all -m ping' @; }+ n& G# Q/ L' w0 w# M( ?
返回下面结果就是成功
, p6 H3 _ [# X, V9 X1 t- L/ a, J8 }: `% r. ^
(venv) root@ubuntu:~# ansible -i multinode all -m ping! C8 P! ^: x# K: q4 ^
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
+ u5 R4 e. P1 H7 ^1 {localhost | SUCCESS => {
: f3 o m! ]6 b5 z! u: M "ansible_facts": {
5 d6 m0 ~7 }) ^$ ` "discovered_interpreter_python": "/usr/bin/python3"0 P; f9 |8 R# V0 ]4 \; [
},
/ b6 z. `1 S; X: k) g "changed": false,1 n4 R' p% y4 [ W9 {+ D$ L, @
"ping": "pong"
+ O1 E2 y/ ~/ Q; _$ _9 |}
. Y, G8 }9 z3 A, F5 t% `control01 | SUCCESS => {
$ e: D3 j/ {& s8 q* t/ p "ansible_facts": {/ \) [# W3 R. K3 @2 t
"discovered_interpreter_python": "/usr/bin/python3": T- T* h1 E: d" t+ J
},: y1 q2 y$ h- Q! I( Y
"changed": false,! ?- t: N7 N7 k3 t1 H4 ~
"ping": "pong"
$ J7 G0 D% H% \2 Q8 v d2 B}
" s1 W5 m6 D0 Y) T" k6. 生成密码
+ q$ _5 S8 }. ~4 w1 C& j# G5 okolla-genpwd! w0 d' w$ d6 `" l! X( h
7. 配置globals.yml6 D8 F/ Q" X# |% b2 w$ R4 Z/ Y) U! X
先安装一下vim: J" R# T# N. Q0 M, [
; q4 y. z6 _. Z% fapt install vim -y
( Q1 W8 m$ u& R编辑! M8 m; m' l* o% L, {6 _" _
& C1 P8 v" P" X- K2 m+ q5 zvim /etc/kolla/globals.yml
9 b' I% q0 s1 q 先不要进入编辑模式,输入下面,显示行号
X1 r! _/ k! V# z- y6 a1 D* |
- o5 y6 g8 |6 e) P:set number
, Y9 ^+ \$ L" m6 B. ]) f% M# ?7.1 修改基础镜像发行版
9 F0 n3 J3 a" {默认是centos,要修改为debian。默认的centos有一些镜像不存在
/ r2 B6 K/ d: a% y, s; N
! s0 [0 a" q& x; ksed -i.bak 's/#kolla_base_distro: "centos"/kolla_base_distro: "debian"/' /etc/kolla/globals.yml! ]* [6 p/ [7 ]+ O* }/ F
7.2 编辑网络接口7 o1 C# S% c" m1 g) B: }
这里,vim的基本使用不在赘述: h b6 W* ^( R8 A% f
{7 o) P+ u: n2 B2 V& D搜索第一个网口接口,并修改为对应配置(可以通过 ip a 查看接口名字)9 H9 e- P6 Z5 C) ~0 g4 H. T! [
4 X4 Q& A4 C$ k0 C 设置的第一个接口是“ Network_interface”。这是多个管理类型网络的默认接口。3 B ]5 w L& S$ G' q( m# r& s
* S- D* }: ?: B: k8 z8 hnetwork_interface: "eth0"+ _% j0 n( Z F. H D: Q
搜索并设置第二个接口; |. @! {; d4 Q4 O3 Y
9 K4 f$ g# L9 H所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,这取决于网络的创建方式。此接口应处于活动状态,没有IP地址。否则,实例将无法访问外部网络。
- U. n; M ?" P+ Q# x( V3 V: U3 q9 {* `. D' K$ j! K9 [6 j/ y/ y
这里说人话,就是第二个接口需要给他一个空闲的网口
- H/ K- u2 C" p$ F ]" m6 U
! ?0 M+ Z3 n$ d- V' @neutron_external_interface: "eth1"
/ F8 ]% G$ D9 l9 ]+ E6 J搜索并设置浮动ip
. q9 Q8 W+ T' l2 Y ?9 g6 a1 Z6 t) M. A
接下来,我们需要为管理流量提供浮动IP。该IP将由keepalive管理,以提供高可用性,并且应设置为在连接到我们网络接口的管理网络中不使用的地址。
& b4 D, Z( v# F& x4 j! t9 m6 l" e3 L! p
这里说人话就是,浮动ip不要和network_interface中的地址冲突(一般是DHCP),比如说network_interface所在DHCP范围是10.1.1.100-10.1.1.200。那么浮动ip就不建议在这个范围内,而应该选择如10.1.1.201) c: W! ^" _8 N- B3 S6 `
3 a9 L# V) H) }4 F! g
kolla_internal_vip_address: "10.1.0.250"0 k4 C N3 a, t( E# u) _! W. A
编辑完成,按下Esc,再输入
0 V G' ?+ k. Q, Z& z+ M/ Y( M$ ?9 v8 Y+ e1 Q1 F; r( L; u
:wq
; G9 ~+ D9 g* v) T0 q* N保存退出
- Q2 d) j' E8 f% y) f4 z# y0 F2 h% j3 e" f
8. 部署
4 j+ g' M5 }: A( K& l! l0 f/ @8.1 docker quay.io换源* Z) I# v' K& @( N6 ?
sed -i.bak 's/#docker_registry:/docker_registry: quay.nju.edu.cn/g' /etc/kolla/globals.yml% y; g. N6 N. m7 m
8.2 引导服务器- z' R2 h1 u; n% }
kolla-ansible -i ./multinode bootstrap-servers' K7 E. K' O: p% B- B6 g$ M T9 K2 y7 n
完成后检查docker版本,确定在20.10.xx。不然后面所有使用kolla-ansible的改动都会报错KernelMemory0 @* Y. m' c+ i
5 H5 w# O7 S: X6 B; K
确保Server: Docker Engine版本在20.10.xx就行( f* h& a* \( v+ k
$ w2 I! G+ f3 L/ s7 K5 q* S0 i(venv) root@ubuntu:~# docker version
l' H# H9 |3 _7 [+ t9 bClient: Docker Engine - Community5 }$ v" D L% s
Version: 23.0.0
2 K5 A5 t- {! W9 G4 P- A" Q: H API version: 1.41 (downgraded from 1.42)
5 U' \1 ^; x$ S7 z. g Go version: go1.19.5
3 m6 t9 u& G* a0 T% B: e7 n Git commit: e92dd87! H6 z& a9 h4 d% t
Built: Wed Feb 1 17:47:51 2023' N6 ?4 x( M. ^6 i
OS/Arch: linux/amd64
0 V+ L* S# L3 L# i Context: default! k- \5 ~$ `$ l$ ~3 ^: ^/ g$ i
" u) w% ?. r' Z$ IServer: Docker Engine - Community
5 ^( I" _, W/ ] Engine:/ _, Y2 G7 R( ?8 v2 c& N6 T
Version: 20.10.23
+ n7 H: D2 ~, Q$ {/ K9 I& z API version: 1.41 (minimum version 1.12)8 k' X' Y; D# N. Y3 p' t6 E5 Y
Go version: go1.18.10
" s8 O S% A" M Git commit: 6051f14
2 C8 A" \! g( p2 q+ o Built: Thu Jan 19 17:42:57 2023
! s0 g( F R# A9 [) O OS/Arch: linux/amd64
& K* S; _* i( ]) m2 A Experimental: false5 l1 P$ \: \; y) C
containerd:
! g, A! J, y- T. F: g Version: 1.6.16
4 i( n( q W" [' t GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec6 u# h9 M2 M$ R$ i
runc:! O& @( U7 }% p
Version: 1.1.44 j: {# A! @+ [
GitCommit: v1.1.4-0-g5fd4c4d
& Y& a9 p/ B+ I; N/ F } docker-init:- F' c9 T2 w1 B4 A2 j! ^4 P
Version: 0.19.0! T+ F( k+ T2 h7 k& Z8 X4 n0 c
GitCommit: de40ad0
- e7 R; `, y3 T9 o6 h" P+ N. @$ B8.3 对主机进行部署前检查3 M! h' w$ }: w( `7 v+ R
kolla-ansible -i ./multinode prechecks -vvv X$ f- A+ Y3 S
8.4 最后进行实际的 OpenStack 部署' H' ~/ B8 d. E9 G
kolla-ansible -i ./multinode deploy -vvv
5 C4 z5 z: a% D v# V! t2 N& U当本脚本完成时,OpenStack 应该启动、运行并正常运行!
4 @% F( n& @- K9 ?' N* |1 K& b# u) c9 c; `* c1 E! O
PLAY RECAP ******************************************************************************************************************************************************************7 y0 C7 Z1 R7 D' g: \1 W& z
control01 : ok=308 changed=218 unreachable=0 failed=0 skipped=169 rescued=0 ignored=1 5 H3 s- N) ~0 \7 x6 k3 g6 [6 `" @* F( u4 I
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ; t; Q# Q8 X! h3 g
* z. O/ b+ T5 l9 T% k- r' d. x访问浮动ip地址就是前台页面,如果显示证书错误,那意思就是密码错误
4 O& i* x. p; O2 H& X; U7 s" o5 n
' l' b" g; K1 r7 e: a5 a8 s- T" B, o
u5 t8 W; G2 i$ e* m. f( j
账号为admin
4 f; C+ K6 U; C t3 ]( h1 ?; @( P* Z8 o9 f7 G, D) ?
查看密码:: ?( }- w3 O, \: r
& j& U) q: ]$ ?
也可以在post-deploy命令执行之后,去这个文件里面看/etc/kolla/admin-openrc.sh
7 d3 W) H s! ~. @8 \0 G B! E/ T4 r) P/ ^+ w7 }6 U: [
cat /etc/kolla/passwords.yml |grep keystone_admin_password8 U* z8 T0 n8 O" u+ o) O
2 G% W' Y1 V! S
; c2 s2 o$ K: ~. Y G) [( i9. 使用 OpenStack
) e# A. L' T7 Y9 |; w ^5 k. t8 a4 v0 ]9.1 安装 OpenStack CLI 客户端: e( {- Z% I8 S8 K. L& V
官方命令(网络能通的可以试试)2 T' {, J& s9 i# B2 W
4 e( @ b, q1 h: m( L8 Y' n3 T
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga
: N/ I) W/ O5 u0 s6 V9 l# x3 K" o如果文件获取不了建议,打开这个链接,之后会跳转到1 t0 X0 B! q' M: H
https://opendev.org/openstack/re ... per-constraints.txt: o1 y/ B9 J. X( }8 a+ I0 I0 r
再去github的OpenStack镜像,即 github.com/openstack/requirements/ i, @6 g$ R' S
然后克隆这个仓库到jihulab.com c$ y9 L1 _( H
% M7 c( e5 z. e: k7 l2 p% n记得选择对应的分支% T1 j. V3 P& K+ f
1 ?5 g+ G0 s0 O* m
7 n8 P: G. M4 n' h4 m& H& W3 V+ T6 U2 I' S4 C4 W9 N" [$ U6 Z
,接着找到对应的文件
$ k: H3 {$ e, Z+ J2 Q0 d4 o8 i: R$ y6 ?% e3 ~
: {* e# |3 b% U8 I8 X! c, r
$ q# \/ ~1 ~! u( S0 j0 v打开原始文件,得到下面链接( l% j- I' b& F4 _& e
8 x. D/ [# S* P
https://jihulab.com/james-curtis ... per-constraints.txt6 w" `4 v! [/ H) n6 H" E
替换官方命令,并执行
1 U$ Z3 b) @$ b/ N9 j9 E9 }! V% `8 \, k3 q: t
pip install python-openstackclient -c https://jihulab.com/james-curtis ... per-constraints.txt
1 {2 e. _: H4 j9.2 OpenStack 需要一个 openrc 文件
! }: ?: |& x. s" r' u6 |" o: q其中设置了管理员用户的凭据。要生成此文件6 W! f9 b' E9 ?- |, Y! k
0 Q4 S. R' i6 p( I2 p) Q
kolla-ansible post-deploy2 c8 ~ G" _' ~: l% C) R
. /etc/kolla/admin-openrc.sh% v5 U+ C3 }7 a* \* j
.(点)+(空格)+可执行文件 == source+(空格)+可执行文件; |' J( ]2 e/ T& t/ |
6 S5 X: }4 i6 @' Y8 Y0 A; D* A
接下来就可以使用OpenStack CLI了0 F" ]. i- G9 w' L$ m7 o
- H+ m; O: W/ X; I% S( g
至此OpenStack安装完成
5 e2 Y, x: C1 u% L
& V# Y' I( b8 H! X; r9 a3 @! C后续:: t) q) {1 o, z9 U; `6 Q+ |
2 l2 C: ^. O; O q& ]. vOpenStack使用Skyline Dashboard面板替换默认Horizon面板$ n% `: |3 F) `& e# v" K! b/ U9 g
OpenStack增加节点或者减少节点,横向拓展节点. E: b$ i6 z3 L, L l
ProxmoxVE+Ceph+OpenStack HCI超融合平台搭建,配置Bcache加速Ceph SDS. o' ?! U- k: u/ C
) V% F: N* S- u+ Q5 w2 k7 n* e
" H6 a$ u) u) ]3 U4 P |
|