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

openstack ussuri 安装脚本

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-3-17 20:59:06 | 显示全部楼层 |阅读模式
#!/bin/bash
+ U% K# y( G  p) S
7 W1 i% V* b" S5 r% I+ R
#Centos8最小化部署安装OpenStack Ussuri
0 P" u% I2 b+ e7 |
#共两台主机,分别是一台控制节点,一台计算节点
, Q& K0 n$ D: m. I
#1、控制节点内存4096M。双网卡,分别为eth0:10.0.0.11,eth1:10.0.0.12

( |2 g: n5 q! x. V# @7 m
#2、计算节点内存4096M。双网卡,分别为eth0:10.0.0.31,eth1:10.0.0.32

& @! ^8 F  H/ H# u# d2 k! `# F3 l0 T6 c# M
#设置阿里云yum源
1 k& g9 ]4 W4 l( Z3 L% s) N
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

! P+ h$ d7 A5 W0 @
rm -f /etc/yum.repos.d/CentOS-AppStream.repo /etc/yum.repos.d/CentOS-PowerTools.repo /etc/yum.repos.d/CentOS-centosplus.repo /etc/yum.repos.d/CentOS-Extras.repo && rm -rf /var/cache/yum && yum makecache && yum -y update && yum -y autoremove

& y: p4 g8 z- e/ O9 `! j
. D6 r& S0 S" B" G9 v
#关闭防火墙
; Y  I" F: C& T% ^
systemctl stop firewalld && systemctl disable firewalld

' R; i7 x) m9 G; ]/ z& x/ K6 |' [
" B6 Z( |# i0 l* L: `5 ^) M& K1 {
#关闭SELinux
1 H% M& m/ l5 k9 d. D  t$ B0 \
setenforce 0

3 |" e0 a9 ^$ t1 M" b+ \
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
8 V- t: M: e5 J' \- g. c
$ s$ \  L, n" ~) k# S2 e8 G
#关闭swap分区

  U9 {$ e- o$ e. M
swapoff -a

; k8 J" A) L; A- B3 [6 b" B7 R5 e- X7 f
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  f$ B# l3 e  N- e% {' v
9 ^/ X/ r- H: V0 }: I& E
#设置内核
5 Y1 [$ y* n) b9 x+ k% K
modprobe bridge
/ D9 `: V& ?8 c6 u% z3 ^7 c
modprobe br_netfilter
' j5 A" ~8 R* S* T/ }
cat > /etc/sysconfig/modules/neutron.modules <<EOF
4 J( x# j9 @$ y5 x2 K3 a
#!/bin/bash
4 }) d$ t5 f# A8 z6 X# |
modprobe -- bridge

- m) l# k: i7 w' B$ d" K% P
modprobe -- br_netfilter

; @) k& T, T, @. j
EOF
8 A" }; L5 k, \. ^# N
chmod 755 /etc/sysconfig/modules/neutron.modules && bash /etc/sysconfig/modules/neutron.modules
- I) |  v" T# ~8 C2 _
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

6 Y  }# D2 A( t4 z2 t' _
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
$ I, w( i2 }5 U) v2 N
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
: P* N9 O+ L0 D& F
echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
0 _1 a6 ]+ l/ N1 M" P# K
sysctl -p
1 b4 o+ l' \, r" a9 h% p

  [! e- K* x6 v' l0 T. \0 ~6 x
#设置时间同步
$ L& G! Y, w' o# [
yum install -y chrony && yum -y autoremove
' O) k5 F0 M& D! n, O5 z% i
sed -i '/^pool/d' /etc/chrony.conf
& W3 U  ]7 D5 t5 V
sed -i '/^server/d' /etc/chrony.conf

  m6 q4 ~5 k* B+ L, L% V& g$ O4 N
echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf

/ |" ^9 L' p8 X2 M; F4 Y
systemctl start chronyd.service && systemctl enable chronyd.service
  ^4 q  ~7 N) c

$ `5 f+ e2 \1 |+ r9 j$ P
#控制节点 设置hostname
8 q- g( L9 e" n; Q& {; z; d
hostnamectl set-hostname controller

: H# q" {: N, `$ m+ t# ~/ d
' f3 Q! L' b( ^  r- s* P
#计算节点 设置hostname

! o% e5 l* c- m3 _
hostnamectl set-hostname compute1
6 u" C2 O9 J6 e$ G. h) A

7 _% m! p" ]- T# H& h1 m6 m) B
#添加host
" }% D0 g! I4 D' [  }
echo "10.0.0.11 controller" >> /etc/hosts

2 o' g2 A) _3 g5 C! C' |( R
echo "10.0.0.31 compute1" >> /etc/hosts

% B. T/ ^. `5 N0 ^, i  }
: X3 S! K2 {# L1 M3 f/ _( H
#安装基础组件
% J: J9 V' _3 ]6 K1 V3 R3 `0 p( U
yum install -y centos-release-openstack-ussuri

$ a4 ^" S& W! C9 X! {4 z% P
yum config-manager --set-enabled PowerTools

% d6 R* V1 b% o
yum upgrade -y

1 g7 [6 K7 ?/ v$ i1 U* N
yum install -y python3-openstackclient

( G% x/ ~, Y. i6 J) ^8 m& f6 C9 s" V3 `7 V5 U3 y( z! E
#控制节点 安装Mariadb

9 o- W' F# a) m2 F+ p
yum install -y mariadb mariadb-server python2-PyMySQL
; p, G, [! k* x" `5 q' j
tee /etc/my.cnf.d/openstack.cnf <<-'EOF'

: }: W6 b" f* Y; |
[mysqld]
$ R- C) @* m# l- f( ]3 Q6 S
bind-address = 10.0.0.11
. O, q! V3 T4 u8 F" O
default-storage-engine = innodb
% x6 g$ ^' ?$ C- L+ U- \% c
innodb_file_per_table = on
: d0 i0 `/ s) ]: ~+ x4 |
max_connections = 4096

9 k  J& o8 n4 k3 h4 C' b+ b7 x
collation-server = utf8_general_ci

( J; t/ O4 h* p- @& n7 N
character-set-server = utf8

) d: E; {9 l# r! _* P$ b3 D; ^& I
EOF
% \# T- B8 B- @9 B
systemctl enable mariadb.service && systemctl start mariadb.service

. T  G& }7 \0 O: C, a! d
echo -e "\nY\n123456\n123456\nY\nn\nY\nY\n" | mysql_secure_installation

0 S) d& @3 n2 t! f1 O. @* |$ i5 m8 |( \0 p* \
#控制节点 安装RabbitMQ
& e2 N$ O( j  q! {% j' v
yum install -y rabbitmq-server
! s" r! [" }' a& g' x
systemctl enable rabbitmq-server.service && systemctl start rabbitmq-server.service

% a& d& @; y# P; Q7 r
rabbitmqctl add_user openstack 123456

) B% D4 g# a6 r" L2 q
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

/ T3 ^: l) J$ D6 V
6 W6 G/ H4 h# O- |8 J
#控制节点 安装Memcached

7 b1 S- x$ ]4 Q7 L3 O6 Y. T
yum install -y memcached python3-memcached

2 ^/ [) N1 S0 o
sed -i "s/-l 127.0.0.1,::1/-l 127.0.0.1,::1,controller/g" /etc/sysconfig/memcached

7 f( T0 n8 |/ O' D, L3 h  ?  K
systemctl enable memcached.service && systemctl start memcached.service
5 B3 f1 s- u2 b* R7 B

. O+ S8 ^; t- u. i* g8 V
#控制节点 安装Etcd
) ]# c. c( {2 y) G' L
yum install -y etcd

) y! E9 q% k8 o
rm -f /etc/etcd/etcd.conf
/ n0 w3 u9 r" W1 M$ P7 o! F
tee /etc/etcd/etcd.conf <<-'EOF'

8 E: P" Q" T$ K) w% q: T
#[Member]
5 E7 h9 `7 J' `4 D! J" L
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

+ g) S8 K& f! _; e; y9 q1 \
ETCD_LISTEN_PEER_URLS="
http://10.0.0.11:2380
"
1 Y0 r4 ^$ }) N1 W# x
ETCD_LISTEN_CLIENT_URLS="
http://10.0.0.11:2379
"

+ I9 M% t8 j' [" i6 v% k% E# Y
ETCD_NAME="controller"

1 B7 M1 b! e* w) N6 t8 V1 p0 X
#[Clustering]

* o5 U) Q0 L) ^5 m, j# Y- l2 V6 E% a
ETCD_INITIAL_ADVERTISE_PEER_URLS="
http://10.0.0.11:2380
"
* B0 U. j( Q( a9 s) i+ y0 w
ETCD_ADVERTISE_CLIENT_URLS="
http://10.0.0.11:2379
"
9 v& }, k0 D, k9 A# F
ETCD_INITIAL_CLUSTER="controller=
http://10.0.0.11:2380
"
! m2 c+ q5 Q4 t7 s  g2 @7 j
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"

  @( o; [6 f- K+ F2 s1 e
ETCD_INITIAL_CLUSTER_STATE="new"

, l# }6 f3 o. g/ C
EOF

  R. L4 ?6 W; h4 V0 p, Q, l
systemctl enable etcd && systemctl start etcd
; Y. r  [' ?" p  _

! Q+ c! J/ `* G0 ^& ?; u$ G
#控制节点 安装Identity service

+ W; W6 l" [0 z" G) D, a
mysql -uroot -p123456 -e "CREATE DATABASE keystone"
0 A$ [3 K7 z3 h# L" S
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456'"

) J4 o* a; g) m! k' b3 t0 ?5 ~3 X' a
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456'"
% }8 G, y, i0 p4 C4 U; E9 ~" d
yum install -y openstack-keystone httpd python3-mod_wsgi

! \" D# {' s0 P# F. r3 I2 @
sed -i "556c connection = mysql+
pymysql://keystone:123456@controller/keystone
" /etc/keystone/keystone.conf

$ ]; R- x* x+ L
sed -i "2418c provider = fernet" /etc/keystone/keystone.conf

- H1 q- g) v# Z7 u" N
su -s /bin/sh -c "keystone-manage db_sync" keystone
  o: S$ h# i3 C) u# a% X7 z
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
1 ^2 i4 K6 K; F% z' ~- w/ N- C
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
" V* F9 U0 Y; Z9 P$ Q# Y9 M
keystone-manage bootstrap --bootstrap-password 123456 \
3 o; f2 s7 ?4 L9 O0 v$ y2 X: e1 j
--bootstrap-admin-url http://controller:5000/v3/ \
( R4 _# P4 C4 g7 m) a5 i
--bootstrap-internal-url http://controller:5000/v3/ \
4 ~! H, \2 c& W
--bootstrap-public-url http://controller:5000/v3/ \
# O7 S4 k$ P1 q; |! H
--bootstrap-region-id RegionOne

4 e- l" Y+ B# p8 l
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

# w/ l3 s* h$ G$ a2 w
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
) j7 M7 V  m; E2 ?4 e6 h8 t' c/ o
systemctl enable httpd.service && systemctl start httpd.service
( D  v7 Z2 d) y- e8 G+ ]4 Z7 z
echo "export OS_USERNAME=admin" >> /etc/profile

# F+ P) s# p8 Y* z9 }5 z5 T- u
echo "export OS_PASSWORD=123456" >> /etc/profile
2 d# V7 `" T6 w7 d, w( d1 I
echo "export OS_PROJECT_NAME=admin" >> /etc/profile

* Y8 r$ O5 w! S0 Q2 u6 v- n' s
echo "export OS_USER_DOMAIN_NAME=Default" >> /etc/profile

* [' w* Z  i+ K( H. {: V+ L1 y" P# M
echo "export OS_PROJECT_DOMAIN_NAME=Default" >> /etc/profile

, U) z0 t2 b: c  A: A; q
echo "export OS_AUTH_URL=
http://controller:5000/v3
" >> /etc/profile
% x; y6 @2 Y3 j
echo "export OS_IDENTITY_API_VERSION=3" >> /etc/profile

) H  C7 t  G5 E- l
source /etc/profile

9 t: d8 d$ [: a8 d
openstack project create --domain default --description "Service Project" service

) d" V0 @* F0 C7 l' b' g& w, ?" W% n% ?
#控制节点 安装Image service

3 p7 r5 n# F2 i
mysql -uroot -p123456 -e "CREATE DATABASE glance"

; l$ m4 r- v- M5 V# v
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456'"
1 o) @3 T3 @  i1 J9 B1 ?$ I( Q
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456'"
- x* ?( }3 x+ W/ Z6 D8 ]1 C
openstack user create --domain default --password 123456 glance

; y: e5 ?- t# C$ g- c
openstack role add --project service --user glance admin
/ c& v) Z& I! o- j5 U& q
openstack service create --name glance --description "OpenStack Image" image

; q: h+ `) K6 E6 q0 u1 Q/ ?
openstack endpoint create --region RegionOne image public http://controller:9292
( X" B4 g- O' o3 g# o
openstack endpoint create --region RegionOne image internal http://controller:9292

; ?5 u# @) O7 q; `! O
openstack endpoint create --region RegionOne image admin http://controller:9292

5 |) O: ^7 R2 p& e! @( H; \3 R/ K0 n
yum install -y openstack-glance

2 v! B& s: @" Y% O2 q. D
sed -i "2062c connection = mysql+
pymysql://glance:123456@controller/glance
" /etc/glance/glance-api.conf

4 ?" t# B0 U7 I1 j
sed -i "5034c www_authenticate_uri =
http://controller:5000
" /etc/glance/glance-api.conf
) c& g7 l) ]0 R& s6 a5 O) r
sed -i "5035c auth_url =
http://controller:5000
" /etc/glance/glance-api.conf
3 |4 I* w. x8 \% F. Z% R; R8 d
sed -i "5036c memcached_servers = controller:11211" /etc/glance/glance-api.conf

: u$ ]1 k% ~* W5 P- {) l- V
sed -i "5037c auth_type = password" /etc/glance/glance-api.conf

4 }1 A- n# z; L
sed -i "5038c project_domain_name = Default" /etc/glance/glance-api.conf
+ D, ^7 p7 I; l2 R- M
sed -i "5039c user_domain_name = Default" /etc/glance/glance-api.conf

5 `9 f" o+ g  `
sed -i "5040c project_name = service" /etc/glance/glance-api.conf
5 a8 f) O2 V0 |+ E: T* X7 t
sed -i "5041c username = glance" /etc/glance/glance-api.conf

6 T9 n( h3 D) Q2 L" @# I% T/ B
sed -i "5042c password = 123456" /etc/glance/glance-api.conf

1 h! v! y# F) t' \% q$ D
sed -i "5678c flavor = keystone" /etc/glance/glance-api.conf

6 B" x7 j# |  V: E" W
sed -i "3413c stores = file,http" /etc/glance/glance-api.conf
3 E8 a; z/ V: K6 C. }/ k* g
sed -i "3414c default_store = file" /etc/glance/glance-api.conf
8 L7 \1 ~, \' p5 U" A0 B
sed -i "3415c filesystem_store_datadir = /var/lib/glance/images/" /etc/glance/glance-api.conf
! {' q8 y# I/ u, d8 k
su -s /bin/sh -c "glance-manage db_sync" glance
: \# T5 `7 H! z
systemctl enable openstack-glance-api.service && systemctl start openstack-glance-api.service
8 i4 F" d7 ]% o6 ?, G
2 r& F& m3 s, l8 E3 B: a5 z
#控制节点 安装Placement service

: n( b6 u: F: y# ~- B9 t0 o
mysql -uroot -p123456 -e "CREATE DATABASE placement"

8 B+ A6 f" W& ~. M5 J; `6 L
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456'"

" p8 J" X! M% [) L: K$ x7 [- @
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456'"
0 q9 a- E, Y0 |, ]' G1 i, o. U
openstack user create --domain default --password 123456 placement

" j0 I* E1 T, v2 V  A" @
openstack role add --project service --user placement admin
# b8 I3 D$ K3 ]5 e
openstack service create --name placement --description "Placement API" placement

- O" l& D: X9 w& d
openstack endpoint create --region RegionOne placement public http://controller:8778

2 h$ Z/ c' l# u, p
openstack endpoint create --region RegionOne placement internal http://controller:8778
- S. }7 ^0 @& |, k6 U/ X6 u
openstack endpoint create --region RegionOne placement admin http://controller:8778

# v0 V4 T: O6 c! `4 c3 d
yum install -y openstack-placement-api
0 \. B% e! e: y# q3 m( S1 F9 N- R# l
sed -i "507c connection = mysql+
pymysql://placement:123456@controller/placement
" /etc/placement/placement.conf
$ S6 U! I; ~' K% ?3 Z5 Q
sed -i "192c auth_strategy = keystone" /etc/placement/placement.conf

3 h& C/ Q" V# `  v! ^4 ?7 i: p
sed -i "241c auth_url =
http://controller:5000/v3
" /etc/placement/placement.conf

: A, F3 Y! W) j+ W5 p0 r
sed -i "242c memcached_servers = controller:11211" /etc/placement/placement.conf

1 T2 |8 a$ A9 E3 |
sed -i "243c auth_type = password" /etc/placement/placement.conf
  N$ q$ Q4 C2 u
sed -i "244c project_domain_name = Default" /etc/placement/placement.conf

/ y! l- J8 A# c; ^
sed -i "245c user_domain_name = Default" /etc/placement/placement.conf

- y4 i$ Y0 P7 [6 m/ L
sed -i "246c project_name = service" /etc/placement/placement.conf
4 q% O  @, z: m9 {& m( o
sed -i "247c username = placement" /etc/placement/placement.conf
# e$ D" P0 S$ i9 T# A
sed -i "248c password = 123456" /etc/placement/placement.conf
  @8 p0 x& X5 X% W, M6 x
su -s /bin/sh -c "placement-manage db sync" placement
* F) A3 |/ Q  x& V/ t) {, F, }; P
systemctl restart httpd
8 N* N* Y( K( v% J. f3 p* C0 R' ]

+ h8 Y/ c! {' J0 ^$ M# o2 i! E
#控制节点 安装Compute service

# L$ b3 |7 A$ {( M" [: Y5 a
mysql -uroot -p123456 -e "CREATE DATABASE nova_api"

( D+ B& @. r) G) v  r1 u
mysql -uroot -p123456 -e "CREATE DATABASE nova"
. A6 i8 W. n. F: _% s" `) V4 ~
mysql -uroot -p123456 -e "CREATE DATABASE nova_cell0"

! m1 Q; f. n* B9 b0 n
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
4 F9 c' i; K5 [5 w) q& R
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456'"

' r) {& W; t" m$ s
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
2 x" ?& M- o' K& U3 L
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456'"
: S' ^' d# @2 `" m. X6 p6 T
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456'"
) h3 s& e4 Q! J  D8 s
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456'"

/ R) |( Z9 l; U7 O* I1 @9 b
openstack user create --domain default --password 123456 nova

1 H1 Y0 a8 S' q) @; N5 d
openstack role add --project service --user nova admin
  G* S8 {1 v1 `" y* p4 n
openstack service create --name nova --description "OpenStack Compute" compute

9 P$ g* O+ g6 a
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
8 P9 I) E. ~0 G
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

) Y0 J- u, E9 f' O* `1 f5 t8 c+ K5 k
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
/ h9 D8 P5 d/ b# T6 y" p! T
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
3 |5 Y1 Q9 z& F4 ], S$ W/ ~' N
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
) G4 v6 x, H# G2 @3 }( s7 Z
sed -i "3c transport_url =
rabbit://openstack:123456@controller:5672/
" /etc/nova/nova.conf

# H* [( L- j; r8 S: M
sed -i "4c my_ip = 10.0.0.11" /etc/nova/nova.conf
, P! U  d! t# t
sed -i "1079c connection = mysql+
pymysql://nova:123456@controller/nova_api
" /etc/nova/nova.conf

3 |# |8 z' o' @- K; B8 D
sed -i "1622c connection = mysql+
pymysql://nova:123456@controller/nova
" /etc/nova/nova.conf
' |( W9 V0 G1 [
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
/ ~4 D! l7 D* ]1 o: ?+ H# W5 b
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf

9 t- Q/ r5 P1 F0 L- B
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf

( C( A9 x9 }$ v
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

4 a: Z+ f/ S- P& l" ]4 e) l: O
sed -i "2564c auth_type = password" /etc/nova/nova.conf

, q1 L3 B  S: k% F+ N; [9 l
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf
& j9 F! y' Q0 F, ]# y1 g0 R0 I- B: F
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
/ ]5 Q" r# A- }! @4 ]& ]. s: R
sed -i "2567c project_name = service" /etc/nova/nova.conf
- d  m+ ]8 j; ?9 ]( g. g
sed -i "2568c username = nova" /etc/nova/nova.conf

, W+ x2 C2 L% N: v" p2 P
sed -i "2569c password = 123456" /etc/nova/nova.conf

0 y# Y2 a' m4 `6 z1 z5 u. y
sed -i "5171c enabled = true" /etc/nova/nova.conf

( s7 L! R. ~. f4 ~
sed -i '5172c server_listen = $my_ip' /etc/nova/nova.conf
. e- C4 p$ N% }" d0 n- p* j
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf
1 p  F$ T/ U; {4 R$ K
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf
- p; @+ e" o6 }
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf
* o6 d* H9 f+ `+ @) d6 P7 l! c0 Y* @
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf

, D- `2 o/ ]+ N
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf

( O7 i! e% g2 R# K4 X5 q( p
sed -i "4095c project_name = service" /etc/nova/nova.conf

+ O! w* |  `6 h# g9 h- ]& q
sed -i "4096c auth_type = password" /etc/nova/nova.conf
" l' }8 z! B# [, O
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
+ _  ]0 X5 o, ~+ U! p% I) {
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf
. |+ Q( {+ c6 f, U' I; C
sed -i "4099c username = placement" /etc/nova/nova.conf
, \7 u; ?! E8 z& p* ]- R: |( D
sed -i "4100c password = 123456" /etc/nova/nova.conf

0 n" a) S4 ]( ]; B3 \/ a3 L: u
sed -i "4509c discover_hosts_in_cells_interval = 300" /etc/nova/nova.conf

/ O% j6 t1 S$ j" F! t
su -s /bin/sh -c "nova-manage api_db sync" nova

' a, k7 e: [0 d# U- Z; L
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
/ n: Q4 t# S" o  m( i
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
9 W+ \" x6 k' j
su -s /bin/sh -c "nova-manage db sync" nova
" b; X  m+ g  W' a1 m
systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service && systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
" O1 @; Z- V% r5 X
# o* u5 k7 r2 ^* ]
#计算节点 安装Compute service
# [: ^* W0 g. D
yum install -y openstack-nova-compute

, {" V& {5 C8 U( {: o) E  E0 M
sed -i "2c enabled_apis = osapi_compute,metadata" /etc/nova/nova.conf
$ @2 S; A. ~% W  @
sed -i "3c transport_url =
rabbit://openstack:123456@controller
" /etc/nova/nova.conf

7 n- y* {/ A- }0 Y) e9 W
sed -i "4c my_ip = 10.0.0.31" /etc/nova/nova.conf

2 `+ P( @9 j: m6 Y( t# J0 `
sed -i "872c auth_strategy = keystone" /etc/nova/nova.conf
) ?! K/ s) X" M+ V$ S4 F/ L
sed -i "2561c www_authenticate_uri =
http://controller:5000/
" /etc/nova/nova.conf
& ]& S3 W/ `- t  ~7 ^) |: v% _
sed -i "2562c auth_url =
http://controller:5000/
" /etc/nova/nova.conf
3 `" r& G# T' O" V
sed -i "2563c memcached_servers = controller:11211" /etc/nova/nova.conf

6 C4 A3 W5 Z$ `# v  _1 V
sed -i "2564c auth_type = password" /etc/nova/nova.conf
) I8 n5 D, h; x1 E+ M
sed -i "2565c project_domain_name = Default" /etc/nova/nova.conf

: U1 @5 f5 @) y# \4 F
sed -i "2566c user_domain_name = Default" /etc/nova/nova.conf
, B6 `! p! w, d# I% p& j8 [
sed -i "2567c project_name = service" /etc/nova/nova.conf
! ?% K% A6 {1 |, L& d
sed -i "2568c username = nova" /etc/nova/nova.conf
! ~7 p4 u& `0 y! }5 M
sed -i "2569c password = 123456" /etc/nova/nova.conf
: p: c3 j, R1 p. f, |7 _
sed -i "5171c enabled = true" /etc/nova/nova.conf
1 I. v0 ?) u) i3 M% S
sed -i "5172c server_listen = 0.0.0.0" /etc/nova/nova.conf
8 a% a4 J  ?" b5 z: ~; u, x! w7 z
sed -i '5173c server_proxyclient_address = $my_ip' /etc/nova/nova.conf

" x4 ~# T  ?+ O+ z* k
sed -i "5174c novncproxy_base_url =
http://controller:6080/vnc_auto.html
" /etc/nova/nova.conf
; m, o+ x$ ^% N3 o% i. o$ |
sed -i "1937c api_servers =
http://controller:9292
" /etc/nova/nova.conf

' Z2 ~- D3 |1 n
sed -i "3571c lock_path = /var/lib/nova/tmp" /etc/nova/nova.conf
8 v8 r8 N6 |0 G" p" e6 u' o
sed -i "4093c region_name = RegionOne" /etc/nova/nova.conf

5 K* k/ i+ z9 ^0 k9 F& |( o8 V
sed -i "4094c project_domain_name = Default" /etc/nova/nova.conf
9 |8 m7 f( a# s1 d7 s7 u
sed -i "4095c project_name = service" /etc/nova/nova.conf

) }0 n* J4 a" [, j6 t) z8 T
sed -i "4096c auth_type = password" /etc/nova/nova.conf

4 l3 k" n3 a# X
sed -i "4097c user_domain_name = Default" /etc/nova/nova.conf
; g/ F: M4 |2 V7 D
sed -i "4098c auth_url =
http://controller:5000/v3
" /etc/nova/nova.conf

5 m! Q5 }! O9 N  B5 l9 i" E3 G3 j
sed -i "4099c username = placement" /etc/nova/nova.conf

8 {% s/ s5 U5 M- b
sed -i "4100c password = 123456" /etc/nova/nova.conf

" S) {! _3 h1 I6 i$ w& b  d1 j* {  h
& K5 _8 I% a; P0 h
#执行命令,查看是否支持CPU虚拟化,如果大于0则支持。
0 j- e$ ?7 t  Q) O  U2 _: n8 f. Z
egrep -c '(vmx|svm)' /proc/cpuinfo
& v2 t1 ^3 z/ L, L
#如果不支持的话还需要执行下面的命令
* o8 \) ^) A- U: v4 d$ e3 L
sed -i "2722c virt_type = qemu" /etc/nova/nova.conf

: @; q6 J: V* l( |: u
% W, C8 k* U; G
systemctl enable libvirtd.service openstack-nova-compute.service && systemctl start libvirtd.service openstack-nova-compute.service
2 K, H1 m4 q+ f$ k; B1 R  _
# G& X% L8 h" I( P
#控制节点 计算节点从注册到发现会有延迟,根据discover_hosts_in_cells_interval 配置轮询发现时间,可以执行下面命令手动发现计算节点

1 X$ a5 ?1 @5 F- r/ F
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

$ L) W' t3 @& ~3 _% c
; j  _9 A1 B+ }# ]
#控制节点 安装Networking service

3 d2 D1 w* Q3 v5 L3 e8 x+ A
mysql -uroot -p123456 -e "CREATE DATABASE neutron"

( M/ E# S4 |& |; Y* v" d1 w. c5 g
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'"

& F5 ^+ v0 h' S) W. |, T0 d
mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456'"

; C2 g4 P- F0 g! a5 X1 ~6 G
openstack user create --domain default --password 123456 neutron
& r# T8 N1 x5 T% `. z1 u
openstack role add --project service --user neutron admin

$ H( A8 h& S; V. k9 A
openstack service create --name neutron --description "OpenStack Networking" network
& o% Q, K  q! `3 b
openstack endpoint create --region RegionOne network public http://controller:9696
1 L' w+ I7 ^: ^
openstack endpoint create --region RegionOne network internal http://controller:9696
4 |5 \+ Z8 O& m  P/ M% j
openstack endpoint create --region RegionOne network admin http://controller:9696
* B# l* r  a8 E: ]/ _8 V" H8 ?
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
' U9 `' [, s3 _9 g7 j# [4 l
#配置服务器组件
- y: g; ~) O8 ^% N
sed -i "2c core_plugin = ml2" /etc/neutron/neutron.conf
% g4 i  X' {- M# w; v
sed -i "3c service_plugins = router" /etc/neutron/neutron.conf
4 ?' v$ Y) a. Q+ H9 n
sed -i "4c allow_overlapping_ips = true" /etc/neutron/neutron.conf

$ y' x6 [) P5 O# {
sed -i "5c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf

) w* u/ E! q, v$ t; A
sed -i "6c auth_strategy = keystone" /etc/neutron/neutron.conf
2 h7 V! t, ]% O' m
sed -i "7c notify_nova_on_port_status_changes = true" /etc/neutron/neutron.conf

0 C  b( f0 d: D: E, r
sed -i "8c notify_nova_on_port_data_changes = true" /etc/neutron/neutron.conf
0 v* v! L, J6 r7 g
sed -i "254c connection = mysql+
pymysql://neutron:123456@controller/neutron
" /etc/neutron/neutron.conf
- W# H" `# F% z5 ~1 ]5 G1 Q9 o4 g$ s
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf

5 x: i$ v+ a# c: @$ I, K! @
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf
6 ~) d4 n2 H; D8 i! `5 f# p+ B
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf
8 A$ q$ y1 g: N9 o
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
! p0 d! m* \) \9 ^3 j+ Y
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf

! a6 L7 X' y! T; ^
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf

  i2 M: E0 f5 Z, g" z8 |1 q; f" Q
sed -i "365c project_name = service" /etc/neutron/neutron.conf

  t% }, K: B' X8 X" u6 I8 t
sed -i "366c username = neutron" /etc/neutron/neutron.conf
4 Q4 E# c2 {% O1 }; z! _9 s
sed -i "367c password = 123456" /etc/neutron/neutron.conf

8 R  ^7 B% Y: ^: D9 C
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf
+ X" ~6 t8 [, b; N& c1 Z/ Z9 W' l
echo "[nova]" >> /etc/neutron/neutron.conf
! D1 H2 _5 a( c. B9 x/ q
echo "auth_url =
http://controller:5000
" >> /etc/neutron/neutron.conf

5 C3 \$ }) b  {$ z  h+ k" {2 r$ v
echo "auth_type = password" >> /etc/neutron/neutron.conf

" }6 C/ G9 d! W( o0 |4 B. V
echo "project_domain_name = default" >> /etc/neutron/neutron.conf

% N8 F! q$ ^& f" [% @7 ~
echo "user_domain_name = default" >> /etc/neutron/neutron.conf
/ `+ V6 K5 i3 q& r$ w7 X2 I
echo "region_name = RegionOne" >> /etc/neutron/neutron.conf

4 T& {: v- J( A8 R
echo "project_name = service" >> /etc/neutron/neutron.conf

- D4 E9 \0 \  S. r$ H3 @/ k! y
echo "username = nova" >> /etc/neutron/neutron.conf
7 _# B/ k) Y7 e& [, l
echo "password = 123456" >> /etc/neutron/neutron.conf
- l4 y4 W  l9 ]9 H# z8 l, ^
#配置Modular Layer 2 (ML2) plug-in

$ f5 M; @  Z% t
echo "[ml2]" >> /etc/neutron/plugins/ml2/ml2_conf.ini
7 \* c5 {) Y7 N- G) r
echo "type_drivers = flat,vlan,vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

3 ~, `( p  s1 Z: u( {
echo "tenant_network_types = vxlan" >> /etc/neutron/plugins/ml2/ml2_conf.ini

$ N+ s* H5 W4 q, O2 c5 n6 ]
echo "mechanism_drivers = linuxbridge,l2population" >> /etc/neutron/plugins/ml2/ml2_conf.ini

/ t1 ?2 A2 ]5 ?2 _" q6 _3 q% z
echo "extension_drivers = port_security" >> /etc/neutron/plugins/ml2/ml2_conf.ini

" v% y+ B) W! h, G. r
echo "[ml2_type_flat]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

  ^/ Q$ O8 |6 O. g# d7 w
echo "flat_networks = provider" >> /etc/neutron/plugins/ml2/ml2_conf.ini

. B; J. x! Z% ], @- n( {- k2 l
echo "vni_ranges = 1:1000" >> /etc/neutron/plugins/ml2/ml2_conf.ini

: }1 J( w4 E% O$ W3 \
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/ml2_conf.ini

% l5 H, h3 R8 ^3 U' i3 c& H8 h" l
echo "enable_ipset = true" >> /etc/neutron/plugins/ml2/ml2_conf.ini

, H* h2 X! D  @& [' Q1 D$ W
#配置Linux bridge agent

5 C1 C7 G. _! J# H6 h' y
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
6 t2 q3 d2 l* H2 A. A5 f  }) g
#eth1为另外第二张网卡
' }. r  j) H% A
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

2 b! C, }- I8 }
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

2 K5 Y2 U5 F/ J& M  |# i  t) \
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

. h0 m2 a+ j' S$ {$ n" l' f( Z6 E
#10.0.0.12为第二张网卡的IP

/ C6 @, y. N. B/ e( c- w( f$ P& A
echo "local_ip = 10.0.0.12" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

0 y+ I9 b+ e, R$ _6 e" a
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

) R! V+ W% o6 x, ^
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

2 T! O0 E1 F" L, M
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

+ G8 ^& o& _! W. Q
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

; P" Q3 o/ s6 z1 @' x( `- D% @
#配置layer-3 agent

$ g: Z+ }0 U- a$ N( f3 `
sed -i "2c interface_driver = linuxbridge" /etc/neutron/l3_agent.ini
+ Y+ F! }' {' o' r
#配置DHCP agent
& x$ b2 |& H1 R+ O
sed -i "2c interface_driver = linuxbridge" /etc/neutron/dhcp_agent.ini
/ V7 |, D- m0 |' n4 V6 @
sed -i "3c dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq" /etc/neutron/dhcp_agent.ini

/ x8 d- y7 o; _1 X3 q5 e
sed -i "4c enable_isolated_metadata = true" /etc/neutron/dhcp_agent.ini
" ~* y, P" \/ @% W9 U/ t- r
#配置metadata agent

, w1 ]! O+ J) {' [# p& L( C
sed -i "2c nova_metadata_host = controller" /etc/neutron/metadata_agent.ini

: H7 ?, ^0 Q! {
sed -i "3c metadata_proxy_shared_secret = 123456" /etc/neutron/metadata_agent.ini

$ m8 t) V. f- ], q2 m- C
#配置计算服务使用网络服务
- x2 l+ ~5 r* N8 _# P% K: y3 G- C
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf

9 s$ h1 G; \, s/ `
sed -i " 3335c auth_type = password" /etc/nova/nova.conf

3 w& J2 @7 N9 B$ m
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
' A3 U0 n. O  T; v, N( k. ]
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf
2 p0 `8 t8 C7 [/ V6 i5 S$ y
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

+ k! t; m- n- o7 q6 v
sed -i " 3339c project_name = service" /etc/nova/nova.conf

3 T! H2 w. c2 c' s( e. e
sed -i " 3340c username = neutron" /etc/nova/nova.conf
4 C$ h6 `$ L  i8 r+ p# W9 r
sed -i " 3341c password = 123456" /etc/nova/nova.conf

; ^6 c8 o% E- j* J7 x
sed -i " 3342c service_metadata_proxy = true" /etc/nova/nova.conf
1 c# f: ^# F5 j8 n. T
sed -i " 3343c metadata_proxy_shared_secret = 123456" /etc/nova/nova.conf
5 U5 p6 w9 |) t4 d* e( ?
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
4 {6 _1 _" f- I
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

' W' N) f" M& j; r+ |2 A, R
systemctl restart openstack-nova-api.service
3 c$ [% D5 j) _% f( ~% @
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service && systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
0 N/ C" {$ e3 G) Y7 Y5 b
systemctl enable neutron-l3-agent.service && systemctl start neutron-l3-agent.service

% L$ M5 ]0 O5 t7 w8 b' S# s# V* ~" d' {
#计算节点 安装Networking service

9 E3 R7 M. P: V) ]
yum install -y openstack-neutron-linuxbridge ebtables ipset
) C4 X  v; Z* Z
sed -i "2c transport_url =
rabbit://openstack:123456@controller
" /etc/neutron/neutron.conf

( O# f6 l) ]$ ~# [  u$ }' ]
sed -i "3c auth_strategy = keystone" /etc/neutron/neutron.conf

* a0 B7 T! x0 r4 z7 H  M3 T/ i. E, y. _
sed -i "359c www_authenticate_uri =
http://controller:5000
" /etc/neutron/neutron.conf
: x% _0 P0 W2 C1 y; ?4 ]
sed -i "360c auth_url =
http://controller:5000
" /etc/neutron/neutron.conf

2 P' e) v  E/ X, q2 N
sed -i "361c memcached_servers = controller:11211" /etc/neutron/neutron.conf

* f9 I; W& R$ l% N& P. b
sed -i "362c auth_type = password" /etc/neutron/neutron.conf
- c8 i* w- x1 x; m5 f9 o
sed -i "363c project_domain_name = default" /etc/neutron/neutron.conf
: k: K. C! R7 o( u
sed -i "364c user_domain_name = default" /etc/neutron/neutron.conf
1 I, r6 {5 q+ H
sed -i "365c project_name = service" /etc/neutron/neutron.conf

6 M4 \# T/ I7 p' `: r) b0 O/ W- R8 ^
sed -i "366c username = neutron" /etc/neutron/neutron.conf
3 E  o2 O7 J% Z" p
sed -i "367c password = 123456" /etc/neutron/neutron.conf

; ?+ e1 C7 z  [1 O" ?/ E; G
sed -i "521c lock_path = /var/lib/neutron/tmp" /etc/neutron/neutron.conf

' s0 U- C0 \2 f; k/ q! U; ~8 c! p
echo "[linux_bridge]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

- [( p" Q) }& ?: N
#eth1为另外第二张网卡

- _* j+ p5 ~6 E4 Z
echo "physical_interface_mappings = provider:eth1" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  D' I# f  B9 S: Y
echo "[vxlan]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
$ k" b! a- A6 K; `) `- m
echo "enable_vxlan = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
0 w9 c2 K9 R/ \" t3 O
#10.0.0.32为第二张网卡的IP

8 G: p" b6 C' J( \. L  f
echo "local_ip = 10.0.0.32" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini

: `0 Q8 {2 u" [; ]0 A9 I6 s* z+ A
echo "l2_population = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
2 ~& D7 s+ g* Y$ W0 w& j: @' T
echo "[securitygroup]" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
5 C/ C% B7 d$ J" u% [
echo "enable_security_group = true" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
% {. M3 G6 [- ?. r
echo "firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver" >> /etc/neutron/plugins/ml2/linuxbridge_agent.ini
& K0 n% V( }# V" M" A- n
#配置计算服务使用网络服务

$ @; j# f* Z3 D" U
sed -i " 3334c auth_url =
http://controller:5000
" /etc/nova/nova.conf

% B8 o" _9 K! [7 t# O: H
sed -i " 3335c auth_type = password" /etc/nova/nova.conf
8 L# u$ G4 x+ I( }$ B- p
sed -i " 3336c project_domain_name = default" /etc/nova/nova.conf
* d6 o+ a' B5 |/ s6 B: l3 l2 G
sed -i " 3337c user_domain_name = default" /etc/nova/nova.conf

# @9 S2 P/ a2 R) J  k& T: u1 p
sed -i " 3338c region_name = RegionOne" /etc/nova/nova.conf

- s+ \: x/ {/ i
sed -i " 3339c project_name = service" /etc/nova/nova.conf

0 b/ L. b$ m' d# }& c
sed -i " 3340c username = neutron" /etc/nova/nova.conf
; R; B& c# N0 E( t
sed -i " 3341c password = 123456" /etc/nova/nova.conf
4 S8 [$ L4 X+ h7 Z( W& w, W# h9 X2 R7 b
systemctl restart openstack-nova-compute.service

$ s: w9 f1 D. M6 P: Y) `
systemctl enable neutron-linuxbridge-agent.service && systemctl start neutron-linuxbridge-agent.service
9 ^8 _" N* J, V/ _" y+ e, N
6 ~$ q$ x! s# F4 }/ n. ^: _
#控制节点 安装Dashboard

( ?" x1 p9 T" p! h+ I3 ]
yum install -y openstack-dashboard
; K" V. b' z- t9 F! [! v
sed -i '118c OPENSTACK_HOST = "controller"' /etc/openstack-dashboard/local_settings

; r) G  c. r9 d8 l5 b: h6 t
sed -i "39c ALLOWED_HOSTS = ['*']" /etc/openstack-dashboard/local_settings

$ p9 r. y. @3 u9 i) q, d
sed -i "104c SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" /etc/openstack-dashboard/local_settings

  u; l0 u7 x! A3 V
sed -i "94c CACHES = {" /etc/openstack-dashboard/local_settings

+ V; g5 R6 s- p; p7 Z* ]" a4 G
sed -i "95c 'default': {" /etc/openstack-dashboard/local_settings
( o7 v/ a5 }3 }4 y) Y2 L- [1 T
sed -i "96c 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'," /etc/openstack-dashboard/local_settings
0 N2 r1 P# u* Q6 O6 ~" U
sed -i "97c 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings
- k0 d) m' t4 D) U0 K
sed -i "98c }" /etc/openstack-dashboard/local_settings
/ J* s1 _: H6 O* E% g
sed -i "99c }" /etc/openstack-dashboard/local_settings
3 F) {8 o4 r( R4 u+ H
sed -i '119c OPENSTACK_KEYSTONE_URL = "
http://%s:5000/v3
" % OPENSTACK_HOST' /etc/openstack-dashboard/local_settings
, A3 g6 \5 m/ k( _5 N0 C) f" E
echo 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True' >> /etc/openstack-dashboard/local_settings

- m7 B4 g5 J# q3 g2 i8 y
echo 'OPENSTACK_API_VERSIONS = {' >> /etc/openstack-dashboard/local_settings
  ]) `- h" Z& D8 [8 X" Q6 c
echo '  "identity": 3,' >> /etc/openstack-dashboard/local_settings

" v+ t- A2 J9 z5 Y
echo '  "image": 2,' >> /etc/openstack-dashboard/local_settings
+ ~$ D3 ?& L+ c. n$ }
echo '  "volume": 3' >> /etc/openstack-dashboard/local_settings
3 `3 ?; Q: b+ {' @) [! H  o
echo '}' >> /etc/openstack-dashboard/local_settings
4 V5 s/ @: k  X* p" ~5 O  K
echo 'OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"' >> /etc/openstack-dashboard/local_settings

- n" X/ w! m6 L$ o! \
echo 'OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"' >> /etc/openstack-dashboard/local_settings

4 Y) A0 E7 `" W- c: c9 g! P
sed -i '123c TIME_ZONE = "Asia/Shanghai"' /etc/openstack-dashboard/local_settings

# f9 i6 T! r: v
echo "WEBROOT = '/dashboard/'" >> /etc/openstack-dashboard/local_settings

: e8 S6 v# W, n/ b7 R. q( N
echo 'WSGIApplicationGroup %{GLOBAL}' >> /etc/httpd/conf.d/openstack-dashboard.conf
! _9 u1 N; y5 S+ g
systemctl restart httpd.service memcached.service
2 A7 X) m. X9 h: Q& L3 ~2 ]
/ `+ o: w0 z- V: ]+ n
#安装完成,可访问
http://10.0.0.11/dashboard/
查看

, n! o% \+ ^; L1 ^3 `8 e
" `8 Y, y& O, L1 b2 _: Y; Z" o
" U- j! \# R; V7 ]

' i9 z; a$ k2 I7 f8 r7 y% }% g# D1 a1 r/ ^- b' F
4 ^- g$ A8 ?) l

9 D; ~1 z" ~9 ]) a0 D1 R" y; f

总结

到此这篇关于Centos8最小化部署安装OpenStack Ussuri的详细教程的文章就介绍到这了,更多相关Centos8最小化部署安装OpenStack Ussuri内容请搜索脚本之家以前的文章或继续浏览下面

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 03:36 , Processed in 0.022421 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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